— 【AS3】ActionScript3.0でFMS使ってライブカメラする
Posted: Dec 28, 2007, 7:52 pm | Author: cyberryo | Category: Dialy | Tags: ActionScript, Flash
ライブカメラを使っている自社サイトをAS3で組み直すことに。
まずは基盤になるライブカメラのところをAS3化。
サクサクと作ってしまったので冗長な感じかも。。。
でも、ActoinScript2.0の情報ならネット上にわんさかありますが、ActionScript3.0はあまりお目にかかれないようでしたので参考程度になればと。
FMSへ送信用
camSend.as
package {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.net.*;public class camSend extends Sprite {
private var camera:Camera;
private var video:Video;
private var nc:NetConnection;
private var stream:NetStream;public function camSend() {
init();
}private function init():void {
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
camera = Camera.getCamera();
if(camera != null){
setupCamera();
}else{
trace("カメラがありません");
return;
}
nc = new NetConnection();
nc.objectEncoding = ObjectEncoding.AMF0;
nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus);
nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onSecurityError);
nc.connect("rtmp://myfms.com/webcam"); // ストリーミングサーバーアドレス
}private function sendVideo():void {
stream = new NetStream(nc);
stream.attachCamera(camera);
stream.publish("myvideo");
}private function setupCamera():void {
video = new Video(camera.width,camera.height);
video.attachCamera(camera);
addChild(video);
}private function onNetStatus(evt:NetStatusEvent):void {
switch(evt.info.code){
case "NetConnection.Connect.Success":
trace("接続成功");
sendVideo();
break;
case "NetConnection.Connect.Closed":
trace("接続解除");
break;
case "NetConnection.Connect.Faild":
trace("接続失敗");
break;
case "NetConnection.Connect.Rejected":
trace("接続拒否");
break;
default:
trace("evt.info.code");
}
}private function onSecurityError(evt:SecurityErrorEvent):void {
trace("セキュリティエラー");
}private function onAsyncError(evt:AsyncErrorEvent):void {
trace("同期エラー");
}}
}
FMSから受信用(公開用)
camReceive.as
package {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.net.*;public class camReceive extends Sprite {
private var video:Video;
private var nc:NetConnection;
private var stream:NetStream;public function camReceive() {
init();
}private function init():void {
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
nc = new NetConnection();
nc.objectEncoding = ObjectEncoding.AMF0;
nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus);
nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onSecurityError);
nc.connect("rtmp://myfms.com/webcam"); //ストリーミングサーバーアドレス
}private function receiveVideo():void {
video = new Video(320,240);
stream = new NetStream(nc);
video.attachNetStream(stream);
stream.play("myvideo");
addChild(video);
}private function onNetStatus(evt:NetStatusEvent):void {
switch(evt.info.code){
case "NetConnection.Connect.Success":
trace("接続成功");
receiveVideo();
break;
case "NetConnection.Connect.Closed":
trace("接続解除");
break;
case "NetConnection.Connect.Faild":
trace("接続失敗");
break;
case "NetConnection.Connect.Rejected":
trace("接続拒否");
break;
default:
trace("evt.info.code");
}
}private function onSecurityError(evt:SecurityErrorEvent):void {
trace("セキュリティーエラー");
}private function onAsyncError(evt:AsyncErrorEvent):void {
trace("同期エラー");
}}
}