我正在开发一个新的应用程序,并使用VideoView显示mpeg剪辑。
我需要非常快速地在视频之间切换,但是,将新剪辑加载到VideoView似乎需要大约半秒的黑屏。
过渡必须是无缝的,你将如何解决这类问题?
答案 0 :(得分:2)
我有一个类似的问题,并通过静止图像(ImageView)转换解决:
切换两个视频: - 显示图像 - 切换视频 - 隐藏图像
有点hackish但为我工作
答案 1 :(得分:1)
我遇到了同样的问题,但我使用了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();
}
});