Ogg Vorbisフォーマットの音源をAAC-LCに変換する話

iPod Touch購入

去年の暮れのこと。

古いiPodRockboxを入れて、Ogg Vorbis(以下、ogg)フォーマットの音楽ファイルで運用していた。

しかし、既に6年位前のiPodだし、そろそろHDDも古く、限界を感じ、iPod Touchに鞍替えした。

oggの資産

だが、iPod Touchoggが再生できない。

約6000超のogg資産を捨てることはもはやできない。仮にまたCDからリッピングし直すとしても気が遠くなる作業だ。

そこで、多少の劣化は目をつぶることにして、oggaac(AAC-LC)に変換することにした。

膨大な変換

6000個以上のファイルを扱うとなるとそれに適したWindows用アプリケーションはまずない。あるかも知れないが探すのも億劫だ。となると必然的にコマンドラインを通じてのファイル変換しかなくなる。

とりあえず試したのが、有名なffmpeg。ただ、これ単体ではoggのタグを引き継ぐことが出来なかったため、perlとMusic::TagというCPANモジュールを利用した。正直、自分がプログラマで良かったと思える瞬間だった。

http://www.ffmpeg.org/
http://strawberryperl.com/
http://search.cpan.org/~ealleniii/Music-Tag-OGG-0.4101/lib/Music/Tag/OGG.pm

とりあえず、oggのタグは強引にperlで変換するのには成功した。ogg資産も残さず全てaacに。第一関門突破だ。

とある問題

何日間か音楽を聴き続けて、ある違和感を感じる。特に重厚なコーラスや、深いリバーブがかかった曲に顕著にみられる、ある傾向があった。文字だと表現が難しいが音がシュワシュワしている。

少し調べるとffmpegのデフォルトのaacエンコーダはFAACと呼ばれるもので、これがまた低品質だということだ。

幸いffmpegオープンソースのプロジェクトなため、自前のライブラリを組み込むことができる。Fraunhoferというドイツの研究機関が開発しているaacライブラリ、libfdk_aacの品質が良いということが分かり、組み込んでコンパイル

ちなみに、以下でダウンロードできるスクリプトを使えば、半自動でコンパイルすることができる。
http://com.nicovideo.jp/community/co1482853

そして、再び変換。

とある問題、再び

今度は音質も問題ない。正直、oggで聴いていたころと区別がつかない。ああ、これで問題ない。良かった良かった、と思っていたのも束の間、別の問題が浮かび上がる。

曲の途中で次のトラックにスキップしてしまうのだ。

明らかにおかしいのでiTunesWinampでその曲を再生してみると、同じく再生に不備が出る。libfdk_aacのバグだかffmpegのバグだか分からないが、再変換してみると再生に不備が出ないこともある。どうやら、ffmpeg上でのlibfdk_aacを用いた大量の音楽ファイル変換は不安定だという結論に達する。

仕方がないので次の方法を模索する。

解決策

qaacというものがあった。

https://sites.google.com/site/qaacpage/home

AppleQuickTimeが使用しているエンコーダを無理やり使ってしまうツールだ。QuickTime由来ということはiTunesが使うものと同じ。いけるだろう、これならば。

幸いにもqaacはパイプを利用して、標準出力から得られるデータをエンコードすることもできる。となれば、oggをwavにデコードして、なおかつ標準出力に吐き出すことのできるものがあればいいわけだ。

あった。oggdecというのものが。

http://www.rarewares.org/ogg-oggdec.php

こうなったら後は簡単だ。

perlで組んだタグを引き継ぐプログラムと組み合わせる。

以下、ソースコード
https://gist.github.com/hisashisatake/4950718

ちなみに、コマンドライン上であれば、このように組み合わせて使う。

C:\> oggdec.exe -o src.ogg | qaac.exe -V 100 --ignorelength - -o dst.m4a

oggdec.exeの部分を、例えばFLACデコーダに変えたりすると、(wavとして標準出力にストリームできるのであれば)どんなフォーマットでもqaac.exeがaacにしてくれるわけだ。

いまここ↓

時間はかかるが、一両日中にはすべてのoggaacに変換できることだろう。

CPUパワーを食うため、PCのファンをコントロールするアプリケーションを使い、冷却もなんとかなっている。

色々なツールがあって本当に助かる。