Android VideoView,需要在视频之间快速切换

Android VideoView,需要在视频之间快速切换,android,video,android-videoview,Android,Video,Android Videoview,我正在开发一个新的应用程序,并使用VideoView显示mpeg片段 我需要在视频之间快速切换,然而,将新剪辑加载到视频视图似乎需要大约半秒的黑屏时间 过渡必须是无缝的,您将如何着手解决此类问题?我遇到了类似的问题,并通过静态图像(ImageView)过渡解决: 在VideoView上使用ImageView构建框架布局 ImageView显示视频的第一帧 最初,ImageView是可见的 启动视频,等待任意时间(例如2-300毫秒) 隐藏图像视图 切换两个视频: -显示图像 -切换视频 -隐

我正在开发一个新的应用程序,并使用VideoView显示mpeg片段

我需要在视频之间快速切换,然而,将新剪辑加载到视频视图似乎需要大约半秒的黑屏时间


过渡必须是无缝的,您将如何着手解决此类问题?

我遇到了类似的问题,并通过静态图像(ImageView)过渡解决:

  • 在VideoView上使用ImageView构建框架布局
  • ImageView显示视频的第一帧
  • 最初,ImageView是可见的
  • 启动视频,等待任意时间(例如2-300毫秒)
  • 隐藏图像视图
切换两个视频: -显示图像 -切换视频 -隐藏图像


有点老练,但对我有用

我面临同样的问题,但我使用了
mediaplayer
,我的代码是:

在这里,我使用一个按钮来触发切换操作,在切换之前,我已经加载了视频并准备切换。当您需要这样做时,您只需要停止并释放旧的
mediaplayer
,然后启动新的。无缝切换的关键点是
sleep()
,当进程处于睡眠状态时,实际上视频仍在继续,但给系统一些时间为下一个进程做准备

    switch_button = (Button) findViewById(R.id.button_switch);
    switch_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Button switch_button = (Button) v;
            VideoPlayer2 = new MediaPlayer();

            try {
                VideoPlayer2.setDataSource("rtsp://" + hostIP + ":1935/vod/Timer.mp4");
                VideoPlayer2.prepare();
                VideoPlayer2.setAudioStreamType(AudioManager.STREAM_MUSIC);
            } catch (IOException e) {
                e.printStackTrace();
            }

            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            VideoPlayer.release();
            VideoPlayer2.setDisplay(vidHolder);
            VideoPlayer2.start();
        }
    });

除非你自己编写视频解码器,否则可能没有办法做到这一点。有可能在播放的视频后面隐藏一个视频视图,并在完成后隐藏活动的视频视图?试试看。我不知道,但它可能是这样工作的。你能发布代码,告诉我你是如何切换到下一个视频的吗?