YoutubeAPI Test(クロムレスプレーヤー)
YoutubeのビデオをBitmapDataでキャプチャしようとすると「Error #2121: セキュリティサンドボックス侵害 : Security.allowDomain を呼び出すことによって回避できる場合があります。」ってのが出るため、キャプチャして画像処理してあーだこーだしようとしたけど時間切れで今回は断念。
このYoutubeのセキュリティサンドボックス侵害ってsystem.Securityで回避できるものなのでしょうか?
ちなみに、自分が借りてるレンタルサーバなら「crossdomain-proxy.php」を設置して プロキシphp経由で読み込めばエラーは出なくなったのですが、wonderflでそのようなことはできるのでしょうか?
/**
* Copyright mousepancyo ( http://wonderfl.net/user/mousepancyo )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/m4NI
*/
package {
import flash.display.Sprite;
import flash.display.Loader;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.system.Security;
import flash.system.LoaderContext;
import com.bit101.components.*;
[SWF(backgroundColor="0", width="465", height="465", frameRate="30")]
public class Main extends Sprite{
private const APIPLAYER:String = "http://www.youtube.com/apiplayer?version=3"
private var _player:Object;
private var _loader:Loader;
private var _videoID:String;
private var _btn:PushButton;
private var _input:InputText
private var _isAddedPlayer:Boolean;
public function Main() {
graphics.beginFill(0)
graphics.drawRect(0, 0, 465, 465)
graphics.endFill()
//
Security.allowDomain("*");
Security.loadPolicyFile("http://s.ytimg.com/crossdomain.xml");
var context:LoaderContext = new LoaderContext(true);
_loader = new Loader()
_loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
_loader.load(new URLRequest(APIPLAYER), context);
//
var label:Label = new Label(this, 180, 380, "Input Youtube VideoID");
_input = new InputText(this, 180, 400, "yO1XA9zt9UA");
_btn = new PushButton(this, 180, 420, "Load Video", btnClick);
}
private function onLoaderInit(event:Event):void {
_loader.content.addEventListener("onReady", onPlayerReady);
_loader.content.addEventListener("onError", onPlayerError);
_loader.content.addEventListener("onStateChange", onPlayerStateChange);
_loader.content.addEventListener("onPlaybackQualityChange", onVideoPlaybackQualityChange);
}
private function onPlayerReady(e:Event):void {
_player = _loader.content;
_player.scaleX = _player.scaleY = .726
_player.y = stage.stageHeight * .5 - _player.height * .6
}
private function onPlayerError(e:Event):void { }
private function onPlayerStateChange(e:Event):void { }
private function onVideoPlaybackQualityChange(e:Event):void { }
private function btnClick(e:MouseEvent):void{
if(!_isAddedPlayer){
addChild(_loader);
_isAddedPlayer = true;
}
_player.loadVideoById(_input.text);
}
}
}