Android:使用 MediaExtractor 和 MediaCodec 获取当前位置

Android: Get Current Position Using MediaExtractor & MediaCodec

我正在使用 MediaCode、MediaExtractor 和 AudioTrack 创建我自己的媒体播放器实现。我需要对从本地存储的音频文件中读取的解码 mp3 样本执行失真 - 因此需要自定义实现。为此,我需要实现自己的 seekTogetCurrentPosition 函数。但是,我不确定我将如何实施后者。

我可以设置一个监听器在播放时增加位置,但这听起来很糟糕,而且可能不准确。最好的方法是什么?我希望支持 API 16 级或更高级别。

答案来自使用 MediaExtractor。一旦提取器通过 extractor.readSampleData(...) 方法读取了示例数据,就加载了一个示例。

extractor.getSampleTime() 的后续调用提供了以 微秒 为单位的当前时间。该值除以 1,000 得到毫秒值。我将此变量存储为它的读取,它是后续调用我的自定义播放器的 getCurrentPosition() 方法的来源。