2013-01-25
らじる★らじるも録音したい
2010年当時、radikoではNHKのラジオ番組は視聴できなかった...。当時はなぜ参加してくれないんだと嘆いていたのだが、その後、2011年にはらじる★らじるが始まっていた。radikoで録音していれば、きっとそのうち らじる★らじるでも録音したくなるはず。そうだ、rec_radiko.shと同じ基準で利用できるrec_radiru.shを作ってみよう!
二つの方式
らじる★らじるを録音するには二つの方法が公開されていた。(感謝です!)
どちらの方式を利用させて頂くか迷ったが、すでにrec_radiko.shでrtmpdumpを使っているので、rtmpdumpを利用する方法でやってみた。
rtmpdumpバージョン2.4が必要
- radikoと違って、らじる★らじるへのアクセスは至って簡単。
- 選局は、playpathの部分を変更するだけ。
"NetRadio_R1_flash@63346" # らじる★らじる ラジオ第1ストリーム "NetRadio_R2_flash@63342" # らじる★らじる ラジオ第2ストリーム "NetRadio_FM_flash@63343" # らじる★らじる NHK-FMストリーム
- 認証不要でいきなり以下のrtmpdumpコマンドで保存される。
$ rtmpdump --rtmp "rtmpe://netradio-fm-flash.nhk.jp" \
--playpath 'NetRadio_FM_flash@63343' \
--app "live" \
-W http://www3.nhk.or.jp/netradio/files/swf/rtmpe.swf \
--live \
-stop 30 \
-o NHK-FM.m4a
- ...はずなのだが、エラーでファイルに保存できない...。
- どうやら、らじる★らじるをダウンロードするにはrtmpdump2.4が必要らしい。
- 自分の環境のrtmpdumpは、homebrewでインストールした2.3なのであった。
- そこで、rtmpdump2.4をダウンロードしてみた。(バイナリ版)
- Downloads | trick77.com
- インストーラーに従って、インストールしてみた。
- これで、らじる★らじるのR1、R2、FMも録音できるようになった!
ファイル形式
- 当初、出力ファイルの拡張子は.m4aにしていたのだが、どうも自分の環境ではその拡張子ではVLCでしか視聴できない...。
- いろいろ試してみると、拡張子を.flvに変更すると、QuickTimeXでも視聴できた。(Perianインストール済みの環境)
- QuickTimeXで表示されるフォーマットは、MPEG-4 HE AAC 48000 Hz、ステレオ(L R)となっている。
- 適当に.flvとしてよいのか迷ったが、自分の環境では.flvで都合良く視聴できるので、rtmpdumpの出力オプションも.flvを使うことにした。
iTunesのHE-AAC v2サポート
- ところで、.flvのままではiTunesでは視聴できない...。
- でも、.flvというコンテナ(入れ物)から中にあるオーディオファイルを無劣化でそのまま取り出すことはできる。
$ ffmpeg -i NHK-FM.flv -acodec copy NHK-FM.m4a
- そして、この取り出したNHK-FM.m4aをダブルクリックしてみると、iTunesが起動し、ライブラリに取り込まれ、あっさり再生されてしまった!
- 確か、2010年の時点では、iTunesがサポートしているプロファイルやHE-AACのバージョンの違いによって、そのままでは再生できなかったはず。
- そうか、そうか、これはらじる★らじるだから、radikoとは違ってiTunesで再生可能な形式を使ってくれているのかもしれない。
- そう思って、今度はradikoのflvから同じようにffmpegでオーディオファイルを取り出してみた。
$ ffmpeg -i J-WAVE_20130120-1700.flv -acodec copy J-WAVE_20130120-1700.m4a
- 同じようにダブルクリックしてみると、やはりiTunesが起動し、ライブラリに取り込まれ、あっさり再生されてしまった!
素晴らしい!最新のiTunesは、radikoのHE-AAC v2に対応していたのだ!
- iPad 2 - 技術仕様
- 上記はiPad2の技術仕様だが、オーディオ再生「対応するオーディオフォーマット:HE-AAC(V1およびV2)」とある。
- iPad2が対応していれば、きっとそれを管理するiTunesも対応しているはずだと予測した。
m4a変換処理の追加
- というわけで、過去の苦労はあっさり過去のものとなり、最新の環境ではm4aに変換すれば当然のように聴ける、という幸せが訪れた。
- これは同時に変換処理も絡めたくなる。
- 変換といっても、flvというコンテナ(入れ物)の中からオーディオファイルをそのまま取り出すだけなので、無劣化かつ一瞬である。
$ rtmpdump --rtmp "rtmpe://netradio-fm-flash.nhk.jp" \ --playpath 'NetRadio_FM_flash@63343' \ --app "live" \ -W http://www3.nhk.or.jp/netradio/files/swf/rtmpe.swf \ --live \ -stop 30 \ -o NHK-FM.flv $ ffmpeg -i NHK-FM.flv -acodec copy NHK-FM.m4a $ rm -f NHK-FM.flv
- m4aに変換してしまったら、元のflvは削除してしまう。(無劣化で取り出したオーディオファイルのはずだから)
rec_radiru.shにまとめる
- らじる★らじるを録音するのは苦労最小限に簡単だけど、これをrec_radiko.shと同じ基準で使えるようにしておくことが大事。
- メインの処理はたった3コマンドなのだけど、rec_radiko.shと同じ操作性を追加するために、rec_radiru.shは以下のようになった。
#!/bin/sh # Original: http://qiita.com/items/549b42c8b361807d96a2 # Original: https://gist.github.com/1185755 saiten / radiru.txt # Install: rtmpdump2.4 http://trick77.com/downloads/ # 使い方 show_usage() { echo "Usage: $COMMAND [-o output_path] [-t recording_seconds] NHK-R1 | NHK-R2 | NHK-FM" echo ' -o Default output_path = $HOME/Downloads/${station_name}_`date +%Y%m%d-%H%M`.flv' 1>&2 echo ' a/b/c/ = $HOME/Downloads/a/b/c/NHK-FM_20130123-1700.flv' 1>&2 echo ' a/b/c = $HOME/Downloads/a/b/c.flv' 1>&2 echo ' /a/b/c/ = /a/b/c/NHK-FM_20130123-1700.flv' 1>&2 echo ' /a/b/c = /a/b/c.flv' 1>&2 echo ' ./a/b/c/ = ./a/b/c/NHK-FM_20130123-1700.flv' 1>&2 echo ' ./a/b/c = ./a/b/c.flv' 1>&2 echo ' -t Default recording_seconds = 30' 1>&2 echo ' 60 = 1 minute, 3600 = 1 hour, 0 = go on recording until stopped(control-C)' 1>&2 } # 引数解析 COMMAND=`basename $0` while getopts ho:t: OPTION do case $OPTION in o ) OPTION_o="TRUE" ; VALUE_o="$OPTARG" ;; t ) OPTION_t="TRUE" ; VALUE_t="$OPTARG" ;; * ) show_usage ; exit 1 ;; esac done shift $(($OPTIND - 1)) #残りの非オプションな引数のみが、$@に設定される if [ $# = 0 ]; then show_usage ; exit 1 fi # オプション処理 if [ "$OPTION_o" = "TRUE" ]; then if echo $VALUE_o|grep -q -v -e '^./\|^/'; then mkdir -p $HOME/Downloads ; cd $HOME/Downloads fi fname_ext="${VALUE_o##*/}" fname="${fname_ext%.*}" fext="${fname_ext#$fname}" wdir="${VALUE_o%/*}"; [ "$fname_ext" = "$wdir" ] && wdir="" fi if [ "$OPTION_t" = "TRUE" ]; then rectime=$VALUE_t fi mkdir -p ${wdir:=$HOME/Downloads} ; cd $wdir ; wdir=`pwd` output="${wdir}/${fname:=$1_`date +%Y%m%d-%H%M`}${fext:=.flv}" PLAYPATH[NHK-R1]="NetRadio_R1_flash@63346" # らじる★らじる ラジオ第1ストリーム PLAYPATH[NHK-R2]="NetRadio_R2_flash@63342" # らじる★らじる ラジオ第2ストリーム PLAYPATH[NHK-FM]="NetRadio_FM_flash@63343" # らじる★らじる NHK-FMストリーム echo "==== recording ====" echo "save as '$output'" /usr/local/bin/rtmpdump \ --rtmp "rtmpe://netradio-${1##*-}-flash.nhk.jp" \ --playpath "${PLAYPATH[$1]}" \ --app "live" \ -W http://www3.nhk.or.jp/netradio/files/swf/rtmpe.swf \ --live \ --stop "${rectime:=30}" \ -o "${output}" ffmpeg -v quiet -y -i "${output}" -acodec copy "${output%.*}.m4a" rm -f "${output}"
これでrec_radiko.shとrec_radiru.shはほぼ同じ操作性になった!
$ ./rec_radiru.sh -h Usage: rec_radiru5.sh [-o output_path] [-t recording_seconds] NHK-R1 | NHK-R2 | NHK-FM -o Default output_path = $HOME/Downloads/${station_name}_`date +%Y%m%d-%H%M`.flv a/b/c/ = $HOME/Downloads/a/b/c/NHK-FM_20130123-1700.flv a/b/c = $HOME/Downloads/a/b/c.flv /a/b/c/ = /a/b/c/NHK-FM_20130123-1700.flv /a/b/c = /a/b/c.flv ./a/b/c/ = ./a/b/c/NHK-FM_20130123-1700.flv ./a/b/c = ./a/b/c.flv -t Default recording_seconds = 30 60 = 1 minute, 3600 = 1 hour, 0 = go on recording until stopped(control-C) $ ./rec_radiru.sh -o radiru/ -t 10 NHK-FM ==== recording ==== save as '/Users/zari/Downloads/radiru/NHK-FM_20130125-0517.flv' RTMPDump 2.4 (c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL WARNING: No application or playpath in URL! Connecting ... WARNING: HandShake: Type mismatch: client sent 6, server answered 9 INFO: Connected... Starting Live Stream For duration: 10.000 sec INFO: Metadata: INFO: audiodatarate 48.00 INFO: audiocodecid mp4a 63.113 kB / 9.98 sec Download complete
トラックバック - http://d.hatena.ne.jp/zariganitosh/20130125/radiru_radiru_recording
リンク元
- 1573 https://www.google.co.jp/
- 673 http://www.google.co.jp/url?sa=t&rct=j&q=らじる rtmpdump 変更&source=web&cd=4&ved=0CD8QFjAD&url=http://d.hatena.ne.jp/zariganitosh/20130125/radiru_radiru_recording&ei=AFACUeKTCMmgkQWz94GoBg&usg=AFQj
- 547 http://search.yahoo.co.jp/search?p=らじるらじる 録音 無料&rs=1&aq=-1&ei=UTF-8&fr=top_ga1_sa
- 479 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CDIQFjAA&url=http://d.hatena.ne.jp/zariganitosh/20091009/1255092560&ei=sBkCUYr9BcWgmQWqroGgBA&usg=AFQjCNHlRTGfgFHPsWMyex-68BFczf8opw&sig2=OMok-kx-Jo5a4UbI2ZBjXQ&bvm=bv.41524
- 302 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CEEQFjAB&url=http://d.hatena.ne.jp/zariganitosh/20081204/1228426193&ei=QRkCUZG1NoL_rAfw14HoBw&usg=AFQjCNFu0gdiJ28Vro2yRPg1pA_FY4qmAA&sig2=8ogehJtz1_0-U1IjnA4lyQ&bvm=bv.41524
- 277 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=5&sqi=2&ved=0CEwQFjAE&url=http://d.hatena.ne.jp/zariganitosh/20080713/1216014813&ei=ixkCUeGUMcW9kAXtv4GwCw&usg=AFQjCNEjSL4ZK_7FBoNBpG486NxeTUCwRw&sig2=HA_-957aNucaQfXgSr6yBA
- 271 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0CEAQFjAC&url=http://d.hatena.ne.jp/zariganitosh/20090126/1232953251&ei=_xkCUbfKH8rClQXMjIDIDw&usg=AFQjCNGjpuBZshG3SAE8a4bCwod6n-PMAw&sig2=4YZf5SXswvim3yuT0YLFAQ&bvm=bv.41524
- 210 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CEQQFjAD&url=http://d.hatena.ne.jp/zariganitosh/20121025/icloud_email_tagging&ei=lSECUfm4NpDImQX-t4HwCg&usg=AFQjCNF2uahgMtHeCjCOdLoayfHLolWjyg&sig2=safPGuy1iYv0VP1xXZbhTQ&bv
- 126 https://www.google.com/
- 113 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0CEUQFjAE&url=http://d.hatena.ne.jp/zariganitosh/20121108/multi_touch_gesture_master&ei=CCUCUfPbHMjRmAXlnoHwCQ&usg=AFQjCNFV8z-82JN1VkBxn8AShxoOIRuz-w&sig2=Oen6TqfYKWAt9Vbw8rF