試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

radiko.jpの試験配信を私的録音するのに適した環境と録音の手順について

2010年3月から試験配信されているradiko.jpのラジオ放送は対象のエリア内からのアクセスに限りFlashプラグインを用いてWebブラウザ上で聴取できる。
放送局の免許による地域限定性が関係しているなどの情報もあるものの、地域をわざわざ判定して限定する意味には大きな疑問が残るが、その件についてはここでは扱わない。
本記事ではGNU/Linux上でのradiko.jpの放送の私的な録音を行う上での便利な録音環境についてを扱う。録音の方法自体は他に何通りか存在するが、個人的な好み(劣化の少ない*1録音と録音開始のさかのぼり)によりこの方法をとることにする。

録音環境

GNU/Linux版のAdobe Flashプラグインでは標準ではALSAサウンドシステムにおける既定のPCMデバイスに音声を渡して音を鳴らす仕様となっているが、JACK Audio Connection KitやPulseAudioといった他のサウンドデーモンに渡すためのプラグインが既定の出力先となっている場合にはこのプラグインを通じてサウンドデーモン経由で録音(ファイルへの書き出し)をすることが容易に行える(動作は安定している)。ただし、ALSAサウンドシステムの既定の出力先デバイスサウンドデーモンへ渡すプラグインに常時設定するのはおすすめしないので、録音を行いたいときに一時的に既定の出力先を変更するのが好ましい。
以前扱ったことのあるJACK Timemachineというアプリケーションは、JACK Audio Connection Kit対応アプリケーションからのオーディオデータを受け取って録音するものだが、録音ボタンを押した10秒前にさかのぼって録音を開始することができるという特徴があるので、radiko.jpの録音を行う環境としては

を組み合わせたものが便利と考えられる。

録音の流れの例

libflashsupportがインストールされている場合は事前にアンインストールしておく。

  1. 音声を出力するアプリケーション(Webブラウザ含む)やサウンドデーモンを全て終了
  2. ${HOME}/.asoundrcで「!default」をalsa-jackプラグインへのplugに変更する記述(内容は後述)を一時的に追加
  3. JACK Audio Connection Kitのデーモンを開始(jackdの直接実行もしくはGUIQjackCtlからの実行のいずれか)
  4. JACK Timemachineを開始・(Wave64ではなく)WAVE形式で保存するために「timemachine -f wav」として起動する
  5. Webブラウザを起動してラジオ受信を開始し、alsa-jackプラグインを経由して音が出ていることを確認
  6. QjackCtlのJACKポート操作かjack_connectによりalsa-jackプラグインの出力ポート(WebブラウザFlashから出ているもの/ポート名は「alsa-jack.pcm.jackP.xxxxx.x」のような形式)とJACK Timemachineの入力ポートを接続し、JACK Timemachineの音量が変化していることを確認
  7. 録音を開始したいときにJACK Timemachineのボタンを押す(色が変わる)
  8. 録音を停止したいときにJACK Timemachineのボタンを再び押す(色が戻る)
  9. JACK Timemachineを終了
  10. Webブラウザを終了
  11. JACK Audio Connection Kitを止める
  12. ${HOME}/.asoundrcの記述を消して元通りにする

以上の流れにより「tm-[西暦年]-[月]-[日]T[時]:[分]:[秒].wav」の形式のWAVEファイルが得られる。ファイル名の書式はオプション指定で変更することもできる。
ALSAのPCM「!default」をalsa-jackプラグインへのplugに変更する記述というのは以下の設定となる。
[一部]ファイル名: ~/.asoundrc

# Flash上の音声をキャプチャするときに一時的に用いる設定
# 常時用いるのはおすすめしない
# pcm.pjackとpcm.jackの定義は別途
# http://d.hatena.ne.jp/kakurasan/20080106/p2 より貼り付ける
pcm.!default pcm.pjack

この記述だけでは動作せず、別途pcm.pjackとpcm.jackの定義を${HOME}/.asoundrcに記述する必要がある。こちらは常時記述しておいてよいが、その内容については「ALSA PCMデバイスとしてJACK Audio Connection Kitを使用」を参照。もちろん、alsa-jackプラグインがシステムにインストールされていないと動作しないので注意。
JACK Timemachineは既定ではWave64形式で出力するが、扱えるツールは限られるので注意。

関連:ストリームの保存について

(2010/4/18)rtmpdumpなどを用いてFlashを用いずに直接ストリームを受け取る方法があるが、仕様が頻繁に変更されている(少し前の情報がもう無効なものとなっている)ようで、正しくパラメータを渡さないと動作しない。この方法は完全に劣化なしで受け取れるが、推奨はできない。2010/4/18の時点ではrtmpdumpで受け取ることは可能のようだが、実際のコマンド行はここには記述しない。

関連記事:

使用したバージョン(いずれもx86_64版):

  • Mozilla Firefox 3.6.2, 3.6.3
  • Flash 10.0.45.2
  • JACK Audio Connection Kit 0.116.2
  • alsa-lib 1.0.21a
  • alsa-plugins 1.0.21
  • JACK Timemachine 0.3.1

*1:FlashによるデコードやJACK内の処理を経由するため、完全な無劣化ではない