mplayerとlameで らじるらじる の長時間録音

mplayerとlameを使って,NHKラジオの「らじるらじる」を録音する方法があちこちに書かれている.たとえば,

など.

mplayerの「再生デバイス」としてpcm/wavファイルを指定できるので,
それをlameにリダイレクトというストーリーだ.
だいたいうまくいくのだが,長時間録音をしようとすると,おおむね3時間半くらいで止まってしまう.
オペラとか長い番組があるので,5時間くらいは録音したいことがあるので,ちょっと嫌だ.

ソースを読んでみたところ,どうも次のような事情らしい.

  • mplayerが最初にwaveヘッダに「データの長さは 0x7ffff000 だ」と書き込む.
  • lameはそれを信じて,その長さまで読んだら終了してしまう.これがだいたい3時間半くらい.

(これは双方ともやむを得ない話であって,特に mplayer の側は最初にそういういい加減な値を書いては
いるものの,録音が終了したら正しい値に上書きしようとするので,別に責められない.
今回のようにパイプに通してしまうと seek できないから,上書きには失敗するけれど.)

試みに,0x7ffff000 を小さな値に書き直して make してみると,もっと短い時間で終了してしまうようになったので,これが原因であろう.以下のようにして回避できる.

  • (これは別段行わなくても良いようだが,) mplayer 側で,waveヘッダをつけないようにする.
    これには,”-ao pcm:file=…” のところを “-ao pcm:nowaveheader:file=…” と書き換える.

  • lame 側で,raw pcm ファイルを読む設定にする.
    これには,”-r” オプションを指定すればよい.manpageには,この場合には sampleレート等を指定する必要があると書いてあるが,特にそうしなくても動いているようだ.(今回使ったlameのバージョンは 3.99.5)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*