You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter just_audio安卓端无法播放多种音频格式问题求助

解决Flutter just_audio安卓端无法播放AC3、AIF等音频格式的问题

问题描述

使用Flutter的just_audio插件播放AC3、AIF、MPEG、AU、AIFF、AIFC、CAF、SD2格式音频时,iOS端可正常播放,但安卓端抛出错误:

Caused by: com.google.android.exoplayer2.source.UnrecognizedInputFormatException: None of the available extractors (PsExtractor, FlvExtractor, FlacExtractor, WavExtractor, FragmentedMp4Extractor, Mp4Extractor, AmrExtractor, OggExtractor, TsExtractor, MatroskaExtractor, AdtsExtractor, Ac3Extractor, Ac4Extractor, Mp3Extractor, AviExtractor, JpegExtractor) could read the stream.

原因分析

just_audio在安卓端基于ExoPlayer实现,ExoPlayer默认支持的音频提取器有限,部分小众格式(如AIF/AIFF、CAF、SD2、AU等)不在默认支持列表中;而iOS系统原生音频框架对这些格式有更好的兼容性,因此无播放问题。

解决方案

1. 引入ExoPlayer扩展库

在安卓项目的Module级别build.gradle中添加对应扩展依赖,扩展ExoPlayer的格式支持:

dependencies {
    // 支持AIF/AIFF等格式
    implementation "com.google.android.exoplayer:extension-flac:${exoplayer_version}"
    // 支持CAF格式
    implementation "com.google.android.exoplayer:extension-caf:${exoplayer_version}"
    // 按需添加其他格式扩展
    implementation "com.google.android.exoplayer:extension-mp3:${exoplayer_version}"
}

注意:${exoplayer_version}需替换为just_audio依赖的ExoPlayer版本,可查看just_audio的官方文档或安卓项目依赖树确认具体版本。

2. 强制指定音频格式

对于ExoPlayer已支持但自动检测失败的格式(如AC3),初始化音频源时手动指定格式:

final player = AudioPlayer();
await player.setAudioSource(
  ProgressiveAudioSource(
    Uri.parse("your_audio_file_url"),
    contentType: AudioContentType.ac3, // 强制指定AC3格式
  ),
);

3. 服务端格式转换兜底

若上述方法仍无法解决兼容性问题,建议在服务端将小众格式批量转换为安卓广泛支持的格式(如MP3、AAC),从根源上避免播放异常。

内容的提问来源于stack exchange,提问作者Gurpreet Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:25:45