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 媒体播放器 - 如何在视频之间切换? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章