動画を楽しもう!(Ustream.tvで録画した動画「Past Clips」のFLVをダウンロード可能にするブックマークレット)

【2012/01/03:更新】
Ust DLの公式ページができました。今後の最新情報はこちらをご確認ください。
Ust DL 公式ページ

【2010/04/13:追記】
スクリプトをアップデートしました。もう少し詳しい説明が以下リンク先にあります。
UstreamのRecordedをダウンロードできる「Ust DL」はUserScriptでもイケます

【2010/03/04:追記】
新しい方法を書きましたので、こちらのエントリーを参考にしてください。
UstreamのRecordedをダウンロードするBookmarklet

ちょっと前からwebカメラで手軽にストリーミング配信ができちゃうwebサービス「Ustream.tv」が流行っているみたいです。

Ustream is a platform that provides live interactive video for everyone. Anyone with a camera and an Internet connection can use Ustream to broadcast to a global audience.

via: Ustream.tv

でも、個人的には自分の姿を配信するつもりはないし、他の人がPCに向かっている映像をみても特に面白くないので、たまにtwitterでshimookaさんあたりが「ustream中」とか書いているとチェックするくらいでした。

ところが最近、ustreamで勉強会とかセミナーをストリーミング中継ってのが流行っている(?)らしく、中継しながら録画もできちゃうってんで結構注目しております。
TAKESAKO @ Yet another Cybozu Labs: Shibuya.pm#8 ustream中継
うさぎ文学日記 - Ustream.tvは勉強会の必須ツールになった感

前置き長くなりましたが、どうやらUstreamもFLVをダウンロードできるURLが存在する事がわかったので、例のごとくブックマークレットでダウンロードしやすくしてみよっかなぁと思います。

Ustream.tvで録画した動画のFLVのありかとその取得方法

Perlな人はこの辺参照、
subtech - Bulknews::Subtech - Plagger で ustream FLV ぶっこ抜き
unknownplace.org - 2007/10/03

もっと簡単な方法無いかなと思ったら、

ここまできたら、おもむろにFirefoxの別のタブ(ウィンドウでもいいけど)のロケーションに http://flash{serverid}.ustream.tv:18881/broadcast/{数字/数字}.flv を打ってリターン

via: Clouder::Blogger: ustreamの録画した動画のflvをダウンロードする方法

という事らしい。
でも、Firebugで取得してるってコトはJavaScriptでもできるよな?
と思ったのでやってみる。

Ustream.tvで録画した動画をダウンロード可能にするブックマークレット

さっそくですが、完成品です。

Ustream FLV Download

 1)上記リンクをブックマークして下さい。
 2)ダウンロードしたい対象のチャンネルのURLを開く
   http://ustream.tv/channel/******
 3)ブックマークレット発動!
 4)「Done!」って出たら成功!
 5)Past Clipsのリンク先がFLVになっているので好きなのを保存

5が良く分からないかもしれませんが、以下のようなイメージです。

ustream1

↓ここで、ブックマークレットを実行すると・・・

ustream2

このようにサムネイルのリンク先がFLVになるので、わかりやすいです。
あ、変換しちゃうと逆にストリーミングで見たい時に困るかな・・・。
その時は、画面をリロードして下さい。(ゴメンなさい)

ブックマークレットの中身はこんな感じ。

javascript:(function(){w=window;d=document;o=d.getElementById('recordedVideos');t=o.innerHTML;if(a=t.match(/javascript:play.'video','([^']+)','([^']+)','([^']+)','([^']+)'../g)){if(b=t.match(/broadcast.([0-9]+).([0-9]+)/g)){if(a.length==b.length){for(i=0;i<a.length;i++){f=a[i].split(',');fl=f.length-1;t=t.replace(a[i],'http://flash'+f[fl].substring(1,f[fl].length-3)+'.ustream.tv:18881/'+b[i]+'.flv');}o.innerHTML=t;alert('Done!');}}}})();

ついでに、改行とコメント付きものせとく。

javascript:
(function(){
  w = window;
  d = document;
  o = d.getElementById('recordedVideos'); //録画された動画のサムネイルが入る要素
  t = o.innerHTML;
  //サーバーIDが入っているJS関数pray()を正規表現で抜き出す
  if ( a = t.match(/javascript:play.'video','([^']+)','([^']+)','([^']+)','([^']+)'../g) ) {
    //ビデオID(と思われるもの)が入っているサムネイル画像パスを正規表現で抜き出す
    if ( b = t.match(/broadcast.([0-9]+).([0-9]+)/g) ) {
      //サーバーIDとビデオIDがちゃんと取得できた場合
      if( a.length == b.length ) {
        for ( i=0; i<a.length; i++ ) {
          f  = a[i].split(',');
          fl = f.length-1;
          //抜き出したIDを組立てて、JS関数pray()と差し替え
          t  = t.replace(a[i],'http://flash'+f[fl].substring(1,f[fl].length-3)+'.ustream.tv:18881/'+b[i]+'.flv');
        }
        //id=recordedVideosの要素を入れ替え
        o.innerHTML = t;
        //無事終了
        alert('Done!');
      }
    }
  }
})();

Past Clipsの一覧が入っているdiv要素(id="recordedVideos")は、画面ロード後にAjaxやらでHTMLを流し込んでるっぽいので、HTMLソース見ただけでは空っぽなので注意。

まとめ

例のごとく、正規表現が微妙ではあるがね。動けば良し。
IE、FireFox、Safariで動くのは確認しました。(が、抜けはあるかも)
不具合見つけたら報告願います。

それから、UstreamのFLVはコーデックが特殊らしいのでVLCではダメっぽい。
FLV Playerなら大丈夫との事ですが、未確認です。
以下も参考になりそう。
どんごどんご - 2007-10-03

・動画を楽しもう!(ustreamの録画した動画(Past Clips)のFLVを片っ端からダウンロードするブックマークレット)
動画を楽しもう!(Youtubeの動画を片っ端からダウンロードするブックマークレット)
動画を楽しもう!(HandBrakeの最新版0.9.0を試してみる)
動画を楽しもう!(インターネット編)
動画を楽しもう!(MacでDVDコピー編)
動画を楽しもう!(WindowsでDVDコピー編)

同じカテゴリーの記事

このページの一番上に戻る
  • Facebook
  • Twitter
  • Tumblr
  • Instagram
  • miil