Android VideoView,需要快速切换视频

问题描述:

我正在开发一个新的应用程序,并使用VideoView来显示mpeg剪辑。Android VideoView,需要快速切换视频

我需要非常快速地在视频之间切换,但是,将一个新剪辑加载到VideoView似乎需要大约半秒钟的黑屏。

过渡必须是无缝的,你将如何去解决这类问题?

+0

大概没有办法做到这一点,除非你写你自己的视频解码器 – zapl 2012-03-12 16:24:57

+0

是有可能有隐藏在一个游戏背后VideoView和隐藏活跃的一个,一旦它做什么? – 2012-03-12 17:01:19

+0

试试吧。我不知道,但它可能会这样工作。 – zapl 2012-03-12 17:02:11

我也有类似的问题,与静止图像(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(); 
     } 
    });