CaptureStream Ruby版を使ってCentOS 5.5上でNHK語学講座をダウンロードする
今年度のNHK語学番組が始まったので、気持ちも新たにNHKの語学講座に取り組んでみようという人も多いはず。放送時間帯に帰宅してラジオを聞くことができない人にとって、一昔前まではラジオを録音するか、CDを購入しなければ継続して学習することが難しかった。しかし最近はNHK語学番組のWEBサイトにて過去1週間分のストリーミング放送を聞くことができるようになった。これでも十分進歩したのだが、FLASHで動いているためにiPhoneを利用して聞くことができない点が惜しい。また、過去1週間分よりも前のバックナンバーを聞くことはできない。
そのような問題を解決するためのソフトウェアが、今回紹介するCaptureStreamである。CaptureStreamはNHKの語学講座のうちストリーミング放送されている番組をダウンロードし、mp3としてローカルに保存するソフトウェアである。CaptureStreamを使うことにより、過去の放送を手元に残しておくことができ、iTunesなどと同期することでiPhoneで聞くことができる。
CaptureStreamはWin版/Mac版/Linux版/Ruby版があるが、今回はcronで定期的に取得することが可能であるRuby版を使ったものを紹介する。
目次
- flvstreamerのダウンロード、コンパイル
- CaptureStreamの設定
- 動作確認
- cronの設定
- 終わりに
flvstreamerのダウンロード、コンパイル
CaptureStreamを利用する際に必要となる、ストリーミングを保存するflvstreamerを準備する。既にコンパイルされているものをダウンロードすればよいのだが、今回はCentOS 5.5の64bit環境だったので、ソースからコンパイルして作成する。
今回の作業ログは「/home/foltia/tmp」を作業ディレクトリとしている。ソースファイルをダウンロードし、解凍、コンパイルまでを一気に実施する。
[foltia@foltiasrv tmp]$ wget http://download.savannah.gnu.org/releases/flvstreamer/source/flvstreamer-2.1c1.tar.gz [foltia@foltiasrv tmp]$ tar zvxf flvstreamer-2.1c1.tar.gz flvstreamer/ flvstreamer/thread.h flvstreamer/log.h flvstreamer/rtmp.c flvstreamer/ChangeLog flvstreamer/Makefile flvstreamer/ChangeLog.rtmpdump flvstreamer/streams.c flvstreamer/bytes.h flvstreamer/log.c flvstreamer/rtmpsrv.c flvstreamer/thread.c flvstreamer/rtmpsuck.c flvstreamer/COPYING flvstreamer/parseurl.c flvstreamer/amf.c flvstreamer/amf.h flvstreamer/flvstreamer.c flvstreamer/rtmp.h flvstreamer/README flvstreamer/parseurl.h [foltia@foltiasrv tmp]$ cd flvstreamer [foltia@foltiasrv flvstreamer]$ make posix make[1]: ディレクトリ `/home/foltia/tmp/flvstreamer' に入ります gcc -Wall -DFLVSTREAMER_VERSION=\"v2.1c1\" -O2 -c -o log.o log.c gcc -Wall -DFLVSTREAMER_VERSION=\"v2.1c1\" -O2 -c -o rtmp.o rtmp.c gcc -Wall -DFLVSTREAMER_VERSION=\"v2.1c1\" -O2 -c -o amf.o amf.c gcc -Wall -DFLVSTREAMER_VERSION=\"v2.1c1\" -O2 -c -o flvstreamer.o flvstreamer.c gcc -Wall -DFLVSTREAMER_VERSION=\"v2.1c1\" -O2 -c -o parseurl.o parseurl.c gcc -Wall log.o rtmp.o amf.o flvstreamer.o parseurl.o -o flvstreamer gcc -Wall -DFLVSTREAMER_VERSION=\"v2.1c1\" -O2 -c -o streams.o streams.c gcc -Wall -DFLVSTREAMER_VERSION=\"v2.1c1\" -O2 -c -o thread.o thread.c gcc -Wall log.o rtmp.o amf.o streams.o parseurl.o thread.o -o streams -lpthread gcc -Wall -DFLVSTREAMER_VERSION=\"v2.1c1\" -O2 -c -o rtmpsrv.o rtmpsrv.c gcc -Wall log.o rtmp.o amf.o rtmpsrv.o thread.o -o rtmpsrv -lpthread gcc -Wall -DFLVSTREAMER_VERSION=\"v2.1c1\" -O2 -c -o rtmpsuck.o rtmpsuck.c gcc -Wall log.o rtmp.o amf.o rtmpsuck.o thread.o -o rtmpsuck -lpthread make[1]: ディレクトリ `/home/foltia/tmp/flvstreamer' から出ます [foltia@foltiasrv flvstreamer]$ ./flvstreamer FLVStreamer v2.1c1 (c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL ERROR: You must specify a hostname (--host) or url (-r "rtmp://host[:port]/playpath") containing a hostname
最後にコンパイルされたflvstreamerを実行し、正しくコンパイルされているかを確認している。
CaptureStreamの設定
2011/04/05追記:4/4に新年度に対応した緊急対応版がリリースされています。
次にRuby版CaptureStreamのファイルを設定する。設定するのは、ダウンロードしたい番組名を選ぶ部分だけである。説明によると
このデフォルトの動作を変えたい場合は、この下にある $default_target = ["basic1"] の"basic1"をお好きなものに変えてください。複数指定可能です。入門ビジネス英語と実践ビジネス英語を指定するには 以下のように設定します。 $default_target = ["business1", "business2"]
である。今回は英語5分間トレーニング、入門ビジネス英語、実践ビジネス英語をダウンロードしたいので、
$default_target = ["training","business1", "business2"]
となる。
動作確認
以上で準備は整ったので、後はそれぞれのファイルをディレクトリに格納する。今回は「/home/foltia/ruby」というディレクトリに格納した。
[foltia@foltiasrv ruby]$ ls CaptureStream.rb flvstreamer
Ruby環境がインストールされていることを確認して、実行テスト。
[foltia@foltiasrv ruby]$ ruby -v ruby 1.8.5 (2006-08-25) [x86_64-linux] [foltia@foltiasrv ruby]$ ruby CaptureStream.rb training: ******* business1: *** business2: *** [foltia@foltiasrv ruby]$ ls CaptureStream.rb 英語5分間トレーニング 入門ビジネス英語 flvstreamer 実践ビジネス英語
実行が成功すると、ディレクトリ内に番組名のディレクトリが作成され、その中にmp3ファイルが作成されているはずである。
cronの設定
ここまでうまくいったのであれば、最後に定期的に実行されるようにcronを設定する。NHK語学番組のページが更新されるのは、毎週月曜日の午前10時。よってそれ以降の11時にcronが実行されるように設定する
[foltia@foltiasrv ruby]$ crontab -e 0 11 * * 1 ruby /home/foltia/ruby/CaptureStream.rb >/dev/null 2>&1
以上で設定は完了となる。
終わりに
一度保存したmp3ファイルはiTunesで同期してもいいし、AudioGalaxyでストリーミング再生してもいい。自分の環境にあった方法で聞くことができる。しかも聞き逃すこともない。これで後は本人のやる気次第!
fujitaka