我无法在使用 Android 的 seek() 上获得合理的准确性MediaExtractor
。对于某些文件,例如这个文件,我发现有很大的不准确之处(在这种情况下大约为 3 秒。)我有以下流程:
- 打电话
setDataSource()
和selectTrack()
- 称呼
seekTo()
- 称呼
play()
在这种情况下,它会寻找不正确的位置,但会报告正确的位置。如果我然后寻求另一个位置,它会继续以相同的幅度偏离。但是,如果我寻求 0,它会自行更正,然后将寻求文件中的正确位置。
这仅仅是 MediaExtractor 中的限制/错误吗?有没有人有修复/解决方法来获得更高的准确性?我不希望在搜索之前从位置 0 开始播放,但我想这是一种选择。
其他一些注意事项:
- Android MediaPlayer 显示相同的行为。
- 无论我选择
MediaExtractor.SEEK_TO_PREVIOUS_SYNC
还是SEEK_TO_CLOSEST_SYNC
- 我在 KitKat 和 Lollipop、模拟器和物理设备上看到了同样的问题。
- 对一个失败文件的快速分析显示“Xing 标头中指定的 MPEG 数据字节数错误”,但对于播放正常的文件,我得到了相同的结果。