Flutter实现录音播放

之前写过一一篇iOS的录音播放文档,现在在app改写的时候,需要用到Flutter改写,把遇到的问题记录下来

  1. 用的flutter-sound这个库,实现了录音和播放等功能,录制时可以指定录音的格式;
  2. 直接导入,并按照官方demo写了录音播放功能,使用安卓手机测试发现录音结束后没有生成录音文件,看log发现录音之后文件路径为空;
  3. 以为是权限问题,加了文件读写权限,使用手机录音发现录音文件路径为空???
  4. 再次比较官方demo,发现自己为了方便直接用mp3格式,看官网才知道不支持mp3格式encoder,改为aac格式还不行;
  5. 以为是安卓手机问题,改用苹果手机测试,发现和webview通信的时候接受到的数字2变成了2.0导致解析报错,不用int.parse改用double.parse().toInt方法转为整数;使用苹果手机录音播放后也是一样的问题,获取到的录音文件路径为空;
  6. 和官方demo又比较了一次只是一些细节改动了,实在无法确定是哪里有问题,决定把demo跑起来试试看;demo可以正常录音,录音完成可以获取到完整录音文件路径/private/var/mobile/Containers/Data/Application/B5A71F7A-92BF-4C78-8B6A-DC9A5A857833/tmp/tau_file.mp4,那应该是某些地方写的和demo不一样,比较代码即可定位问题;
  7. 代码也很类似的,加了log发现时第一次录音的时候初始化没有完成,第二次录音的时候才能正常录音,因为用的单例模式,直接再调用录音方法时才初始化的,改为在页面init方法中提前调用,这样开始录音的时候FlutterSoundPlayerFlutterSoundRecorder对象已经初始化过了,可以正常使用;

参考链接:

posted @ 2022-11-26 11:52  yuyuyu37  阅读(1215)  评论(0编辑  收藏  举报