我的问题类似于this one,但没有正确答案,所以我想我试一试。
在我的应用程序中,我有两个视频播放器(TextureView
+ MediaPlayer
- 基于VideoView
)在一个屏幕上并排显示URL。我让它工作得很对。因为我需要它们同时播放我同步他们的控制器,当我开始其中一个时,第二个开始(与暂停,寻求,缓冲等相同)。
videoView1.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
mp.setVolume(0.0f, 0.0f);
firstVideoPrepared = true;
tryStart();
}
});
videoView2.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
secondVideoPrepared = true;
tryStart();
}
});
private void tryStart() {
// here is also buffered data level check
if (firstVideoPrepared && secondVideoPrepared) {
videoView1.start();
videoView2.start();
}
}
问题在于,尽管暂停了两个视频的缓冲,但当我start()
时,它们有时会失去同步。让我们说两个播放器都有相同的视频 - 我需要它们几乎理想地同步,因为我可以看到任何不同。 有没有办法让他们如此精确地同步?
我已经阅读了ExoPlayer,FFMPEGMediaPlayer或MediaPalyer-Extended这样的图书馆,但它们似乎都没有我想要的内容。
甚至可以保持视频的准确性同步吗?