昨日はテレポートもできないものだから、、、SUZAKU GP2 の Promo Video の日付修正確認を SUZAKU でできず、、、、(笑
あい、確認しました~
リンク名はそのままなので、特に Media URL 変更の必要はございません~。
(あ、先日の Blog 内にリンクしている動画は URL 変わってます、、、すみません...)
SIM というか、SL の中での動画再生ですが、こんなサイズの大きな動画ファイル(35MBほど)だと SIM に影響が、、、なんて思いがちですが、実際のところはその影響は、仕組みから考えると小さいみたいです。
というのも、この動画、、、QuickTime のプラグインが SL のビューアー上で動いているようなものなので、SIM は動画が保存されている外部サーバー(Webサイト)の URL を渡しているだけですね。その後は動画がある Web サーバーと PC クライアントの間で動画ファイル転送が行われて、一時的にダウンロードされた動画ファイルを「 SL ビューアー内」で再生しているわけです。
なので、[View] - [Statistics Bar] で SIM の Performance などを見ても、動画再生中だからといって、これといって SIM の数値が悪くなる、、、ということはありませんね。
もちろん、最初の動画ファイルのダウンロード中は、クライアントが、、カクッ、、、、と動きが止まりますが、、、(笑
再生中では、クライアントのパフォーマンスに影響する Statistics Bar の項目(FPS, KTris Drawnなど)が悪くなります。やはり、PC 側のグラフィックボードなどの性能に左右されますね。
で、この仕組み、、、、ちょっとおもしろい挙動をするんです。。。
というのも、、、、みんなで同じものをみているか、、、といったら、違うときもあるからです。
わかりやすく例えれば、Web サイトの動画ファイル、、、みんな同じタイミングでみているわけじゃないんですよね~。
You Tube とかの動画ファイル、、、そのページをアクセスしているユーザーが同じタイミングで、同じビデオの箇所をみているわけではない、、、、そういうことですね~。
再生のタイミングはみんな違いますからね。
もっとややこしくなるのは、、、Start/Stop の操作や Media の URL をスクリプトから変更するようなものをつくった場合、、、でした。。。(この場合、スクリプトが入っているオブジェクトのオーナーは区画の Media URL を変更できる権限をもっている人でないとだめです)
通常、Land設定の [Media] の Media texture にムービーの URL を設定しておくと、SLビューアーの Movies タブの再生ボタンを押せば、そこで設定されている動画をスクリーンでみることができますよね。(それでも、再生のタイミングは上述の理由より個々それぞれ違います)
ところが、この設定をスクリプトでやると、、、スクリプトの組み方で、いろいろな挙動を見ることができます。
たとえば、Inventory の Library の objects フォルダーにある "Media Player" を Rez して、そのオブジェクトの再生、Pause、停止ボタンを使えば、、、その区画にいる人がみているスクリーンは同じタイミングで Land 設定の Media で指定されている動画の「再生」「ポーズ」「停止」がされます。
ですが、SL ビューアーの Movies / ムービー タブで、自分の判断で停止、再生ができますので、それをやれば、「自分の動画だけに影響」する形で動画の制御ができます。その後、映像が同期しないまま、Media Player の制御で、再生、ポーズ、停止とさせられます。
おもしろいのは、、、、以下のように Notecard から URL を読み込み、List いれて、Touch 毎に URL を変更するスクリプトだと、、、、なぜか、Land の URL は変更されないまま、画像だけがかわるんです。
(追記 2007/10/14:上記の記述は正しくありませんでした。以下の Source の赤い部分の PARCEL_MEDIA_COMMAND_AGENT, llDetectedKey(0), によって、タッチしたアバターだけに Media Command を適用しているからです。もしの PARCEL_MEDIA_COMMAND_AGENT に NULL をいれると、土地の Media URL が変更権限を与えられている スクリプト・オブジェクト により変更され、その時点でそこで Media を見ている人全員の動画も切り替わります。大変失礼しました、、、)
////////////////////////////////////////////////////////////////////
// name of a notecard in the object's inventory
string gName;
// current line number
integer gLine = 0;
// id used to identify dataserver queries
key gQueryID;
list urlList;
key VIDEO_DEFAULT = "6e0f05ad-1809-4edc-df29-fae3d2a6c9b8";
integer i;
default {
state_entry() {
llSetText("Touch ME!",<1,1,1>,0.5);
i = 0;
// select the first notecard in the object's inventory
gName = llGetInventoryName(INVENTORY_NOTECARD, 0);
// request first line
gQueryID = llGetNotecardLine(gName, gLine);
}
dataserver(key query_id, string data) {
if (query_id == gQueryID) {
if (data != EOF) { // not at the end of the notecard
// llSay(0, (string)gLine+":"+data); // output the line
urlList += [data];
integer ListLength = llGetListLength(urlList);
llSay(0, llList2String(urlList, ListLength - 1));
// increase line count
++gLine;
// request next line
gQueryID = llGetNotecardLine(gName, gLine); }
}
}
touch_start(integer nd){
llParcelMediaCommandList([
PARCEL_MEDIA_COMMAND_AGENT, llDetectedKey(0),
PARCEL_MEDIA_COMMAND_PAUSE]);
if (i >= (llGetListLength(urlList))) i = 0;
llParcelMediaCommandList([
PARCEL_MEDIA_COMMAND_AGENT, llDetectedKey(0),
PARCEL_MEDIA_COMMAND_URL,llList2String(urlList,i),
PARCEL_MEDIA_COMMAND_PLAY,
PARCEL_MEDIA_COMMAND_LOOP,
PARCEL_MEDIA_COMMAND_AUTO_ALIGN,TRUE]);
++i;
}
}
///////////////////////////////////////////////////////////////////
Notecard はどんな名前でもいいので、こんな感じの内容です。(Appleサイトの映画予告のmovです)
http://movies.apple.com/movies/jp/movies/wb/oceans13/oceans13_480x211.mov
http://movies.apple.com/movies/jp/movies/buenavista/poc3/pirates3_trailer480x207.mov
http://movies.apple.com/movies/jp/movies/wb/blooddiamond/blooddiamond480x202.mov
http://movies.apple.com/movies/jp/movies/sony/media/legendofmexico_large_200409_01.mov
http://movies.apple.com/movies/jp/movies/sony/007casinoroyale/007.mov
http://movies.apple.com/movies/jp/movies/fox/x-menfinal/x-menfinal_trailer480.mov
http://movies.apple.com/movies/jp/movies/fox/media/irobot_large_20040818.mov
http://movies.apple.com/movies/jp/trailers/fox/fantastic_four/fantastic_four-jp_m480.mov
http://movies.apple.com/movies/jp/movies/fox/prada/prada_trailer480.mov
http://movies.apple.com/movies/jp/movies/wb/harry-potter/harrypotter_480x204.mov
http://movies.apple.com/movies/jp/movies/uip/transformer/transformer_trailer.mov
http://movies.apple.com/movies/jp/movies/wb/deathnote/deathnote_trailer480.mov
おもしろいのは、、、このスクリプトでは Land の Media URL は書き換わりません。
トランスフォーマーの予告movが入っているのに、パイレーツオブカリビアンが。。。
これは、どうやら SL Viewer それぞれが、スクリプトによって Media texture の URL の値を一時的に保持しているみたいですね。つまり、QuickTime が読み込む先(URL)は「クライアント」がもっているみたい、、、ということですね。
実際、このオブジェクトを複数の人とクリックしあうと、、、それぞれが違う動画を見ることになりました。
ちなみに、これを Touch で URL を変えるのではなく、Touch で List からダイアログに表示して、そこのボタンから URL を変更する、、、にすると、Land の Media URL が書き換わって、かつ、Land 設定の Media の URL が書き換ったタイミングで、他の人がみている動画も変更されます。
うーん、Land の Media URL の書き換え条件って、ありそうですね~
なんか、、、応用ききそうw (でも、、、これが Bug だったら、、、使えませんね、、、もうちょっと調べてみる価値ありかも)
またまた、、、ニッチなネタで、ごめんなさい~w
0 件のコメント:
コメントを投稿