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

标签 java android android-mediacodec audiotrack

我有一个使用 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/

相关文章:

java - 在 Java 中,类实例调用不同类实例中的方法时遇到困难

android - 远程更新安卓应用

java - 如何在基础适配器类中使用 if else 条件

android - CameraX - 在录制视频时在 onPause() 上崩溃应用程序

java - 如何防止 GUI 在 Java 中重叠

java - JAVA中int数组的非顺序迭代性能低下

java - Mac OSX Mavericks (10.9.1) 上 Xerial 的 JDBC SQLite 出现 SQLITE_NOTADB 错误

android - RxJava 的请求队列

Android更改视频文件的分辨率

android - 如何播放 MediaCodec 编码器生成的原始 h264?