今回はいろいろなアルバムからのmp3ファイルを1つのmp4ファイルにまとめる手順の紹介したいと思います。
まとめる時の問題点
例えば、複数のアルバムの曲(オーディオファイル)から、プレイリストを作りたいという場合に、下記の問題が考えられます。
- サンプリングレートの異なり。
- 音量の異なり。
同じアルバムであれば、オーディオファイルに変換した時のサンプリングレートや音量は同じですが、異なるアルバムであれば、これらが違ってくる可能性があります。1つのMP4ファイルにまとめるには、サンプリングレート、音量は統一させたいですよね。
では、手順を説明していきます。
必要なソフトウェア
必要なソフトウェアは下記になります。
- ffmpeg-normalize
- ffmpeg
音量を平均化するffmpeg-normalizeはffmpegに梱包されている実行ファイルではありません。PYTHONのpipからインストールすることになりますので、PYTHONがインストールされていることが前提となります。詳しくは、下記の記事をご覧ください。
手順
メインは1,2のステップです。
サンプリングレートの統一
オーディオファイルのサンプリングレートの確認は下記のコマンドを用います。
ffprobe input.mp3
上記のコマンドを実行すると、出力の一部は下記のように出てきます。
Duration: 00:06:45.29, start: 0.025057, bitrate: 96 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 96 kb/s
Metadata:
encoder : LAME3.96r
Stream #0:0の行の 44100Hz がサンプリングレートとなります。
複数のmp3をまとめるには、すべてのファイルを同じサンプリングレートにする必要があります。
私の場合、48000Hzと44100Hzのオーディオファイルが混在していたので、44100Hzのオーディオファイルを48000Hzに変換しました。
変換するコマンドは下記になります。input.mp3が44100Hzのファイル、output.mp3が44800Hzに変更するファイルになります。
ffmpeg -i input.mp3 -ar 48000 output.mp3
音量の統一化
音量を統一には、ffmpeg-normalizeを使用します。
音量の統一化をするには、下記のコマンドを実行して下さい。
ffmpeg-normalize IN.mp3 -c:a libmp3lame -o OUT.mp3
IN.mp3は変換するファイル名、OUT.mp3は変換後のファイル名です。オプションなどは必要ありません。
複数のファイルであれば、このコマンドをその回数だけ実行する必要があります。
10ファイルぐらいであれば、1回1回コマンドを手動で実行していけばいいと思いますが、50ファイルぐらいになってくると、数が多いので、PYTHONでプログラム化するか、バッチファイルで複数のコマンドを実行すると楽だと思います。
MP3ファイルの結合
サンプリングレート、音量が統一化された後は、すべてのファイルを一つのファイルに結合します。
結合するには、MS-DOSのコマンド copy /b を使用します。
copy /b input01.mp3+input02.mp3 output.mp3
input01.mp3、input02.mp3は結合するファイル、output.mp3は出力するファイルになります。
3ファイル以上ある時は input01.mp3+input02.mp3+input03.mp3+…. というようにプラスマークで連結させて下さい。
MP3からMP4へ変換
最後にMP3ファイルからMP4ファイルに変換します。
変換は下記のコマンドを使用します。
ffmpeg -loop 1 -i pic.jpg -i input.mp3 -shortest output.mp4
pic.jpgは挿入する画像ファイル、input.mp3は変換するmp3ファイル、output.mp4は出力後のmp4ファイルになります。
MP4は映像ファイルになるので、好きな画像をpic.jpg挿入します。但し、挿入する画像ファイルのサイズ(縦、横の大きさ)は偶数にしないとエラーになるので注意して下さい。
挿入する画像のおすすめは、プレイリストを画像化したものをおススメします。そうすれば、再生した時にどんな曲が入っているかがわかります。
おわりに
mp3からmp4に変換アプリなどもありますが、プログラマーであれば、ffmpegを利用したいですよね。
Windowsのコマンド大好き派の方は、是非、参考にして下さい。
コメント