†ぽんこつビデオ工房†

m4aファイルをmp3に変換する

作成開始日 2022.05.26
最終更新日 2022.05.27

想定しているのは、radikoの録音ファイル(m4a)をmp3に変換して、mp3プレイヤーで再生する、という状況。録音段階でmp3化しておけば問題ないのだが、それではファイルサイズが膨らむので……生のradikoのm4aは47kbpsだが、mp3はデフォルトで128kbps;3倍近いサイズになってしまう。ライブラリ構築にはけっこう深刻な差。ライブラリの中から必要なものだけピックアップして、mp3化することを想定している。

ffmpegでフォーマット変換なんて、ごく単純な作業で;

ffmpeg -i mymusic.m4a mymusic.mp3
で良さそうなものだが、実はこれでは少々問題が出る。パラメータが標準的なmp3データと異なってしまうのだ。標準的なmp3フォーマットにするには;
ffmpeg -i mymusic.m4a -ar 44100 -ab 128k mymusic.mp3
のように、サンプリングレートとビットレートを明示的に指定する必要がある。

サンプリングレートは、動画系が48000Hz、音楽系が44100Hzで、それぞれ標準が異なる。radikoのm4aはそもそもmpeg4動画の音声部分なので48000Hzである。現状、48000Hzのままmp3化しても大きな問題は起きていない。ただ、mp3標準の44100Hzに変換しておいた方が何かと安心だろう、程度のハナシ。

一方、ビットレートの問題はやや深刻。ビットレート指定なしでもffmpegは128kbpsで変換してくれるのだが、どうもこれが正常に認識されない場合があるようだ。たとえば、Win7のエクスプローラーでは、数%の表示誤差が出る。100分のm4aファイルをデフォルトでmp3に変換すると、2〜3分ほど長く表示される。と言っても、ファイルが延びたわけではなく、実際に再生すると正常値である100分のまま。エクスプローラーでの表示のみ、誤差が発生する。

あくまでも推測だが、エクスプローラーのこの現象は、mp3ファイルの長さをファイルサイズとビットレートから算出しているからではないかと−−いやいや、逆にファイルサイズと長さからビットレートを算出しているフシもある。ただ、mp3のタグ情報もバージョン依存で表示できない事があるようだし、エクスプローラー側にちょっと何かあるかな、的な感じがする。

また、同じくデフォルトのmp3変換ファイルを古いmp3プレイヤー(KENWOOD CR-A7USB)で再生すると、時間が一挙に倍に表示された。さらに、古いオーディオエディタで開いたら、同じく時間が2倍になっていて、ビットレートが64kbpsと表示された。

つまり、ffmpegがデフォルトの128kbpsで変換するのは良いのだが、その情報がファイルに正常に書き込まれない、あるいは古い機器では正常に認識できない、と言う点に問題がある。こうした事態を防ぐために「-ab」でビットレートを明示的に指定する必要がある。


【ぽんこつビデオ工房目次】 【ホーム】