集成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日志的相关内容
解决步骤
补充播放触发逻辑
你的代码仅完成了音频源设置,没有启动播放动作,需要在setSource后调用play():onPressed: () async { await player.setSource(AssetSource("sound/n1.wav")); await player.play(); },校验音频资源配置
- 确认
n1.wav文件存放在项目根目录的assets/sound/文件夹下 - 在
pubspec.yaml中正确声明资源:flutter: assets: - sound/n1.wav
- 确认
忽略resetDrmState日志(非致命问题)
这条日志是Android系统MediaPlayer的调试信息,并非导致播放失败的直接原因,无需针对该日志单独处理,重点放在播放逻辑和资源配置上。规范播放器生命周期管理
避免使用全局播放器实例,建议在State的生命周期中初始化和释放,减少异常:class _MyAppState extends State<MyApp> { late AudioPlayer player; @override void initState() { super.initState(); player = AudioPlayer(); } @override void dispose() { player.dispose(); super.dispose(); } // 其余build代码保持不变 }添加错误监听定位问题
给播放器添加错误监听,获取具体的播放失败原因:@override void initState() { super.initState(); player = AudioPlayer(); player.onPlayerError.listen((error) { print("播放错误详情: $error"); }); }
内容的提问来源于stack exchange,提问作者Khondamir
相关产品推荐
相关产品推荐

