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_CHANGED
。 MediaCodec.getOutputFormat()
然后可以使用 return 正确的 MediaFormat 来初始化 AudioTrack。希望这对某人有所帮助。
我有一个系统用 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_CHANGED
。 MediaCodec.getOutputFormat()
然后可以使用 return 正确的 MediaFormat 来初始化 AudioTrack。希望这对某人有所帮助。