2010年5月16日日曜日

Viewer2用YouTubeプレーヤーのスクリプト

今回はビューワー2シェアードメディアを使った簡単なTV型ユーチューブプレーヤーを作ってみました^^
LSL プリムメディア

仕組みはユーチューブ動画のアドレスを変換して、シェアードメディアのURLにYouTube埋め込みプレーヤーを表示するようにしただけなんですけどね^^;

普通のウェブブラウザだったら、埋め込みプレーヤーのアドレス(http://www.youtube.com/v/ビデオID)を直接開いても見れるのに、なぜかSLビューワー2では表示されなかったので、dataスキームを使ってHTMLコードを埋め込むようにしました。(かなり雑なHTMLですが^^;

本体(テレビ画面)の大きさは <0.1, 2, 1.2> ぐらいの比率にしてください。動画が16:9ぐらいのサイズで表示されるようにスクリプトで調整しました。プリムメディアの幅、高さはよくわからなかったんですが、値を1024にしたら100%になるみたいです。
// YouTube player for viewer2
integer ch=1;  // チャット入力用チャンネル
integer face=4;  // 面番号

set_media(integer num, string url)
{  // メディア設定
    llSetPrimMediaParams(num,[
    PRIM_MEDIA_CONTROLS,PRIM_MEDIA_CONTROLS_MINI,
    PRIM_MEDIA_HOME_URL,url,
    PRIM_MEDIA_CURRENT_URL,url,
    PRIM_MEDIA_WIDTH_PIXELS,1024,
    PRIM_MEDIA_HEIGHT_PIXELS,600,
    PRIM_MEDIA_AUTO_PLAY,TRUE
    ]);
}

set_youtube(string url)
{
    integer i=llSubStringIndex(url,"youtube.com/watch?");
    if (i > 6) {  // YouTubeだったら
        i=llSubStringIndex(url,"v=");
        if (i > 24) {
            string videoid=llGetSubString(url,i+2,-1);
            i=llSubStringIndex(videoid,"&");
            if (~i) videoid=llGetSubString(videoid,0,i-1);
            // 埋め込みプレーヤーを表示
            set_media(face,"data:text/html,<style type='text/css'>body{margin:0;padding:0;}object{width:100%;height:100%;}</style><object data='http://www.youtube.com/v/"+videoid+"&autoplay=1'  type='application/x-shockwave-flash'></object>");
        }
        else llWhisper(0,"Illegal URL");
    }
    else {  // YouTube以外はそのままウェブページとして表示
        set_media(face,url);
    }
}

default
{
    state_entry()
    {
        llScaleTexture(1,0.586,face);  // テクスチャのスケール設定
        llOffsetTexture(0,-0.207,face);  // テクスチャのオフセット設定
        llListen(ch,"",NULL_KEY,"");  // リッスン開始
    }

    on_rez(integer start_param)
    {  // 持ち物から出したとき
        llResetScript();  // スクリプトリセット
    }

    listen(integer channel, string name, key id, string msg)
    {
        if (channel == ch) {  // チャンネル1でアドレスが入力されたら
            string str=llGetSubString(msg,0,6);
            if (str == "http://") {
                llWhisper(0,"URL = "+msg);
                set_youtube(msg);  // set_youtubeへ
            }
        }
    }
}

YouTubeモバイルプレーヤーのスクリプトをベースに改造したので、アドレスのチャット入力やアドレス変換してる部分は大体同じですw 視聴はビューワー2でフラッシュが再生される状態に設定して、チャットのチャンネル1番でユーチューブ動画のアドレスを入力してくださいね。
/1 http://www.youtube.com/watch?v=nCgQDjiotG0

22時30分頃追記: 画像をアップしました。埋め込みプレーヤーそのものですけどw

2 件のコメント:

  1. はじめまして、
    最近いろいろと作ってみたいと思って勉強中です。
    とても参考になります。
    ありがとうございます。

    返信削除
  2. はじめまして。ご覧頂きありがとうございます。
    そうですか。お役にたてて嬉しいです^^
    頑張ってくださいね^^

    返信削除