Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t播放此视频[使用VideoView/MediaPlayer+;ViewPager]_Java_Android_Video_Media Player_Android Mediaplayer - Fatal编程技术网

Java Can';t播放此视频[使用VideoView/MediaPlayer+;ViewPager]

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; }

尝试在ViewPager中播放视频时遇到问题

这个问题似乎很具体,我不知道问题出在哪里

我将我的代码简化为一个非常简单的应用程序,它有一个ViewPager,并在每个页面中播放一个视频(视频在SD卡中,应用程序具有适当的权限)。和一个按钮,移动到下一页和上一页

我的查看页面雷达是:

 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)