YouTubeのFLVが保存できる理由
MacromdeiaのFlashコンテンツから呼び出されるFLVファイルは、ローカルに保存出来ないようになっている(とMacromediaの資料を読んで認識している)。
ところが、当ブログの別エントリ「YouTubeをローカルに保存」で紹介したKEEPVIDでは、このFLVファイルが保存できる。
なぜ、FLVファイルが保存できるのかをちょっと調べてみた。
こんな時の調査ツールとして、Firefoxの場合、LiveHTTPHeadersというプラグインがある。
このツールを使って、YouTubeから適当なファイルを視聴したときのヘッダ情報を取得してみた。
Flashコンテンツの取得時には、QueryStringに video_idその他の変数を付加して呼び出しており
GET /player.swf?video_id=b4Knsa(以下略)
という要求に対して
HTTP/1.x 200 OK
.....(略).....
Content-Length: 10425
の応答を返している。さらに、このplayer.swfから、
GET /get_video?video_id=b4Knsa(以下略)という要求が発生しており
HTTP/1.x 303 See Other
.....(略).....
Location: http://youtube-988.vo.llnwd.net/d1/01/22/b4Knsa(途中略).flv
を応答として返している。
ここから、MacromdeiaのFlashストリーミングのようにRTMPプロトコルを使用しているのではなく、単純にHTTPプロトコルでリダイレクトしていたから、このLocationヘッダを解析すれば、そのままダウンロード出来ることになる。
# 単純にLocationヘッダで示されているURLを wgetやcurl等でダウンロードすればOK
なお、ステータスコード303はめったに見ないコードなので、調べてみた。
Studying HTTPの303 See Otherによると、リダイレクトで要求メソッドを切り替える時に使用するものということらしい。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- Firefoxで簡単YouTube動画ダウンロード(2006.10.30)
- 拡張現実でポンゲーム(2009.07.06)
- 3分でわかるPodcast(2008.04.25)
- 2009年のgoogleエイプリルフールネタは川柳(2009.04.01)
- Macの無線LAN経由でコピー失敗問題(2009.03.30)








コメント