USTroku で録画できない放送を録画・保存する方法

追記 2014年5月22日、2015年1月17日
公式系の配信で従来の ffmpeg では保存できない、低画質だけは保存できる放送を確認したので、それの保存方法について。

使うのは livestreamer で ffmpeg と同様にコマンドプロンプトから実行する。

配布先、setup.exe の保存推奨(常に最新版を使う)
Releases · chrippa/livestreamer · GitHub

基本コマンド 配信元となるページを入力するので、わざわざ貼り付けコードを調べたりする必要がない。
livestreamer www.ustream.tv/channel/dommune --default-stream best -o dommune.flv

これで一番高画質のデータが保存できる。

livestreamer は ffmpeg を使う場合と rtmpdump を使う場合のどちらの放送にも対応しているので livestreamer 一つで Ustream の保存が同じコマンドで可能

livestreamer でも配信サイトの仕様変更で高画質だけ突然保存できなくなったりするので、そのときは Nightly build を試し、それでもダメなら更新があるまで待つか、バグレポートする。

追記ここまで

【USTroku】 USTREAMのライブ映像を録画・保存 【チェッカー付き】 より USTroku(rtmpdump)で録画できない放送を ffmpeg を使って録画する方法。

方法は iphone 向けのHLSから録画することになる。詳しい仕様は以下のサイトを参照。
まずは放送しているチャンネルIDを調べる。調べる方法は放送ページのソースコードを調べるか、外部プレイヤの貼付けコードから調べる。

  • ソースコードから検索(ブラウザで右クリック)
    http://www.ustream.tv/flash/viewer.swf?cid=********
    https://www.ustream.tv/embed/********
    meta name="ustream:channel_id" content="********"

  • 視聴画面右下の「SHARE」から<>をクリックして外部プレイヤのembedタグを取得し
    https://www.ustream.tv/embed/********


******** 部分(全て同じ)の8桁の数字を ffmpeg に割り当てて録画する。

ffmpeg のコマンド
ffmpeg -re -i http://iphone-streaming.ustream.tv/uhls/********/streams/live/iphone/playlist.m3u8 -c copy out.ts

こちらでも可能
ffmpeg -re -i http://sjc-uhls-vip03.ustream.tv/watch/playlist.m3u8?cid=******** -c copy out.ts

コマンドを実行するには Dropbox - cmd.zip を保存、解凍し cmd を ffmpeg と同じフォルダ内にコピーして cmd を実行し、上のコマンドをコピペして実行すれば ffmpeg から配信を保存できる。

ffmpeg はここからダウンロードする
FFmpegダウンロード お気に入りの動画を携帯で見よう

以前ここにアップロードしていた ffmpeg
Dropbox - nicolive-ffmpeg.zip

ust_hls_ffmpeg.png


複数の解像度の映像ストリームが含まれる場合は ffmpeg を実行したときに表示されるデータの -map を指定する。
下のグラフは映像に 0:0、音声に 0:1 の map が割り当てられている。
ustream_ffmpeg_map_setting.png


規定値は一番最後のストリームが表示される。
ffmpeg -re -i http://sjc-uhls-vip03.ustream.tv/watch/playlist.m3u8?cid=******** -map 0:0 -map 0:1 -c copy out.ts

-map 指定しながら ffplay で映像を再生する場合は ffmpeg で -map 指定をしてパイプでつなげる
ffmpeg -re -i http://iphone-streaming.ustream.tv/uhls/********/streams/live/iphone/playlist.m3u8 -map 0:0 -map 0:1 -fflags nobuffer -c copy -f mpegts pipe: | ffplay -i -

ffplay のショートカットキー

長時間の配信を ffmpeg で保存しているときに途中で止まることがあるが、これはおそらくどうにもならないので同時に複数のファイルを保存するなどして対処する。

以下昔の話

追記 2013年5月25日
この方法で自分で配信したのを録画する場合に、放送開始から放送データが録画できないことが何度も有り、どうやら4月から Ustream側で映像を一時的に貯める(バッファリング)を行なうようなった。つまりそれだけ映像がなかなか送られて来ず、その分だけ遅延するようになった。

追記 2014年1月4日
ffmpeg でも 同梱の rtmpdump で保存できない場合は KSV氏の rtmpdump(librtmpも一緒に) に差し替えて USTroku で使う。
Releases · K-S-V/Scripts · GitHub

追記 2014年1月13日
追記 2014年2月15日 ソースコードが変わって使えなくなっているのを確認。
これらのコマンドのコピペを自動化する bookmarklet
ustreamをffmpegで録画する - Qiita
上のスクリプトを少し直したもので、コピペがしやすいようにした Bookmarklet
javascript:var url = $('meta[property="og:video"]').attr("content");var parser = document.createElement('a');parser.href = url;var cid = parser.search.match(/cid=([0-9a-zA-Z]+)/)[1];prompt("ffmpeg",("ffmpeg -re -i http://iphone-streaming.ustream.tv/uhls/" + cid + "/streams/live/iphone/playlist.m3u8 -c copy out.ts"))();




追記 2014年1月31日
rtmpdump で保存できる放送のはずなのに、USTroku が対応していない放送の場合には少し上に書いた Releases · K-S-V/Scripts · GitHub から rtmpdump(librtmpも一緒に)を保存して以下のコマンドを試すか、RTMPExploreXrtmpdumphelper で解析して保存する。この方法でも保存できなかった場合はこの記事の上の ffmpeg を使って保存する。

******** はチャンネルIDで調べ方はこの記事の上を参照。
rtmpdump -r "rtmp://flash59.level3.tcdn.ustream.tv:1935/ustreamCdn/flash10/********" -a "ustreamCdn/flash10/********" -f "WIN 10,3,183,86" -W "http://static-cdn1.ustream.tv/swf/live/viewer.rsl:583.swf" -p "http://www.ustream.tv" -y "streams/live_1" -o "out.flv"
関連記事

コメント

stream fan

記事の方、大変参考になりました。どうもありがとうございます。ffmpegでustreamをダウンロードしていると、

video:395kB audio:520kB subtitle:0 global headers:0kB muxing overhead 26.442322%

というメッセージが出て43分ぐらいでダウンロードが終了してしまいます。ストリーミングは続いているのですが、切れないようにすることはできますでしょうか。

よろしくお願いします。

ChoRyuJin

でもこの方法で録画すると、画質が悪かったみたいですね。どれ録画して、解像度は426x240しかない。
例えば2.5Dさんのユースト (http://2-5-d.jp/) はPCで見るとHighクオリティーを選択することができます。uhlsの映像を録画すると、426x240の映像しかゲットできません。あの -map というコマンドよく分かりません。どうやってHighクオリティーを選択し、コマンドをタイプすればいいですか?
それともuhlsではHighクオリティーがないのか

ロベルト

Re: タイトルなし
ChoRyuJin さんこんばんは

指摘ありがとうございます。
ffmpeg では公式配信のような高画質の配信が保存できないのを確認したので、ffmpeg ではなく livestreamer を使う方法を追記しました。是非試してみてください。

ChoRyuJin

こんにちは。
最近USTREAMの仕様が変わったみたい。
Livestreamerを使って720pの画質を読み取ることができるけど、録画はすぐ消えちゃうの。
一番悪いの画質(240p)しか録画できないみたい。
エラーメッセージはこちら「[plugin.ustreamtv][error]Unable to fetch desktop streams: Failed to connect to RTMP server」
何か対策方法はあるのかな?

ロベルト

Re: タイトルなし
ChoRyuJin さんこんばんは

720p の配信映像を確認できませんでしたが、
NASA TV http://www.ustream.tv/nasahdtv では高画質が保存できてませんでした。

http://livestreamer.tanuki.se/en/latest/install.html#windows-binaries の Nightly build
でうまく保存できないのであれば公式のサポートに連絡するしかありません。
非公開コメント

プロフィール

ロベルト

お問い合わせはこちらまで
robelt2525[at]gmail.com

中の人 @nico_lab

広告リンク
Amazon
楽天市場

ブログ更新用 @blo_nico_lab

詳しいプロフィールはこちら

当ブログは、Amazonアソシエイトに参加しています。