カテゴリー別アーカイブ: radiko

3月中旬以降録音できなくなったradikoにリベンジ

以前、このブログでさくらのVPSをつかって、rtmpdumpでradikoを録音するという記事を書きましたが
震災以降ぐらいから録音が失敗するようになりました。

認証方式が変わったのかなと思ってしばらく放置していましたが、調べてみるとやはりそのようでした。

この記事が大変参考になり、おかげで録音が再開できるようになりました。
というか、もうこれ見るだけで大丈夫かと思います。
(しかし、元のコードを書いたのはなかの人なんでしょうか?)

http://memorandum.yamasnet.com/archives/Post-890.html

個人的にハマったのは、コンパイルとビルドでしたがすみません。
備忘録メモっておくのを忘れました。。2時間ぐらい気合いでやったら直ったので多分大丈夫かと思います。

ちなみの僕の環境は上記のサイトの方と同じく、CentOS5.6です。

radikoをCentOSで録音して、Dropboxを使ってiPhoneにも同期。

さて、前回のブログで書いた「さくらのVPSを使って、rtmpdumpでradikoを録音する」の続きです。

さくらのVPS上で録音できたはいいものの、flvでdumpしてきていたのでiPhoneで聴けないしファイルサイズも大きいし、というところが個人的にはとてもネックでした。

flvをmp3に変換するのはいいとして、どのように同期させるか悩んでいたところにDropboxではどうだろうと思いました。

もし、さくらのVPSにDropboxをインストール出来るのなら、あらゆる問題が一気に解決しそうです。
ということで、やってみました。

DropboxのCLI版のインストールにはPython 2.5以上が必要なので、まずはそちらをインストール。

[shell]

$ wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz
$ tar xvzf Python-2.7.1.tgz
$ cd Python-2.7.1
$ ./configure –prefix=/usr/local/Python-2.7.1
$ make
$ su make install

[/shell]

Dropboxのダウンロードを行います。
さくらのVPS標準OSはCentOS 5.5 x86_64なので、間違えないように。

[shell]

$ cd
$ wget -O dropbox.tar.gz “http://www.dropbox.com/download/?plat=lnx.x86_64”
$ tar -tzf dropbox.tar.gz
$ tar -xvzf dropbox.tar.gz
$ wget http://dl.getdropbox.com/u/6995/dbmakefakelib.py
$ wget http://dl.getdropbox.com/u/6995/dbreadconfig.py
$ wget http://www.getdropbox.com/download?dl=packages/dropbox.py

[/shell]

これで起動します。

[shell]

$ ~/.dropbox-dist/dropboxd &

This client is not linked to any account…

Please visit https://www.dropbox.com/cli_link?host_id=7d44a557aa58f285f2da0x67334d02c1 to link this machine.
[/shell]

すると、初回起動時は上記のようにこちらにアクセス!のようなリンクが表示されるので、ブラウザからアクセスしてください。
ログインすることでユーザを判断するようです。

[shell]

$ /usr/local/Python-2.7.1/bin/python ~/dropbox.py status
Downloading 1 file (754.9 KB/sec, 14 min left)

[/shell]

上記のコマンドで、ステータスを確認すると、同期中であることが分かります。

試しに~/Dropboxの中にファイルを作ってみました。

[shell]

vi ~/Dropbox/Public/test.txt

[/shell]

保存とほぼ同じタイミングで、Windowsクライアントでの同期が確認されました。

参考:
http://www.hyk-home.com/blog/infra/archives/2009/05/05-202601-137.html
http://wiki.dropbox.com/TipsAndTricks/TextBasedLinuxInstall

次は、録音終了と共にFLVをmp3に変換します。こうしないとiPhoneで聴くことができません。

まずはテスト。

[shell]

$ ffmpeg -y -i TBS_BAKUSHO_20101201T010001.flv -acodec libmp3lame TBS_BAKUSHO_20101201T010001.mp3

[/shell]

このままだと何故かファイルサイズが1.4倍くらいになってしまった。
2時間番組を録音するとFLV形式でも40MB以上になるので、mp3にしたらせめて2/3にはなってほしい。

ビットレートやサンプリング周波数を変更してみる。

[shell]

$ ffmpeg -y -i TBS_BAKUSHO_20101201T010001.flv -ab 16 -acodec libmp3lame TBS_BAKUSHO_20101201T010001.mp3

[/shell]

できたファイルは変わらず55MB。出来上がったmp3ファイルを調べてみるとビットレートに変化がない。
オプションが効いていない。。

もっと小さいファイルで実験しよう。下記のようにオプションの指定方法を変更。

[shell]

$  ffmpeg -y -i TBS_radiko_20101211T155501.flv -ab 32000 -ar 24000 -acodec libmp3lame TBS_radiko_20101211T155501.mp3

[/shell]

こうすると見事にファイルサイズは小さくなりました。
試しにこのタイミングでDropboxにファイルをつっこみ、iPhoneで再生を確認できました。

先ほどの爆笑問題の2時間番組をこの方法でmp3にしてみる。どのくらいのファイルサイズになるだろうか。

[shell]

$ ffmpeg -y -i TBS_BAKUSHO_20101201T010001.flv -ab 32000 -ar 24000 -acodec libmp3lame TBS_BAKUSHO_20101201T010001.mp3

[/shell]

結果は28MBほどに。音質の劣化もそこまで酷くないので、ひとまずはこれでいきますか。

これを、cronが実行するファイルにも書き加え、元ファイルのflvを削除するように変更。

1分間の動作テストを行う。

[shell]

$ ~/bin/radiko TBS 1 radiko >>$HOME/radio/radiko.log 2>&1 &

[/shell]

mp3の空のファイルが作成されるだけで、うまくいかない。。
試行錯誤のすえ、標準出力をログファイルに吐き出すと何故かmp3の部分で止まってしまっていた。
ので、標準出力はすべて破棄するように変更。

[shell]

$ ~/bin/radiko TBS 1 radiko > /dev/null 2>&1

[/shell]

併せてcrontabも変更。

[shell]

$ crontab -e

[/shell]

[shell]

# JUNK 伊集院光 深夜の馬鹿力 (TBS RADIO Mon. 1:00-3:00)
0 1 * * Tue   $HOME/bin/radiko TBS 120 IJYUIN > /dev/null  2>&1
# JUNK 爆笑問題カーボーイ (TBS RADIO Tue. 1:00-3:00)
0 1 * * Wed   $HOME/bin/radiko TBS 120 BAKUSHO > /dev/null 2>&1
# JUNK 山里亮太の不毛な議論 (TBS RADIO Wed. 1:00-3:00)
0 1 * * Thu   $HOME/bin/radiko TBS 120 YAMASATO > /dev/null 2>&1
# JUNK おぎやはぎのメガネびいき (TBS RADIO Thu. 1:00-3:00)
0 1 * * Fri   $HOME/bin/radiko TBS 120 OGIYAHAGI > /dev/null 2>&1
# JUNK バナナマンのバナナムーンGOLD (TBS RADIO Fri. 1:00-3:00)
0 1 * * Sat   $HOME/bin/radiko TBS 120 BANANAMAN > /dev/null 2>&1
# recording test
53 16 * * Sat   $HOME/bin/radiko TBS 1 radiko > /dev/null 2>&1

[/shell]

実際に1分間の録音の動作確認ができた。ファイルサイズも小さくなったのでめでたし。
次は、Dropboxにもコピーする。できればシンボリックリンクがいい。そこで、テスト。

[shell]

$ ln -s TBS_radiko_20101211T164412.mp3 ~/Dropbox/Public/link.mp3

[/shell]

シンボリックリンクを作成してみるも、Dropboxには認識されない。
そこで、ハードリンクに切り替えてみる。

[shell]

$ ln TBS_radiko_20101211T164412.mp3 ~/Dropbox/Public/link.mp3

[/shell]

こちらだと問題なさそうなので、録音終了後にDropboxにハードリンクを追加する作業をするようにする。

これで、録音が完了するとmp3へ変換→元ファイル削除→Dropboxのフォルダへハードリンク追加まで完了。
これによりiPhone同期、Windows同期まで完成。

■WEB上でmp3を再生できるようにする

これを利用。超簡単にシンプルなmp3プレーヤーがくっつけられる。

http://1bit.markwheeler.net/

ファイルが増えても更新が不要なので、非常に便利。

■mysqlで録音したものを管理するためにテーブルを作成

[sql]

CREATE TABLE radio_list (
uid int(5) auto_increment PRIMARY KEY,
pid int(5) DEFAULT ‘0’ NOT NULL,
filename varchar(100),
time int(5),
recorded_on DATETIME
);

CREATE TABLE radio_program (
pid int(5) auto_increment PRIMARY KEY,
program varchar(100)
);

insert into radio_program (program) values(‘伊集院光の深夜の馬鹿力’);
insert into radio_program (program) values(‘爆笑問題カーボーイ’);
insert into radio_program (program) values(‘山里亮太の不毛な議論’);
insert into radio_program (program) values(‘おぎやはぎのメガネびいき’);
insert into radio_program (program) values(‘バナナマンのバナナムーンGOLD’);
insert into radio_program (program) values(‘テスト用録音’);

[/sql]

こんな感じです。
他にもお気に入りの番組があれば、そちらも登録していきますが、今のところはJUNKだけで十分です。

あとは、ひたすらラジオのコンテンツが降ってくるのを待つだけ!やったね!
本心としては公開したいですが著作権が絡むため、そんなことはやっちゃいけません。
完全に個人利用です。

なので、URLは載せられませんがサイトのイメージとしてはこんな感じですよ。

今後は、大阪のラジオを聴くためにどうにかしたいのと、エラーを極力なくしていくことですね。
radiko側の問題もありますが、万が一エラーになった場合に、自動でリトライする仕組みを作っていきたいと思います。

ラジオ業界が、radiko.jpによってさらに盛り上がっていくことを願っています。
「○○しながら」視聴できるメディアの強みを活かして、面白いことをどんどんやってください!
前のエントリーでも書きましたが、radikoには是非ともオープン化の道へ進んでいって欲しいと思います。

TBSラジオのJUNKの大ファンとして、まずは一度生で聴いてみることをおすすめします!

TBS RADIO JUNK

それでは!

※これは第1回8maki開発合宿中に作ったもののレポートでもあります。

@8maki
@twitbn
@hyshhryk
@pggm
@twginriki
@pandeiro245
@shinout
@chicken800

みなさん、お疲れさまでした。
そして、諸々取り仕切ってくれた@8makiくん、本当にありがとうございました!

さくらのVPSを使って、rtmpdumpでradikoを録音する

インターネットでAM/FMラジオが聴けるradikoが長い実験期間を経て、法人化することになりました。

■「ラジオ復活を」 好調radikoが会社化、名古屋などエリア拡大
http://www.itmedia.co.jp/news/articles/1011/25/news077.html

これまで関東の番組は東京都、神奈川県、千葉県、埼玉県で、関西の番組は大阪府、京都府、兵庫県、奈良県で聴取できたが、12月1日からエリアを拡大。関東の番組は茨城県、群馬県、栃木県でも、関西の番組は滋賀県、和歌山県でも聴けるようになる。

ラジオファンとしてはとても嬉しいです。

かくいう僕もインターネットで聴けるようになってから、ヘビーリスナーになりました。

特にTBSラジオのJUNKは毎週録音して聴くのはもちろん、ポッドキャストも欠かさず聴いています。

この機会にさくらのVPSサーバ(CentOS)を使って、radikoを録音できるか試してみました。
サーバは関東エリアにあるのか不安でしたが、幸いにも東京エリアの聴取範囲だったみたいです。
大阪エリアのさくらのVPSのユーザさんもいるようでしたので、調べてみてください。
幸いにも、rtmpdumpを使用してradikoを録音するということは既にたくさんチャレンジしている方がいたので、とても助かりました。

まず、rtmpdumpをダウンロード。

[shell]

$ mkdir ~/tmp
$ cd ~/tmp
$ wget http://rtmpdump.mplayerhq.hu/download/rtmpdump-2.3.tgz
$ tar -xzf rtmpdump-2.3.tgz

[/shell]

解凍したディレクトリに移動し、makeします。

[shell]
$ cd rtmpdump-2.3
$ make SYS=posix
[/shell]

最新バージョンでは、SYS=posixとしないとダメっぽいです。
しかし、エラー。
調べてみるとopenssl-develが必要らしい。
なので、

[shell]
$ sudo yum install openssl-devel
[/shell]

もう一度makeします。

[shell]
$ make SYS=posix
[/shell]

これでできたっぽいので、実行ファイルを/usr/local/binへインストール。

[shell]
$ sudo cp -p rtmpdump rtmpgw rtmpsrv rtmpsuck /usr/local/bin
[/shell]

以下のコマンドを実行して、ヘルプメッセージが出れば成功。

[shell]
$ rtmpdump -h
[/shell]

以下のコマンドでテスト録音。
この場合は、TBSラジオを30秒間録音(出力ファイルはoutput.flv)します。
radiko側の仕様変更が頻繁にあるようで、うまくいかなくなってしまうようです。

[shell]
$ rtmpdump –rtmp rtmpe://radiko.smartstream.ne.jp/ –port 1935 –app TBS/_defInst_ –playpath simul-stream –swfUrl http://radiko-dl.ssdl1.smartstream.ne.jp/radiko-dl/1.1/player/player_0.1.2.swf –pageUrl http://radiko.jp/player/player.html#TBS –flashVer “LNX 10,0,45,2” –live –stop 30 –flv output.flv
[/shell]

出来上がったファイルを、一度Windowsへダウンロードして聴いてみる。
うまくいったっぽいので、flvをmp3へエンコードするためffmpegを入れることにする。

[shell]
$ cd ~/tmp
$ wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
$ rpm -Uhv rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
$ yum update
$ yum -y install automake libtool libogg-devel livtheora-devel
$ yum -y install ffmpeg
[/shell]

さきほど録音したoutput.flvをエンコード。

[shell]
$ ffmpeg -y -i output.flv -ac 1 -ab 32 output.mp3
[/shell]

これを実行すると、、

[shell]
[aac @ 0x12520230]SBR not implemented. Update your FFmpeg version to the newest one from SVN. If the problem still occurs, it means that your file has a feature which has not been implemented.
[/shell]

このようなメッセージがドバーっと出てきますが、mp3ファイルは無事に生成されています。

参考サイト:
radikoで録音
radikoを録音して後で聞くためのプログラムを作ってみた

ラジオ好きとしては、せっかくなので是非ともradikoもオープン化して頂きたいです。
テレビのように私的利用目的以外に使われる事を恐れて、ガチガチに縛るのは好ましくないと思っています。
radikoには、録音を阻止するという方向には進んで欲しくありません。新たなビジネスに乗り出してください。