为什么MediaPlayer.seekTo(t)没有进入确切的指定时刻“t”?

时间:2014-09-04 01:43:23

标签: java android android-mediaplayer

我试图让媒体播放器在本地存储的视频中播放特定范围。它似乎从我告诉它的指定时间开始。

示例:当我寻求1000时,它有效。但是当我寻求1500时,它会转向2000年。

我也试过暂停寻求然后开始寻求完成,它没有任何区别。

这是代码:

mediaPlayer.start();
mediaPlayer.seekTo(time);

这是正常的吗?或者我是否以错误的方式使用媒体播放器?

1 个答案:

答案 0 :(得分:2)

这是编码问题。视频具有关键帧(i-frames),可存储比其他帧更多的信息。只有先前的关键帧才能构建非关键帧。尝试显示非关键帧将显示绿点和像素化抖动屏幕。

现在,在某些Android设备上没有为此实现的解决方法,所以你得到这种奇怪的行为。例如,在Nexus S上,seekTo()并不一定会转到指定的帧。我尝试了其他具有相同Android版本的设备,他们寻求的很好。