ラベル 動画 の投稿を表示しています。 すべての投稿を表示
ラベル 動画 の投稿を表示しています。 すべての投稿を表示

2010年6月5日土曜日

OPEN 24 Hours

何となくネオンサインを作ってみたら、思ったよりもまあまあいい感じにできました^^

それで需要あるかもって気もするので、このまま商品にして近々こっそり販売してみようかなって思ってます。。。でもGIMPで文字が発光して見えるように加工しただけなので、本当のネオンサインみたいな出来じゃないと思いますけどね^^;

12
34
56
78
仕組みはパラパラ漫画のコマみたいな画像を8枚作って、横2枚、縦4枚で並べて1枚のテクスチャに合成して、llSetTextureAnimでテクスチャアニメーションさせてます。(下記のスクリプトで右図のような再生順になります)

default
{
    state_entry()
    {
        llSetTextureAnim(ANIM_ON|LOOP,ALL_SIDES,2,4,0,0,2.0);
    }
}

この関数って2回実行したら最初のぶんは無効になるので、表と裏、2つの面だけをアニメーションさせるようなことはできなくて不便なんですよね。

動画はLinuxで撮ってみたんですけど、結構ややこしかったので以下は自分用メモですw
1. gtk-recordMyDesktopで記録(ogv形式)
設定は「毎フレームで完全サイズ画面録音(フルショット)」にチェック入れておかないとコマ落ちする(3Dウィンドウ用かな?)
2. ffmpegでaviなどに変換
ffmpeg -i out.ogv out.avi
3. Avidemuxで編集してmp4で保存

2012年3月22日追記: アニメの再生順を把握しやすいように表を入れました。

2010年6月1日火曜日

ビューワー2用ビデオプレーヤー(ラッキーレター賞品)

Viewer2用YouTubeプレーヤーを元にして、数ヶ所の動画共有サイトに対応させたシンプルなテレビ型プレーヤーを作ってみました^^

YouTubeの他にDailymotionVeohMySpaceVimeoに対応してて、mpeg4やmov、普通のウェブページなどももちろん表示できます。
この製品はダイアログメニューは使わずに操作は全てチャットから入力するようにしました。それからノートにURLを書いて登録するような機能も付けてないんですが、入力したURLの履歴を10件記憶するようにしてます。

HUDとして装着してテストしてたままのサイズなので、大きさは小さいんですが、据え置きで使うときはテキトーに引き伸ばしてくださいねw

Mansion Mall店BELLE ROSE店のラッキーレターに入れてきました。BELLE ROSE店のラキボはフライパンも入ってるので交互に表示されます。宜しくお願いします^^

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

2010年3月2日火曜日

Linux版はフラッシュビデオも見れます

リナックスのGnomeデスクトップに付属してるTotemっていう動画プレーヤーはFLV(フラッシュビデオ)も再生できるんですね。なので、メディア再生にTotemと同じGstreamerが使われてるLinux版Second LifeはFLVが見れるんじゃないかなって思って試してみたんですよ。そしたらYouTubeはアドレスが長すぎて土地メディアのURLにセットできなかったんですが、veohはホントに見れたのでちょっとびっくりしました^^

使ってるのはFedora 12なんですが、最近のLinuxだったらたぶん大丈夫だと思います。FLVのアドレスはFirefoxにビデオを簡単にダウンロードできるアドオンを入れて、ダウンロード中にダウンロードマネージャでURLをコピーしました。

フラッシュプレーヤー使わずにフラッシュビデオが見れるって何かすごいですね。QuickTimeもそうゆうとこ見習ったらいいのにw

2010年2月28日日曜日

YouTubeモバイルプレーヤーのスクリプト

今回はYouTubeモバイルの動画を見るためのスクリプトです。ケータイ用なので音も画質も良くないですけど^^;

YouTubeモバイルから3GP形式のアドレスを取得するんですが、モバイル用のアドレスはMP4のアドレスみたいに長くないので、そのまま土地のメディアに設定できるんですよ。でもページの動画アドレスの載ってる部分がllHTTPRequestで取得できないのでPipesで作った簡単なパイプを使ってます。

土地のメディアテクスチャを貼ったスクリーンを用意してくださいね。チャットチャンネル1でユーチューブのアドレスを入力したら再生するようにしました。
/1 http://www.youtube.com/watch?v=z3gHCupXSMs

// YouTube mobile movie player
string pipes="http://pipes.yahoo.com/pipes/pipe.run?_id=e2dff4b90cc72c4be41b0bd89417d073&_render=csv&id=";  // モバイル用動画のアドレス取得用Pipes
string movie;  // アドレス記憶用
integer ch=1;  // チャットチャンネル
key req;

play()
{
    llParcelMediaCommandList([
        PARCEL_MEDIA_COMMAND_URL,movie,  // アドレスをセット
        PARCEL_MEDIA_COMMAND_DESC,"",
        PARCEL_MEDIA_COMMAND_TYPE,"video/*",
        PARCEL_MEDIA_COMMAND_AUTO_ALIGN,TRUE]);
    llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_PLAY]);  // 再生
}

chk_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);
            req=llHTTPRequest(pipes+videoid,[],"");  // Pipesにデータ送信
        }
        else llWhisper(0,"Illegal URL");
    }
    else {  // YouTube以外はそのまま再生
        movie=url;
        play();
    }
}

default
{
    state_entry()
    {
        llListen(ch,"",NULL_KEY,"");  // リッスン開始
    }

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

    touch_start(integer total_number)
    {  // タッチ
        if (movie) chk_youtube(movie);  // 動画がセットされてたら再生
    }

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

    http_response(key request_id, integer status, list metadata, string body)
    {
        if (request_id == req) {  // Pipesからデータ受信
            list l=llParseString2List(body,["\n"],[]);
            string str=llList2String(l,1);  // モバイル動画のアドレス
            if (str) {
                movie=str;
                play();  // playへ
            }
            else llWhisper(0,"Error!");
        }
    }
}

セカンドライフで一般的なYouTubeプレーヤー(MP4アドレスを再生するプレーヤー)は、Pipesで作るのは無理(アドレスのリダイレクトができない)だと思うので、YouTubeのMP4アドレスを取得するPHPYouTube-mp4アドレス変換スクリプトなどを参考にしてくださいね。

4月19日追記: ユーチューブの今年3月~4月の仕様変更でこのスクリプトも使えなくなってるみたいです;;

4月23日追記: じゃなくて、うちのQuickTimeプレーヤーがモバイルユーチューブの動画を再生できなくなってるみたいでした。。。Linuxでは見れたのでモバイルのほうは今のところまだ大丈夫かなって思いますw
でもQuickTimeプレーヤーで見れなくなってるのでダメダメって感じですね。バージョンは7.6.6で最新版でした。

5月9日追記: ファイルを整理してたらQuickTime 7.6.2のインストーラーが出てきたんですね。それでモバイルユーチューブの動画はQuickTimeバージョンアップ後に見れなくなった気もしてたので、思い切って7.6.6をアンインストールして7.6.2を入れてみたんですよ。そしたらホントに見れるようになりました^^ 7.6.6って設定でDirect3Dビデオアクセラレーションにチェック入れたらMP4の動画も画面が出なかったので、バグが多いバージョンなんでしょうかね?^^;

2010年2月26日金曜日

YouTubeのMP4アドレスを取得するPHP

ビューワー2の正式版がリリースされたらユーチューブ対応テレビは不要になるかもですけど、YouTubeMP4みたいにYouTubeのアドレスをMP4ファイルのダウンロード用アドレスに変換してリダイレクトするPHPスクリプトを公開します。YouTubeMP4が重くて利用できない(負荷が高い時間帯に使えない)ことがよくあるので、この前販売中止したYouTube TV screenのサポート用として書いたものの公開なんですが、他の用途で使って頂いてもオッケーです^^

PHP対応してるHTTPサーバーをお持ちの方に限られますが、このスクリプトを自分のサーバーに設置してyoutubemp4.comの代わりにTVの変換サーバーに設定してください。そうすればYouTube自体が重いとき以外はいつも視聴可能になると思います^^

<?php
// YouTube MP4 address converter

$v=$_GET['v'];
if (!$v) {  // ビデオIDチェック
  echo "Video id not found.\n\n";
  echo "Usage, \n";
  echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?v=VideoID\n";
  exit;
}

function get_location($url)
{  // MP4アドレスを取得
  $addr=parse_url($url);
  $port=isset($addr['port'])? $addr['port']:80;
  $fp=fsockopen($addr['host'],$port,$errno,$errstr,30);
  if (!$fp) echo "$errstr ($errno)\n";
  else {
    $data="HEAD ".@$addr['path']."?".@$addr['query']." HTTP/1.1\r\n";
    $data.="Host: ".$addr['host']."\r\n";
    $data.="Connection: Close\r\n\r\n";
    fwrite($fp,$data);
    while (!feof($fp)) $header.=fgets($fp,128);
    fclose($fp);
    preg_match("/\s+Location: +(.*)\s/",$header,$m);
    return $m[1];
  }
}

// YouTube動画ページ取得
$youtube="http://www.youtube.com/watch?v=".$v;
$str=implode("",file($youtube));
if (!$str) {
  echo "Can't open ".$youtube.".\n";
  exit;
}

// tの値取得
if (preg_match("/['\"]SWF_ARGS['\"]\s*:\s*\{(([^\}]|\s)*)\}/",$str,$m)) {
  $str=$m[1];
  if (preg_match("/\"t\"\s*\:\s*\"([^\"]*)\"/",$str,$m)) $t=$m[1];
}

// リダイレクト先取得用アドレス
if (isset($t)) $str="http://www.youtube.com/get_video?fmt=18&video_id=".$v."&t=".$t;
else $str="";

if ($str) {
  $str=get_location($str);  // リダイレクト先チェック
  if ($str) {
    header("Cache-Control: no-cache, must-revalidate");
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
    header("Location:".$str,true,302);  // MP4アドレスにリダイレクト
  }
  else echo "Can't get moved location.\n";
}
else echo "Can't get data from ".$youtube.".\n";
?>

スクリプト名をwatch.phpにしたら http://○○○.××/△△△/watch.php?v=Wv20U7rJuwU って感じで呼び出すようにしてくださいね。(Wv20U7rJuwUの部分がビデオIDになります)

2月28日追記: このPHPを呼び出すテレビやプレーヤーなどを自作される場合、LSLはYouTube-mp4アドレス変換スクリプトとかが参考になると思います。

3月22日追記: コメントにありますように、YouTubeの仕様が変わったようなので現在このスクリプトは使えません;;

2010年2月25日木曜日

新しいビューワーはユーチューブもOK

先日出たSecond Life Viewer 2 betaなんですが、まだベータ版なのにフランス語、ドイツ語、日本語のアップグレードガイドが用意されてたのでびっくりしましたw
http://wiki.secondlife.com/wiki/Viewer_2_Quick_Start_Guide

動画も結構アップロードされてますね。
http://www.youtube.com/Secondlife


メディアテクスチャに関係なくプリムの面にウェブページを設定できるようになって、表示させたページは普通にクリックも可能でフラッシュとかも動くようになったってことなんですかね。。。んー何かすごそうです。

内蔵ブラウザはGeckoだったのがWebkitに変わったらしいですね。早速インストールしてちょっとだけ試してみました。

おおぉ、表示したページのスクロールバーも動きます。それにここは自分の土地じゃなくて一般に開放されてるサンドボックスです。。。ってことは携帯テレビみたいなのとか簡単に作れそうですね。すごいっ@@

でも操作も全然変わってしまっててさっぱりわからなかったので、このまま続けて使ってみようって気にはなりませんでした。早めに慣れといたほうがいいんでしょうけどね^^;

2010年2月21日日曜日

サーバー消されたのでYouTube TV screen販売中止;;

MP4アドレス変換に使わせてもらってるyoutubemp4.comが時間帯によって重くて使えないことがよくあるので、前回販売中止したとき、うちでレンタルした無料サーバーにもスクリプトを置いて代用できるようにしてたんですが、アカウント消されちゃってその代替サーバーが使えなくなりました^^;

なのでユーチューブTVスクリーンは販売を中止することにします。今のところ販売再開の予定はありませんが、一応もう1ヶ所レンタルしてるサーバーがあるので、購入者様はお問い合わせくだされば、そちらのアドレス設定をお伝えできますので宜しくお願いします。

YouTube TV screen customer,
Sometimes YouTube to MP4 address convert server is busy and can't watch the TV. Therefore, I had an alternative convert server, but that server has been deleted... sorry.
I have stopped YouTube TV screen for sale now. But if you are a customer, you can get a setting of an another server for the TV. Please ask me.

2月26日追記: PHPの動作するサーバーをお持ちのお客様は、本日公開したPHPスクリプトをサーバーに設置して代用して頂くこともできますので宜しくお願いします。
If you have a PHP supported HTTP server, you may upload this PHP script and use your server for the TV.

2010年2月5日金曜日

Linux版Second LifeでYouTubeを視聴

Linuxは昔、緊急用みたいな感じでPCにインストールしてて、Windowsが壊れて立ち上がらなくなったときにずっと使ってたんですが、Windowsを修復インストールするとき消してしまったんですね。その古いLinux使ってたときはセカンドライフで動画再生ができなかったので、今回は新しいのをインストールして、LinuxでもホントにインワールドでYouTubeが見れるようになるか試してみました。

今回インストールしたのはFedora 12です。前使ってたのはたぶんFedora 7ぐらいだったと思うので、それと比べたらもう色々な部分が変わってしまってますね。特にグラフィックカードのメーカー純正ドライバをインストールするところで思いっきり躓いて悩んでしまいました。。。起動画面でXOrgのnouveauが既にロードされてるらしくて、Nvidiaのドライバに入れ替えられなかったんですよ。grub.confのkernelの行に vga=773 とか画面サイズを指定して起動する事で何とか解決したんですけどね^^;

それで本題ですが、結果はLinux版Second LifeでもYouTubeのMPEG4が見れました。ただFedoraは普通にFedora公式からインストールしただけの状態だと再生できないんですよ。

WindowsやMacのSecond Lifeは動画再生にQuickTimeが使用されますが、LinuxにはQuickTimeがないのでGStreamerを使うようになってるんですね。なのでTotemとかのプレーヤーでmp4ファイルが再生可能だったらOKだと思いますが、Fedora projectにはmp4対応してるGStreamer用プラグイン(H.264やAACに対応したコーデック)のパッケージが無かったんですよ。でも検索したらRPM FusionっていうところにFedora用のパッケージがあることがわかりました。
rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
rpm -Uvh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

ってやって、このへんのパッケージをインストールしたら見れるようになります^^
yum install gstreamer-ffmpeg gstreamer-plugins-bad gstreamer-plugins-ugly

18時10分頃追記: ドライバを入れ替えるとき vga=318 にしてたんですけど焦ってたのか間違い(正しくはvga=0x318)です。。。よく見たらコンソールが死んでましたw たぶん vga=773 にしたほうがいいと思うので直しました^^;;

2月11日追記: 土地のメディアにYouTubeを見られるようにしておくには、MP4アドレスにリダイレクト可能な外部サーバーを利用したアドレスを土地に設定するか、YouTube TV screenなどのユーチューブ対応機器が必要です。

2010年1月31日日曜日

クイックタイムって重い><

YouTubeの動画をMP4でダウンロードして、保存したファイルをQuickTimeプレーヤーで再生したら、コマが飛びまくりって感じで全然スムーズに再生されなかったんですね。

それはPCが古いので仕方ないかなって思ってたんですが、GOM PLAYERっていう動画再生ソフトをインストールして再生してみたら、コマ落ちが無かったのでびっくりしたんですよ@@

んー、でもMP4って何でWindows XPのメディアプレーヤーじゃ再生できないのかな?とか思って色々調べたら対応したデコーダー(コーデック?)を追加したら再生可能になるらしいことがわかったんですね。それで新しそうなものを探して、試しにインストールしてみたらWindows Media Playerでも快適に見れるようになりました^^
ffdshow tryouts
Haali Media Splitter
必要なものはこの2点です。2つとも普通にインストールして、後はmp4ファイルをWindows Media Playerに関連付けしたらOKだと思います。

4月9日追記: ffdshow_beta7_rev3154_20091209が出てたのでインストールしたんですが日本語が文字化けしてるような。。。http://sourceforge.net/projects/ffdshow-tryout/見たら、3月に出てるffdshow_rev3299_20100303_xxlがお勧め(最新テスト版?)みたいだったのでこのバージョンにインストールし直しました。

7月4日追記: Media Player ClassicMedia Player Classic - Home CinemaSMPlayerなども試してみましたが、どのプレーヤーも軽く再生できました。QuickTimeの重さが嘘みたいです。