カーナビ三部作その1:Ubuntu 10.04 LTSでCDをリッピングしてMP3にしようとしてつまづく

「カーナビ三部作」となっているが、カーナビ絡みだがカーナビとは斜め45度ぐらいの方向にて苦労した話だ。

カーナビにSDメモリカードのリーダが付いていた。SDメモリ内のMP3ないしWMAファイルを再生できるらしい。そこで手持ちのCDをリッピングしてMP3に変換してSDメモリに書き込み、カーナビで使おうと考えた訳だ。

リッピング作業はUbuntuを入れてあるサブPC上で行うことにした。他のPCでは作業環境の構築に手間取りそうだったからだ。

しかしこの選択が微妙に足を引っ張るとは、この時点では予想すらしていなかった……。

RhythmboxでCDからMP3に変換……できない?

Ubuntu 10.04 LTS上でCDをリッピングしてMP3化する方法は色々とある。もうそれこそ「Ubuntu MP3 リッピング」でググれば色々と情報がでてくる。

個人的には新たにツールを入れるのはあまり好ましくない。標準でインストールされるRhythmboxでCDから直接MP3化できるというので、その方法で進めることにした。

RhythmboxはiTunesのように「CDの楽曲を取り込む -> エンコーディングしたファイルが生成される」という風に動作する。取り込む時にMP3にエンコーディングするように設定しておけばよい訳だ。

ということでWeb上の情報を元に「メニューバー -> 編集 -> 設定 -> ミュージック -> フォーマット」で「CD Quality, MP3」を選択しようとしたのだが……そんな項目なんぞ欠片も無いのだ。

直ぐ横の「編集」ボタンをクリックすると表示されるダイアログ*1にはしっかりと「CD Quality, MP3」という項目が存在するのだが……。

参考にしたサイトは幾つかあって、それぞれ「lameとgstreamer0.10-lameを入れろ」とか「gstreamer0.10-plugins-ugly-multiverseを入れろ」とか書いてあったのだが、どれも既にインストール済み。まだ何か足りないのだろうか?

色々調べて分かったのは、ubuntu-restricted-extras も必要だということ。このパッケージを追加したら「CD Quality, MP3」を選択できるようになった。

GStreamer pipelineで悩む

何とかRhythmbox上でCDからダイレクトにMP3化できるようになった。しかしここで安心してはいけない。

MP3といえばサンプリング周波数やビットレートで悩むのが常だからだ。

雑誌を片手に見様見真似でMP3を弄っていたのは、もう7〜8年近く前になる。当然、脳裏に薄っすらと残っている知識もそれぐらい前か、それ以前のものになる。

今のMP3のエンコーディング事情は、当時とは結構変化しているようだ。少し調べてみただけでも、VBRやABR、ジョイントステレオといったキーワードが出てくる。ビットレートも以前より大きめな値*2が挙げられることが多いようだ。

ということで、microSDHCも4GBないし8GBを買う予定で容量に余裕があるはずなので、今回は「VBRで最高音質、ジョイントスレテオ」に挑戦してみることにした。

まあ実際の所それほど良い耳はもってないし音にそれ程こだわる性格ではないし*3、何より車内で再生するのだから音質にこだわる必要はない。でも設定は「おいら頑張っただよ」と間違った方向でも構わないのでこだわりたいのだ。単なる自己満足に過ぎないのは承知で。

問題はここからだった。

デフォルトのMP3エンコーディングの設定では、Gstreamerのパイプラインはこうなっている。

audio/x-raw-int,rate=44100,channels=2 ! lame name=enc mode=0 vbr-quality=6 ! id3v2mux

これはどんな意味なのか? 全く分からないのだ。

ググってみたところ、どうも、

  1. CDから44.1kHz、2chリッピングする。
  2. LAMEを使ってCBR、128kbps、ステレオのMP3にエンコーディングする。

という意味らしい。まあ(1)については何となく分かる。

元データがCDなので44.1kHz、2chなのは良い*4。その後ろのLAMEへのオプションを調整すれば、目的は達成できそうだ。

しかし肝心のオプションに何があってどんな意味なのか、全く分からない。LAMEコマンドラインオプションとも違うし……。

色々調べて、ようやく次のコマンドでオプションの内容を表示できることが分かった。

gst-inspect-0.10 lame

オプション一覧とにらめっこしつつ、最終的にこんな風に書き換えた。

audio/x-raw-int,rate=44100,channels=2 ! lame name=enc mode=1 vbr=4 vbr-quality=0 ! id3v2mux

それぞれのオプションの意味は次の通り。

オプション 内容
mode=1 ジョイントステレオ
vbr=4 エンコーダLAMEの新しいVBRアルゴリズムを使用する
vbr-quality=0 VBRで最高音質

これでようやく目標としていたフォーマットでMP3を生成できるようになったので、CDのリッピングにいそしみはじめたのだった。

おまけ

(少なくともUbuntu 10.04 LTSでは)RhythmboxってVBRなMP3の総演奏時間を正しく表示できないのか。再生時間のカウントは大丈夫なのだけど。

MP3のフォーマットを知らないので憶測になるけど、音声データの先頭部分のビットレートとチャンクの大きさから演奏時間を計算しているのだろうか? それなら、CBRならほぼ正しい演奏時間になるけど、VBRではダメだよなあ。

*1:gnome-audio-profiles-propertiesで起動するものと同じはず。

*2:192kとか224kとか。その昔は96kとか128kあたりが基準だった気がする。

*3:但しイヤホンやヘッドホンぐらいは多少はこだわる。

*4:CD-DAでは音楽のデータを44.1kHz、2ch、16bitで記録しているので。