3

我无法在使用 Android 的 seek() 上获得合理的准确性MediaExtractor。对于某些文件,例如这个文件,我发现有很大的不准确之处(在这种情况下大约为 3 秒。)我有以下流程:

  1. 打电话setDataSource()selectTrack()
  2. 称呼seekTo()
  3. 称呼play()

在这种情况下,它会寻找不正确的位置,但会报告正确的位置。如果我然后寻求另一个位置,它会继续以相同的幅度偏离。但是,如果我寻求 0,它会自行更正,然后将寻求文件中的正确位置。

这仅仅是 MediaExtractor 中的限制/错误吗?有没有人有修复/解决方法来获得更高的准确性?我不希望在搜索之前从位置 0 开始播放,但我想这是一种选择。

其他一些注意事项:

  • Android MediaPlayer 显示相同的行为。
  • 无论我选择MediaExtractor.SEEK_TO_PREVIOUS_SYNC还是SEEK_TO_CLOSEST_SYNC
  • 我在 KitKat 和 Lollipop、模拟器和物理设备上看到了同样的问题。
  • 对一个失败文件的快速分析显示“Xing 标头中指定的 MPEG 数据字节数错误”,但对于播放正常的文件,我得到了相同的结果。
4

0 回答 0