Java Can';t播放此视频[使用VideoView/MediaPlayer+;ViewPager]
尝试在ViewPager中播放视频时遇到问题 这个问题似乎很具体,我不知道问题出在哪里 我将我的代码简化为一个非常简单的应用程序,它有一个ViewPager,并在每个页面中播放一个视频(视频在SD卡中,应用程序具有适当的权限)。和一个按钮,移动到下一页和上一页 我的查看页面雷达是:Java Can';t播放此视频[使用VideoView/MediaPlayer+;ViewPager],java,android,video,media-player,android-mediaplayer,Java,Android,Video,Media Player,Android Mediaplayer,尝试在ViewPager中播放视频时遇到问题 这个问题似乎很具体,我不知道问题出在哪里 我将我的代码简化为一个非常简单的应用程序,它有一个ViewPager,并在每个页面中播放一个视频(视频在SD卡中,应用程序具有适当的权限)。和一个按钮,移动到下一页和上一页 我的查看页面雷达是: new PagerAdapter() { @Override public int getCount() { return 7; }
new PagerAdapter() {
@Override
public int getCount() {
return 7;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
View result= LayoutInflater.from(container.getContext()).inflate(R.layout.page,container,false);
container.addView(result);
VideoView videoView= (VideoView) result.findViewById(R.id.videoview);
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
File file=new File("/sdcard/Vids/cat"+(position+1)+".webm");
videoView.setVideoURI(Uri.fromFile(file));
return result;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
View view = (View) object;
container.removeView(view);
}
}
按钮:
view.findViewById(R.id.button_prev).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewPager.setCurrentItem(viewPager.getCurrentItem()-1,true);
}
});
view.findViewById(R.id.button_next).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewPager.setCurrentItem(viewPager.getCurrentItem()+1,true);
}
}
每个页面的布局都很简单:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<VideoView
android:id="@+id/videoview"
android:layout_margin="10dp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
我探索了不同的组合,这些是我的线索:
- 尝试了几种设备(Galaxy 1、HTC One M7、Moto G2、Nexus 9、Nexus 6)。它只出现在Nexus6中
- 任何webm格式的视频都会发生这种情况。将视频转换为可解决mp4问题
- 也尝试了webm格式的不同视频(问题仍然存在)
- 我知道我可以在VideoView中添加一个错误监听器来删除出现错误的对话框,但是UI块对我来说也很重要
- 错误从未出现在第一页中,但随后它似乎是随机的
E/MediaPlayer: error (1, -2147479543)
E/MediaPlayer: error (1, -2147479543)
E/MediaPlayer: error (1, -38)
E/MediaPlayer: error (1, -38)
E/MediaPlayer: error (1, -2147479551)
E/MediaPlayer: error (1, -38)
E/MediaPlayer: error (1, -2147479543)
I/Choreographer: Skipped 182 frames! The application may be doing too much work on its main thread.
E/MediaPlayer: Error (1,-2147479543)
D/VideoView: Error: 1,-2147479543
E/MediaPlayer: Error (1,-2147479543)
D/VideoView: Error: 1,-2147479543
E/MediaPlayer: Error (1,-38)
D/VideoView: Error: 1,-38
E/MediaPlayer: Error (1,-38)
D/VideoView: Error: 1,-38
E/MediaPlayer: Error (1,-2147479551)
D/VideoView: Error: 1,-2147479551
E/MediaPlayer: Error (1,-38)