声優ラジオの知見をより一層深めるために超!A&G+のストリーミングを録画する環境を作った.

(追記2014/4/2:y_benjo氏がより書きやすいyaml構造のスクリプトに改良してくれているので,そちらも参照https://gist.github.com/ybenjo/9904543)

(追記2014/11/23:rtmpのURLを更新)

(追記2015/04/13:以下のスクリプトにはバグが有ります.ybenjo氏のスクリプトを利用して下さい:https://gist.github.com/ybenjo/9904543)

注意

この記事に含まれているスクリプトの利用はすべて自己責任でお願いします.また,この記事に関する質問等は一切お答えしませんのでご了承下さい.

録画環境

想定している環境は以下の通り.

  • 常にインターネットに繋がっていてRubyが動いてcronが回せる環境
    • スクリプトを定期実行して録画を開始・停止する
    • Mac OS XもしくはLinux推奨
  • RTMPDump
    • AGQRの録画
  • FFmpeg
    • flvからmp4へのエンコード

録画スクリプト

録画したい番組の情報をschedule.yamlに書き,cronで定期実行するagqr.rbが録画を実行する.スクリプト冒頭のradio_dir,rtmpdump,ffmpegは各自の環境に合わせて変更する.

運用

ディレクトリとファイル

スクリプトや録音ファイルなどを置くradioディレクトリは以下のように設定する.実行時に必須なのはagqr.rb,schedule.yaml,fileおよびtmpディレクトリ.なおtmp以下のflvフィアルは自動的に削除されないので,不要になれば手動で削除する必要がある.

1
2
3
4
5
6
7
8
$ tree radio
radio
├── agqr.rb
├── file
│   ├── *.mp4
│   └── tmp
│       └── *.flv
└── schedule.yaml

cron

cronによる定期実行は以下のように毎時29分と59分にスケジュールし,開始15秒前から録画がスタートするように45秒スリープしてからagqr.rbを実行する.

1
2
$ crontab -l
29,59 * * * * sleep 45;cd /path/to/radio;/usr/bin/ruby /path/to/radio/agqr.rb

schedule.yaml

録画スケジュールを管理するschedule.yamlは以下のように設定する.ファイル形式はYAML,それぞれの録画スケジュールは順不同.

  • record: true/false
    • 録画をするかどうかを指定する
  • title:
  • personality:
    • パーソナリティがいない(titleに含まれている)場合は空白で良い
  • date:wday:
    • 曜日を指定.月曜なら1,火曜なら2という具合に.
  • date:hour:
    • 開始時刻(時)
  • date:min:
    • 開始時刻(分)
  • date:time:
    • 録画時間(秒)
    • 開始15秒前から録画スタートするので,30分番組なら1815,1時間番組なら3615といったように15秒多めに指定した方が良いかもしれない.ここは各自で調節する

参考