かなり頭悩ましてますw
このサイトのYootubeは、一般的なYoutube再生(swf再生)じゃなくて、 flvやmp4を直接ストリーミングしてます。 が・・・何か3月末から拒否されてるっぽい(T_T)
実はこのサイトのようにFlashからの外部アクセス(今回で言うYoutube)は、 セキュリティ的に無茶苦茶やっかいで、直接アクセスできません。
苦肉の策で、こんな感じでPHP経由(proxyプログラム)で取得してました。 ■フロー (1) swfからyoo-s.comのAPIへYoutube動画URLリクエスト http://www.youtube.com/watch?v=ビデオID
(2) URLを解析し、ビデオIDを取得
(3) yoo-s.comからYoutubeに動画情報をリクエスト http://www.youtube.com/get_video_info?&video_id=ビデオID
(4) テキストデータがかえってくるので、解析してtokenを取得
(5) ビデオIDとtokenを利用して、yoo-s.comからYoutubeへ動画リクエスト http://youtube.com/get_video.php?video_id=ビデオID&t=token
(6) 303 See Otherが返る クライアント直接型専用アプリ(C#やAir等)なら、この時点で動画をダウンロードできる ここがやっかい。。。
(7) ヘッダを解析してLocationから真の動画URLを取得 例) http://v8.lscache8.c.youtube.com/videoplayback?ip=72.0.0.0&..........
(8) yoo-s.comからswfへ動画URLを返信
しかし、冒頭にも記した通り、最近(7)のURLがyoo-s.comでは拒否されてしまう。。。 ローカル環境ならOKってことは、やっぱIPで制御されてる可能性大。 100%拒否されたとは断定できないけど「token発行がyoo-s.com」「動画再生がswfクライアント」 ってのが問題かな?
結局、クライアントから直接リクエストしないとダメかも。 とは言えswfからは直接アクセス不能なので、swf←→JavaScriptになるのか? てかJavaScriptでも拒否されるかも知れん。。。
ちなみにAirアプリで作ったら、あっさりyoutubeから直接動画ダウンロードできたけど(^^;) うーん、誰か助けてw