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