日本のストリーミングラジオの録音について調べてみた

Posted by nogajun - 2013/01/11

_

ラジオを録音したいなと思ったので調べたものをまとめてみた。

radiko.jp(民放AM/FM)

直接録音するのは面倒臭い。 聞く局も限られてるから、録音しなくてもいいかな。

らじる★らじる(NHK)

配信が2段構えになってるのはさすが。 RTMPのほうはAACで、MMSはWMAで配信なので、rtmpdump使ってAACのほうを録音すると音質はよさげ。 でも、手軽さならMMSのストリームをダンプするほうが早いので迷うところ。

コミュニティFM(CSRA/JCBA)

  • ストリーミング方式: CSRA:MMS JCBA:RTMP
    • CSRAはMMSだけど、JCBAはRTMPになってるのはなぜ。
  • CSRAサイマルラジオJCBA(日本コミュニティ放送協会)に分かれてるのでややこしい。
    • CSRAとサイマルラジオは同じなんだけど、ストリーミングのドメイン名がcsra.fmとsimulradio.jpに分かれてたり、いったいなんなん?
  • 認証やDRMは、かかってないのでmplayerのdumpstreammsdlでキャプチャできる。
    • JCBAのほうは気づいている人がいないのか、rtspdumpでダンプするには解析しなきゃいけない。
  • ラジオ局の情報や番組表のAPIなどは用意されていない。
    • サイト自体手作りでスクレイピングしようにも例外が多いから、手で直さないと使えない感じ。
    • ていうかストリーミングもURIが統一されてなかったりシステムもバラバラな感じ。

CSRAのキャプチャは問題なくできる。JCBAはrtmpdumpでキャプチャできそうだけど調べないとわからない。 ラジオ局が多いのに統一されたインターフェースもなく、データが整理されてないから全国を網羅しようと思ったら結構大変。

_ timeoutコマンドで時間を限定してコマンドを実行する

ラジオ関連の話です。

mplayerのdumpstreamは、Ctrl+Cで止めない限り延々ダンプし続けます。 なんとか止める方法はないかと調べてたけど、検索で引っかかるのはmplayerをバックグラウンドで実行後、killをsleepで一定時間スリープさせて止めるものばかり。 これはこれでいいのだけど、もう少しスマートにできないかなと思って調べたら、timeoutコマンドを使えば一定時間経過後にコマンドが終了できるので、これを使うのがよさげ。

使い方はこんな感じ。

$ timeout 時間 コマンド

FM GENKIのストリーミングを1分間だけダンプするには、こんな感じで書くと1分後に終了します。 (注: コマンドは1分で終了しますが、mplayerは開始直後、バッファにデータを貯めるので録音自体は50秒前後です。)

$ timeout 1m mplayer -playlist http://csra.fm/asx/fm-genki.asx -dumpstream -dumpfile fmgenki.asf

_ Dropbox-Uploaderを使ってコマンドラインからDropboxにアップロードする

Dropboxにファイルをアップロードするシェルスクリプト。 Dropbox APIを使ってるので最初にAPIキーの設定が必要だけど、指示に従えばすぐに設定できるのでサクッと使えます。

ラジオ録音スクリプトと組み合わせれば、録音して、どこでもラジオが聞けるぜ!