【问题标题】:Android AudioTrack extremely slow on some devicesAndroid AudioTrack 在某些设备上非常慢
【发布时间】:2015-08-22 12:13:48
【问题描述】:

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

【问题讨论】:

标签: java android android-mediacodec audiotrack


【解决方案1】:

经过一番麻烦,问题出在我使用MediaFormat 上。在某些设备上,MediaCodec 返回的 MediaFormat 与 MediaExtractor 返回的不同。帧速率等可能会发生变化。不是用 MediaExtractor 返回的 MediaFormat 实例化AudioTrack,而是必须等到解码开始。此时,MediaCodec.dequeueOutputBuffer() 将返回 MediaCodec.INFO_OUTPUT_FORMAT_CHANGED。然后可以使用MediaCodec.getOutputFormat() 返回正确的 MediaFormat 来初始化 AudioTrack。希望这对某人有所帮助。

【讨论】:

  • 您能否将“早期”和“晚期”媒体格式的示例粘贴到答案中?我很好奇有什么区别。
  • 我实际上没有受影响的设备,所以我不知道细节。由于声音很慢,它必须是更快的比特率,单声道到立体声,或者每个样本可能有更多比特。然而,一些人报告说,现在播放速度太快了。当我弄清楚这是怎么回事时,我会在这里发帖。
  • @fadden:我见过一些 AAC 解码器至少将单声道输入数据解码为立体声的案例。 (当实际给出 HE-AACv1 数据时,这是许多解码器的常见现象,但在我的情况下,它发生在普通 AAC-LC 或 AAC-LD 中。)
猜你喜欢
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 2017-07-25
  • 1970-01-01
相关资源
最近更新 更多