放送中のUstreamを録画する

GUI環境用には既にある

専用、汎用含めてGUI環境では既にそのようなツールは存在する。

コマンドラインからやりたかった

ネットワーク的にいいところ(例:さくらのVPS)からURLを与えるだけで録画できるツールが欲しかったけれど、録画に必要なサーバーの情報を得るにはFlashとUstreamのサーバーの通信を解析する必要があり面倒だった。が、いろいろ解析していた所、Flashなしでも情報をぶっこ抜ける事がが判明。→できました。

どちらのスクリプトもrtmpdumpを使うので事前にインストールしておく必要があります。

メモ

Flashのプレイヤーが読み込む設定ファイルを直接DLしにいく

http://cdngw.ustream.tv/Viewer/getStream/1/1041782.amf?pageUrl=http%3A%2F%2Fwww%2Eustream%2Etv%2Fchannel%2Ftowerbridge&locale=ja%5FJP&encoded=1

  • あたま
  • ch番号(サブストリーム関係?)
    • 1
  • 配信のUID
    • 1041782
  • 拡張子
    • .amf
  • 引数はつけなくても大丈夫だった
    • ?pageUrl=http%3A%2F%2Fwww%2Eustream%2Etv%2Fchannel%2Ftowerbridge&locale=ja%5FJP&encoded=1

UIDは録画したいチャンネルのページのhtml内にたくさん書いてある。

http://cdngw.ustream.tv/Viewer/getStream/1/1041782.amf

URLを求めたamfファイルから本命のrtmpサーバーのアドレスを取り出す

rtmp://flash56.ustream.tv/ustreamVideo/1041782

URLがわかったらrtmpdumpに突っ込んでダウンロード

rtmpdump -q -v -r “rtmp://flash56.ustream.tv:1935/ustreamVideo/1041782” -a “ustreamVideo/1041782” -f “LNX 10,0,45,2” -y “streams/live” -o rec.flv