我正在为Android开发DASH客户端,并正在Android上测试以mp4格式播放多个视频片段。因此到目前为止我尝试了两种方法:
使用VideoView:
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
videoView.setVideoURI(uri);
videoView.requestFocus();
videoView.setVisibility(View.VISIBLE);
videoView.start();
}
});
使用TextureView:
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();
}
});
mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
try {
mMediaPlayer.setSurface(surface);
mMediaPlayer.reset();
mMediaPlayer.setDataSource(file.getAbsolutePath());
mMediaPlayer.prepareAsync();
} catch (Exception e) {
e.printStackTrace();
}
}
});
当切换到下一个文件时,两者都可以正常工作但有一点延迟。是什么导致的?我做错了什么并且可以改进代码?我读到了使用MediaExtractor和MediaCodec API来更好地播放多个视频,这些视频也因DASH与Android版本4.3和4.4的兼容性而得到改进,但我还没有理解如何使用它们在表面上播放视频和音频。我只能找到如何使用它们来播放视频或音频的来源。
我希望有人可以帮助我无缝连续播放多个视频片段。