我有一个使用 MediaExtractor
解码 MP3 音频的系统,使用 MediaCodec
转换它并使用 AudioTrack
播放它。在大多数设备上它运行良好,但在 Samsung Galaxy S3 和 Samsung Galaxy Tab 上,一些用户报告音频播放速度极慢。我无法在模拟器或物理设备上重现它。
最佳答案
几经周折,原来问题出在我使用 MediaFormat
上。在某些设备上,MediaCodec
返回的 MediaFormat 与 MediaExtractor
返回的不同。帧速率等可能会发生变化。不是使用 MediaExtractor 返回的 MediaFormat 实例化 AudioTrack
,而是必须等到解码开始。此时,MediaCodec.dequeueOutputBuffer()
将返回 MediaCodec.INFO_OUTPUT_FORMAT_CHANGED
。然后可以使用 MediaCodec.getOutputFormat()
返回用于初始化 AudioTrack 的正确 MediaFormat。希望这对某人有帮助。
关于java - Android AudioTrack 在某些设备上速度极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30702200/