Android VideoView,需要快速切换视频

问题描述 投票:4回答:2

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

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

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

android video android-videoview
2个回答
2
投票

我有一个类似的问题,并解决了静态图像(ImageView)转换:

  • 使用VideoView通过VideoView构建FrameLayout
  • ImageView显示视频的第一帧
  • 最初ImageView是可见的
  • 启动视频,等待任意时间(例如2-300ms)
  • 隐藏ImageView

切换两个视频: - 显示图像 - 切换视频 - 隐藏图像

有点hackish但为我工作


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();
        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.