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

集成audioplayers后无法播放音频,报resetDrmState错误该如何解决?

Flutter audioplayers 集成问题:resetDrmState 日志报错且音频无法播放

我在Flutter应用中集成audioplayers包时,出现以下错误日志:

resetDrmState: mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false

已经尝试过相关StackOverflow方案但未解决,我的代码如下:

class MyApp extends Stateful Widget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

final player = AudioPlayer();

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text("data"),
        ),
        body: Center(
          child: TextButton(
            onPressed: () {
              player.setSource(AssetSource("sound/n1.wav"));
            },
            child: Text("data"),
          ),
        ),
      ),
    );
  }
}

尝试过的参考方向:

  • Flutter点击音频按钮无声音的相关解决方案
  • Android Studio中MediaPlayer释放并置空时出现resetDrmState日志的相关内容

解决步骤

  1. 补充播放触发逻辑
    你的代码仅完成了音频源设置,没有启动播放动作,需要在setSource后调用play():

    onPressed: () async {
      await player.setSource(AssetSource("sound/n1.wav"));
      await player.play();
    },
    
  2. 校验音频资源配置

    • 确认n1.wav文件存放在项目根目录的assets/sound/文件夹下
    • 在pubspec.yaml中正确声明资源:
      flutter:
        assets:
          - sound/n1.wav
      
  3. 忽略resetDrmState日志(非致命问题)
    这条日志是Android系统MediaPlayer的调试信息,并非导致播放失败的直接原因,无需针对该日志单独处理,重点放在播放逻辑和资源配置上。

  4. 规范播放器生命周期管理
    避免使用全局播放器实例,建议在State的生命周期中初始化和释放,减少异常:

    class _MyAppState extends State<MyApp> {
      late AudioPlayer player;
    
      @override
      void initState() {
        super.initState();
        player = AudioPlayer();
      }
    
      @override
      void dispose() {
        player.dispose();
        super.dispose();
      }
    
      // 其余build代码保持不变
    }
    
  5. 添加错误监听定位问题
    给播放器添加错误监听,获取具体的播放失败原因:

    @override
    void initState() {
      super.initState();
      player = AudioPlayer();
      player.onPlayerError.listen((error) {
        print("播放错误详情: $error");
      });
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:42:51