home > YouTube Player を Flash に埋め込む

YouTube Player を Flash に埋め込む

August 13, 2010

YouTube のプレイヤー SWF(http://www.youtube.com/apiplayer?version=3)をロードすればできるようです。
ただし、Flash Player 10 以上。

フルスクリーンで埋め込んだデモ
http://www.publicroots.com/test/youtube/

package 
{
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.MovieClip;
import flash.events.Event;
import flash.net.URLRequest;
import flash.system.Security;

public class YouTubeApi extends MovieClip
{
private var _youtubePlayer:Object;

public function YouTubeApi()
{
Security.allowDomain("*");

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
//クロムレスプレイヤー(再生バーやコントローラなし)
loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));
/*
//埋め込みプレイヤー(再生バーやコントローラあり)の場合は下記
//loader.load("http://www.youtube.com/v/ +"ここに動画のID" + ?version=3");
loader.load(new URLRequest("http://www.youtube.com/v/yrcbBYZ3JWI?version=3"));
*/
}
private function initHandler(event:Event):void
{
_youtubePlayer = Loader(LoaderInfo(event.currentTarget).loader).content as Object;
addChild(_youtubePlayer as DisplayObject);
_youtubePlayer.addEventListener("onReady", onReadyHandler);
_youtubePlayer.addEventListener("onError", onErrorHandler);
_youtubePlayer.addEventListener("onStateChange", onStateChangeHandler);
_youtubePlayer.addEventListener("onPlaybackQualityChange", onPlaybackQualityChangeHandler);

}

private function onReadyHandler(event:Event):void
{
trace("ready", Object(event).data);
_youtubePlayer.setSize(500, 375);
//リサイズ設定
addEventListener(Event.ENTER_FRAME, onEnterFrame);

// OK GoのPVをロードして自動再生
_youtubePlayer.loadVideoById("V2fpgpanZAw");
}
private function onErrorHandler(event:Event):void
{
// error 150 となる場合は、指定した映像が「埋め込み拒否」されている。(どうしようもない)
trace("error", Object(event).data);
}
private function onStateChangeHandler(event:Event):void
{
// state -1 未スタート(SWFが読み込まれたときは -1 の onStateChange イベントが発行される)
// state 0 終了
// state 1 再生中
// state 2 一時停止
// state 3 バッファリング中
// state 5 停止(SWF が読み込まれ、キューに追加されて、再生可能になったら5の onStateChange イベントが発行される)
trace("state", Object(event).data);
}
private function onPlaybackQualityChangeHandler(event:Event):void
{
// クオリティを変更した場合
trace("quality", Object(event).data);
}
private function onEnterFrame(event:Event):void
{
var ww:Number = Math.floor(stage.stageWidth);
var hh:Number = Math.floor(stage.stageHeight);

var scale_w:Number = stage.stageWidth/500;
var scale_h:Number = stage.stageHeight/375;
var scale:Number = Math.max(scale_w,scale_h);//大きい比率を検出
_youtubePlayer.setSize(500*scale, 375*scale);

_youtubePlayer.x = -(ww - 500)/2;
_youtubePlayer.y = -(hh - 375)/2;
}
}
}

参考サイトはこちら
http://feb19.jp/blog/archives/000182.php
http://www.asatoban.jp/blog/?p=812



ブックマークする hatena del.ico.us


Comments

Post a Comment






Remember personal info