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

Posted

技术标签:

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

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

我的问题是

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

【问题讨论】:

如果您可以发布单独的问题而不是将您的问题合并为一个问题,则最好。这样一来,它可以帮助回答您的问题的人以及其他寻找您的至少一个问题的人。 【参考方案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());
        
    );

【讨论】:

我应该把这些代码放在哪里? 你想换视频的时候用这个。

以上是关于Android 媒体播放器 - 如何在视频之间切换? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Android - 录制视频时在前后摄像头之间切换

在视频流之间切换

python-vlc 在启动之间切换播放媒体

Android主流视频播放及缓存实现原理调研

为视频播放器启动新活动时,如何强制android视频播放器在视频播放后不退出

在 Android 中播放 RTSP 流视频时如何保持宽高比?