2009年2月12日木曜日

SL での動画再生と YouTube のお話し その3

[2009.4.5 追記] YouTube もしくは pipes の仕様変更により現在この方法は有効ではないようです。ご注意ください。
[2009.4.8 追記] IE/Firefox といったブラウザから同様の仕組みの Javascript で現在でもダウンロードできることから、ユーザーエージェント判別によりアクセス規制しているような気がしますね~。pipes を使ったダウンロードは無効になるようです。
[2009.4.8 追記2] どうやらこういうことらしいです。。。

前回からの続きになります。

PipesYouTube API を使って動画を検索する方法で「ノートカード廃止」のめどがつきました。一般的なキーワードを使うと 50 件の検索最大件数になってしまいますが、作成者の名前や特定のタグ、複数のキーワードを入れることで絞込みがある程度できるので良しとしました。逆に「とんでも系」、「やってみた系」がでるときでもロシアンルーレットみたいで面白いのを発見しました。

最初のころは、この初期の pipe を使って動画の URL 、タイトル、再生秒数、検索結果件数をとり、動画の URL を youtubemp4 を使わせてもらって mp4 の H.264 動画ファイルのダウンロードを行い、セカンドライフ内での動画再生を行っていましたが、最初のほうでご紹介したように High Defenition の動画ファイルだと再生時にセカンドライフ内での動きがカクカクになることが嫌でした。

youtubemp4google operating system で紹介しているブックマークレットも HD 画像があれば、そちらをダウンロードする、という仕様になっていたからでした。

他の個人のかたのサービスを使わせてもらっていることも考えると、この「ダウンロードする部分」までなんとかならないかな、、、と考えはじめました。でも、Web サーバー上に php などを使ってプログラムを作成することはやりたくありませんでした。サーバーのメンテナンスや、そっちのプログラムのメンテナンスはしたくありません、、、。これは敷居高いかも、、、などと考えながら、なかばあきらめかけていた(実は、あきらめかけるのはあと1回あるのですが(笑))時、あるお友達からの助言が、、、

「Pipes でやれるんじゃないの?」

あっ!たしかに、、、(笑

Pipes を使って youtube から mp4 ファイルをダウンロードする
[追記 2009] 現在は YouTube 仕様変更によりこの方法は使えません。
それから google operating system の記事を読み直して、このダウンロードする方法がどんな仕組みなのか調べてみることにしました。
結論から言えば、観たい動画のページの「HTML ソース」の中に SIGNATURE と呼ばれる id があって、それを拾ってきて URL を組み立てる、HD 画質が有効だったら fmt の指定を変えている、、、ということでした。
つまり、fmt を固定すれば HD 画質の動画をとってこないわけです。
pipe は、、、結構複雑になりました。ただ、それでもレスポンスが極端に悪くなるわけではないのが驚きでした。一体、米国 Yahoo さん、どんなサーバー使ってるのだろう、、、こんなすごいサービス、いつもまでも無料で開放しつづけられるのかな、、、など要らぬ心配までしてしまったり。
以下が YouTube から mp4 をダウンロードする pipe です。PC や Mac で使えば動画タイトルをクリックすると「ダウンロードしますか?」と聞いてきます。そこが前回ご紹介した pipe との大きな違いです。
getH264FilesFromYoutube
同じく、前回紹介したように米国 Yahoo ID をもっていれば、この pipe の copy もできます。ソースも参照できますので、興味のある方はご自由に~。前回と比べてどのくらい複雑かは以下の図なんかをみると。。。(笑
0
なんか、ここまで来ると「もう完成」みたいな気がしますが、、、そこは Second Life 、、、そう簡単にはいきませんでした。
この pipe の部分はかなりポイントの部分なんですが、こうやってアイディアとソースを公開したのは、この pipe を使っても、やはり LSL 側でかなり工夫しないと使い切れない、、、ということです。
あと、本来、pipe はマッシュアップサービスの組み合わせなので、共有したほうがおもしろそうなので(笑
で、、、このあとまだ「あきらめかける」事態になるわけです、、、
続く、、、ですね、、、

4 件のコメント:

  1. t=の部分だけど、"swfArgs = {"で始まる部分から持ってきてるのかな。
    "watch_fullscreen?"で始まる部分からもってくると、"t="も含まれて取得できるので後で編集がいらなくなりますよ。
    http://jvn.slmame.com/e303940.html
    こちらで公開されているPipeに載ってます。

    返信削除
  2. kio さん、ビンゴです~。
    pipes っておもしろいけど、目的がないと何につかっていいのやら、、、ですよね(笑
    私の pipes だと keyword で kio さんの名前いれるとビデオのリストを吐き出してくれるので、、、いつもテストで kio さんの名前を使ったりしてます、、、。
    って、、もう pipe のほうはいぢりたくない^^;
    情報ありがとうございました~。

    返信削除
  3. そうそう。なんか目的を思いつかないととっかかりにくいよね。
    私もYouTube/SL/Pipesやってるw
    その前はSL Wikiの日本語ページの更新分RSSを作ってる人のを見て、SL Wiki英語ページの更新分RSSとか、SLブログ2つを混ぜたRSS作ってみたりしましたw
    pipesは KioWhiteheadで公開してるやつは見れます。
    http://factory-k-lab.blogspot.com/
    こちらにリンクがあります。
    そうそう。Lucyさんがスティッカムの映像をSLで切り替えて流したいようなことをおっしゃってました。Snumaさんに頼むといいよ!って伝えておきました~

    返信削除
  4. 連続でごめんなさい…。
    あと、検索でとってくるlink、サムネイル画像リンクをセットしたりすると、Media経由になるからちょっと重いけど、「どれみようかなー」が楽しくなるかもです。
    4つぐらいあって、最初の3個がサムネイル候補、最後のやつが動画作成者が選択したやつの大きい画像、になってます。

    返信削除