Android:使用 MediaExtractor 和 MediaCodec 获取当前位置
Android: Get Current Position Using MediaExtractor & MediaCodec
我正在使用 MediaCode、MediaExtractor 和 AudioTrack 创建我自己的媒体播放器实现。我需要对从本地存储的音频文件中读取的解码 mp3 样本执行失真 - 因此需要自定义实现。为此,我需要实现自己的 seekTo
和 getCurrentPosition
函数。但是,我不确定我将如何实施后者。
我可以设置一个监听器在播放时增加位置,但这听起来很糟糕,而且可能不准确。最好的方法是什么?我希望支持 API 16 级或更高级别。
答案来自使用 MediaExtractor。一旦提取器通过 extractor.readSampleData(...)
方法读取了示例数据,就加载了一个示例。
对 extractor.getSampleTime()
的后续调用提供了以 微秒 为单位的当前时间。该值除以 1,000 得到毫秒值。我将此变量存储为它的读取,它是后续调用我的自定义播放器的 getCurrentPosition()
方法的来源。
我正在使用 MediaCode、MediaExtractor 和 AudioTrack 创建我自己的媒体播放器实现。我需要对从本地存储的音频文件中读取的解码 mp3 样本执行失真 - 因此需要自定义实现。为此,我需要实现自己的 seekTo
和 getCurrentPosition
函数。但是,我不确定我将如何实施后者。
我可以设置一个监听器在播放时增加位置,但这听起来很糟糕,而且可能不准确。最好的方法是什么?我希望支持 API 16 级或更高级别。
答案来自使用 MediaExtractor。一旦提取器通过 extractor.readSampleData(...)
方法读取了示例数据,就加载了一个示例。
对 extractor.getSampleTime()
的后续调用提供了以 微秒 为单位的当前时间。该值除以 1,000 得到毫秒值。我将此变量存储为它的读取,它是后续调用我的自定义播放器的 getCurrentPosition()
方法的来源。