Android AudioTrack 在某些设备上速度极慢

Android AudioTrack extremely slow on some devices

我有一个系统用 MediaExtractor 解码 MP3 音频,用 MediaCodec 转换并用 AudioTrack 播放。在大多数设备上它运行良好,但在 Samsung Galaxy S3 和 Samsung Galaxy Tab 上,一些用户报告音频播放速度极慢。我无法在模拟器或物理设备上重现它。

好不容易才发现是我使用MediaFormat的问题。在某些设备上,MediaCodec 编辑的 MediaFormat 与 MediaExtractor 编辑的 return 不同。帧速率等可能会发生变化。不是用 MediaExtractor 编辑的 MediaFormat return 实例化 AudioTrack,而是必须等到解码开始。到那时,MediaCodec.dequeueOutputBuffer() 将 return MediaCodec.INFO_OUTPUT_FORMAT_CHANGEDMediaCodec.getOutputFormat() 然后可以使用 return 正确的 MediaFormat 来初始化 AudioTrack。希望这对某人有所帮助。