Flutter Audio Recorder Plugin 将 M4A 录制为 WAV 文件

问题描述

在尝试使用 FFMPEG 提取一段音频时,我发现我认为是由 Flutter Audio Recorder 录制的 .M4A 文件实际上被录制为 WAV 文件。这是 FFMPEG 报告的内容

  Guessed Channel Layout for Input Stream #0.0 : mono
  Input #0,wav,from 'myaudio.m4a':
  Duration: 00:00:04.02,bitrate: 705 kb/s
  Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001),44100 Hz,mono,s16,705 kb/s 

我猜这是因为我已将 Flutter Audio recorder 中的采样率从认的 16K 提高到 44K,以实现更高的质量。

  _recorder = FlutterAudioRecorder(customPath,audioFormat: AudioFormat.AAC,sampleRate: 44100);

那么 44K 提升是否意味着我失去了 AAC 压缩及其更小的文件大小的优势?

以下是 Flutter Audio Recorder 录制的 M4A 文件示例;

https://speaktestbucket.s3.us-east-2.amazonaws.com/63-talk-87.m4a

这是我正在使用的实际 Flutter Audio Recorder 插件

https://github.com/meghead/flutter_audio_recorder2

哪个是分叉的;

https://github.com/hanyska/flutter_audio_recorder2

它本身是原始 Flutter Audio Recorder 的一个分支;

https://github.com/rmbrone/flutter_audio_recorder

解决方法

看起来像是 rmbones 的 Flutter_Audio_Recorder 的一个分支,它记录了正确编码的 M4A 文件。

https://github.com/hnvn/flutter_audio_recorder

某些依赖项已过时,因此我最终使用更新的 pubspec.yaml 对 hnvn 的 fork 进行了分叉;

https://github.com/meghead/flutter_audio_recorder

生成的短文件大小达到了令人印象深刻的 8.2k。

https://speaktestbucket.s3.us-east-2.amazonaws.com/290-628.m4a