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

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

例如:当我寻求1000时,它有效.但是当我寻求1500时,它会转向2000.

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

这是代码:

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

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

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

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

点赞