RealMedia 形式の音声ファイルを Ogg vorbis 形式に変換する

手元に RealMedia (*.rm) フォーマットの楽曲ファイルがあって、それをどうしても amaroK の Collection に加えたい。加えたいのだがファイルを Collection に設定しているディレクトリ下に置いてもリストアップされない。どうやら amaroK は rm ファイルには対応していないようだ*1。rm を mp3 なり ogg なりに変換してやる必要があるらしい。

ちなみにファイルは音声データのみなのだが何故か RealAudio フォーマット (*.ra) ではなく RealMedia フォーマットである。

ちょっとググってみたところ rm に対応しているコンバータは多くはないようで、なんとか PAC という perl で書かれた各種エンコーダへのラッパーに辿りついた。Debian の公式パッケージにはなっていないので http://linuxappfinder.com/debian/pool/main/p/pac/pac_3.0-1_i386.deb からダウンロードしてきてインストール。

man に目を通し早速

% pac --ratoogg hogehoge.rm

とやってみたところ、

Warning: 'hogehoge.rm' is not an 'ra' file.

などとおっしゃって変換してくれない。あれ? 説明をよく見てみると「rm で *出力* できますよ」と書いてある。入力はできないわけね。

そこで駄目元で hogehoge.ra にファイル名を変更してみたところ、mplayer で元通りに再生できる。ラッキー。再び先程のコマンドを叩いて見事に変換できた。…… と思って聞いていたら曲の最後に激しいノイズが。スピーカー壊れるかと思ったよ。

作業ログを見返してみると ra -> wav 変換の段階で

A: 544.2 (09:04.2) of 542.0 (09:02.0)

と記されていた。元が 9m02s のデータなのに 2.2sec 増えた wav になっている。おそらく rm を単にリネームしただけなので ra フォーマットとしては無駄なデータが 2.2sec 分のノイズになっているのだろう。

三度挑戦。

% pac --ratowav hogehoge.ra

で一旦 wav に変換。wavsplit という wav の分割スクリプトを探してきて(これは deb になってた)

% wavsplit hogehoge.wav 9:02

と本来の曲の長さで分割してやる。すると hogehoge/ ディレクトリの下に 01.wav, 02.wav というファイルができるので更に以下のコマンド

% pac --wavtoogg hogehoge/01.wav

で hogehoge/01.ogg ができあがる。少々手間が掛ったが無事に rm を ogg に変換することができた。


pac を使ってみて思ったのだが、元々入れていた mplayer だけで rm -> wav 変換はできたのかもしれない。なんかいろいろオプション付けないといけないだろうけど。pac はそれを上記のような簡単な i/f でラップしてくれるのでなかなか便利なツールだ。

*1:なにかプラグインを入れれば可能なのかもしれず