Ogg を MP3 に連続で変換する (ffmpeg)

最初に断っておくと、もちろん awk で Ogg ファイル形式を MP3 ファイル形式に変換することはできません。 ここでは ffmpeg のフロントエンドとして使います。

ffmpeg は多くの動画や音楽のフォーマットを変換できる便利なツールですが、オプションが多く覚えきれない人も多いのではないでしょうか? また、一括で全部置換したいような人もいると思いますし、Fedora などの一部のディストリビューションでは MP3 に変換できないため、Grip などのツールで Ogg に変換してみたものの、iPod などに入れることができずに困っている方も多いのではないでしょうか? (Grip を自分でインストールすれば MP3 へ変換できると思います)

ここでは awk をフロントエンドにして system() 関数で ffmpeg を呼び出し、128K のビットレートで MP3 に変換するというものを作ってみました。

#! /usr/bin/gawk -f
# ogg2mp3.awk

BEGIN {
    for (i = 1; i < ARGC; i++) {
        ogg_file = ARGV[i];
        mp3_file = ogg_file;
        sub(/\.ogg/, ".mp3", mp3_file);
        ogg2mp3_cmd = "ffmpeg -ab 128k -i '" ogg_file "' '" mp3_file "'";
        system(ogg2mp3_cmd);
    }
}

使い方は、

$ gawk -f ogg2mp3.awk *.ogg

とするだけで、これで逐次 MP3 に変換してくれます。

と書くと、「そんなもの shell で十分ではないか」と言われるかもしれませんが、Linux などでは sh コマンドは bash へのリンクとなっており、bash と gawk のバイナリはほぼ同じ大きさですから、起動の速度はほぼ同じであり、shell を使った場合 sh, csh, bash, zsh, ksh などの違いを吸収させることを考えると awk を shell の代わりで使うことは悪いことではありません。(もっとも、やりすぎは嫌われます)

慣れた言語でいかにサクサク書けるかということも重要なことです。

tag_nawk.pngtag_nawk.pngtag_nawk.pngtag_nawk.png