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

使用Assets audio player播放MP3文件报错:无法播放指定音频

解决Assets Audio Player播放MP3失败的问题

以下是排查和解决该问题的具体步骤:

  • 核对文件路径与实际资源
    报错提示无法播放end_call_sound.mp3,但你的代码中调用的是ringtone_default.mp3,先确认是否存在文件名混淆:要么修正代码中的文件名,要么确保目标音频文件确实存在于assets目录下。同时检查路径层级,比如文件若在assets/sounds/xxx.mp3,代码中路径要写全。

  • 确认pubspec.yaml资源声明正确
    必须在pubspec.yaml的flutter节点下声明要使用的音频资源,否则Flutter无法识别:

    flutter:
      assets:
        - assets/ringtone_default.mp3
        - assets/end_call_sound.mp3
    

    注意缩进用空格(不要用制表符),声明完成后执行flutter pub get刷新资源。

  • 检查音频文件有效性
    用本地播放器测试目标MP3文件是否能正常播放,排除文件损坏的可能。若文件编码特殊(比如非标准MP3编码),可以转换为通用格式(比特率128kbps、采样率44100Hz)后再尝试。

  • 修正代码语法错误
    你提供的代码中,await assetsAudioPlayer.open()语句末尾缺少分号,这会导致语法错误,修正后的代码如下:

    static void ringingSound() async {
        try {
          await assetsAudioPlayer.open(
            Audio('assets/ringtone_default.mp3'),
          ); // 补充分号
        } on PlatformException catch (error) {
          print('Error: ${error.message}');
        }
      }
    

    同时确保已正确初始化AssetsAudioPlayer实例,比如在使用前创建:final assetsAudioPlayer = AssetsAudioPlayer();

  • 配置平台权限

    • Android:在AndroidManifest.xml中添加必要权限(根据需求选择):
      <uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- 后台播放需添加 -->
      
    • iOS:若需要后台播放,在Info.plist中添加配置:
      <key>UIBackgroundModes</key>
      <array>
        <string>audio</string>
      </array>
      

内容的提问来源于stack exchange,提问作者Am Koem Heang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:22:09