我有一个用MediaExtractor
解码MP3音频的系统,用MediaCodec
转换它并用AudioTrack
播放。在大多数设备上它工作正常,但在三星Galaxy S3和三星Galaxy Tab上,一些用户报告音频回放非常慢。我无法在仿真器或物理设备上重现它。
答案 0 :(得分:2)
经过多次麻烦,事实证明问题出在我使用MediaFormat
上。在某些设备上,MediaCodec
返回的MediaFormat与MediaExtractor
返回的MediaFormat不同。帧速率等可能会发生变化。不要使用MediaExtractor返回的MediaFormat实例化AudioTrack
,而是必须等到解码开始。此时,MediaCodec.dequeueOutputBuffer()
将返回MediaCodec.INFO_OUTPUT_FORMAT_CHANGED
。然后可以使用MediaCodec.getOutputFormat()
返回正确的MediaFormat来初始化AudioTrack。希望这有助于某人。