Android媒体播放器 - 如何在视频之间切换?

时间:2011-11-28 10:52:14

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

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

我的问题是

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

2 个答案:

答案 0 :(得分:1)

  

如何实现视频A的标记,以便从之前暂停的时间恢复?

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

所以我建议你选择Vitamio的VideoView

答案 1 :(得分:1)

您可以通过保留两个MediaPlayers并在它们之间切换来切换视频。 你准备第二个寻找它,当时机成熟时你将它们切换出来。 下面的代码是相同的,除了我在用户交互上使用它。 (您可以忽略AssetFileDesciptor,因为它是我打开视频的方式)。

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());
        }
    });