【问题标题】:Android media player - How to switch between videos? [closed]Android 媒体播放器 - 如何在视频之间切换? [关闭]
【发布时间】:2011-11-28 10:52:13
【问题描述】:

我正在开发一个要在其中显示视频的应用程序。这里我的要求是,我应该能够播放视频一段时间(比如视频 A 2 分钟)然后我将切换到视频 B 再播放 15 秒,然后我将再次切换回视频 A。但是每当我切换回视频A,它应该从之前停止的地方开始。

我的问题是

  1. 如何实现视频之间的切换?
  2. 如何实现视频A从之前暂停时间恢复的打标签?

【问题讨论】:

  • 如果您可以发布单独的问题而不是将您的问题合并为一个问题,则最好。这样一来,它可以帮助回答您的问题的人以及其他寻找您的至少一个问题的人。

标签: android android-mediaplayer media-player android-videoview


【解决方案1】:

如何实现视频A从之前暂停的时间恢复的打标签?

您可以通过seekTo() 跳转到特定位置。但这里的问题是您应该等待seekTo() 完成。而且Android没有为VideoView提供这样的回调。

所以我建议你选择 Vitamio 的 VideoView

【讨论】:

  • 嗨雷诺,感谢您的回复。我还有一个问题。
  • 由于我正在开发自定义媒体播放器,所以我想控制android基本媒体播放器。我猜 Vitamio 没有那种灵活性?所以决定自定义默认的android播放器。我的问题是,我们可以在播放时在流之间切换吗?例如:目前我的媒体播放器正在播放流 A 中的视频,然后过了一段时间我想要相同的媒体播放器实例(我不想创建新的媒体播放器实例)来播放流 B 中的视频。这可能吗?如果可能的话,我怎样才能做到这一点?
【解决方案2】:

您可以通过保留两个 MediaPlayer 并在它们之间切换来切换视频。 你准备第二个寻找它,当合适的时候你把它们关掉。 下面的代码是相同的,除了我在用户交互中使用它。 (您可以忽略 AssetFileDescriptor,因为它是我打开视频的方式)。

videoPlayer2 = new MediaPlayer();
AssetFileDescriptor descriptor = ExpansionFiles.SharedSingleton().getZipAssetFileDescriptorForFile("video" + camera + ".mp4", context);
if ( descriptor != null ) {
    try {
        videoPlayer2.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
        videoPlayer2.prepare();
    } catch (IOException e) {
        e.printStackTrace();
    }
    videoPlayer2.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            videoPlayer2.start();
            videoPlayer2.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
                @Override
                public void onSeekComplete(MediaPlayer mp) {
                    videoPlayer.setDisplay(null);
                    videoPlayer2.setDisplay(surfaceHolder);
                    videoPlayer2.setOnVideoSizeChangedListener(new MediaPlayer.OnVideoSizeChangedListener() {
                        @Override
                        public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
                            if ( videoPlayer2 != null && videoPlayer != null ) {
                                videoPlayer = videoPlayer2;
                                videoPlayer2 = null;
                            }
                        }
                    });



                }
            });
            videoPlayer2.seekTo(videoPlayer.getCurrentPosition());
        }
    });

【讨论】:

  • 我应该把这些代码放在哪里?
  • 你想换视频的时候用这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
相关资源
最近更新 更多