Android VideoView,需要快速切换视频
问题描述:
我正在开发一个新的应用程序,并使用VideoView来显示mpeg剪辑。Android VideoView,需要快速切换视频
我需要非常快速地在视频之间切换,但是,将一个新剪辑加载到VideoView似乎需要大约半秒钟的黑屏。
过渡必须是无缝的,你将如何去解决这类问题?
答
我也有类似的问题,与静止图像(ImageView的)过渡解决:
- 与之建立了VideoView
- 的ImageView的一个ImageView的一个FrameLayout里显示视频的第一帧
- 最初的ImageView可见
- 启动视频,等待任意时间(例如2-300ms)
- 隐藏的ImageView
切换两个视频: - 显示图像 - 切换视频 - 隐藏图像
一个有点hackish,但为我工作
答
我面临同样的问题,但我用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();
}
});
大概没有办法做到这一点,除非你写你自己的视频解码器 – zapl 2012-03-12 16:24:57
是有可能有隐藏在一个游戏背后VideoView和隐藏活跃的一个,一旦它做什么? – 2012-03-12 17:01:19
试试吧。我不知道,但它可能会这样工作。 – zapl 2012-03-12 17:02:11