Android VideoView,需要在视频之间快速切换
我正在开发一个新的应用程序,并使用VideoView显示mpeg片段 我需要在视频之间快速切换,然而,将新剪辑加载到视频视图似乎需要大约半秒的黑屏时间Android VideoView,需要在视频之间快速切换,android,video,android-videoview,Android,Video,Android Videoview,我正在开发一个新的应用程序,并使用VideoView显示mpeg片段 我需要在视频之间快速切换,然而,将新剪辑加载到视频视图似乎需要大约半秒的黑屏时间 过渡必须是无缝的,您将如何着手解决此类问题?我遇到了类似的问题,并通过静态图像(ImageView)过渡解决: 在VideoView上使用ImageView构建框架布局 ImageView显示视频的第一帧 最初,ImageView是可见的 启动视频,等待任意时间(例如2-300毫秒) 隐藏图像视图 切换两个视频: -显示图像 -切换视频 -隐
过渡必须是无缝的,您将如何着手解决此类问题?我遇到了类似的问题,并通过静态图像(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();
}
});
除非你自己编写视频解码器,否则可能没有办法做到这一点。有可能在播放的视频后面隐藏一个视频视图,并在完成后隐藏活动的视频视图?试试看。我不知道,但它可能是这样工作的。你能发布代码,告诉我你是如何切换到下一个视频的吗?