Flutter音声録音の現状と今後の方針:FFmpegKit終了し、mp3変換できずm4aへのシフト
概要
Flutterで音声録音や変換を扱っている方には大きなニュースがありました。長らく使われてきた音声変換ライブラリ「ffmpeg_kit_flutter_audio
」のサポートが終了したのです。
まとめ
-
ffmpeg_kit_flutter_audio
のメンテナンス終了により、mp3変換の選択肢が限られる - MP3は法的にも慎重な取り扱いが必要
- 今後は m4a形式 + recordで録音、audioplayersで再生 という構成にシフト
FFmpegKitの終了
FFmpegKitの作者であるTaner Sen氏は、公式Medium記事にてffmpegkit_flutter_audio
のメンテナンス終了を発表しました。詳しくはこちらの投稿をご覧ください:
これにより、Flutterで手軽に音声形式の変換(例:m4a→mp3など)を行うことができなくなり、特にmp3形式への変換を行っていたアプリ開発者には影響が出ています。
MP3変換の注意点
実は、MP3形式は扱いに注意が必要な形式です。音楽ソフトなどで録音・圧縮した音声を、著作権者の許可なくMP3形式で変換しインターネットにアップロードする行為は違法となる可能性があります。
そのため、音声を取り扱うアプリでは、技術的な対応と同時に法的リスクにも十分配慮する必要があります。
今後はm4a形式へ
これらの理由から、筆者は今後の音声録音・保存形式としてm4a(AAC)を採用することにしました。
m4aはiOSなどApple系のデバイスとの相性が良く、録音したままアップロードしても音質・容量のバランスが取れており、変換不要で利用可能です。Android端末でも基本的には問題なく動作します。
使用ライブラリ:record
録音には、Flutterで人気のライブラリ record
を使用しています。
このライブラリは、以下のような特徴があります:
- iOS / Android / macOS / Windows に対応
- フォーマット指定(m4a, wav など)
- 録音の一時停止/再開
- 録音中の音量の取得
設定次第で直接m4a形式での録音も可能です。
final recorder = Record();
await recorder.start(
path: 'audio.m4a',
encoder: AudioEncoder.aacHe,
bitRate: 128000,
samplingRate: 44100,
);
再生:audioplayers
録音した音声の再生には、シンプルかつ柔軟なライブラリ audioplayers
を利用しています。
例えば、録音したファイルを再生するには次のように記述します:
final player = AudioPlayer();
await player.play(DeviceFileSource('audio.m4a'));
こちらもマルチプラットフォーム対応で、再生・一時停止・シークなどの基本機能を簡単に実装できます。
Discussion