搜档网
当前位置:搜档网 › flash as3 获取摄像头 直播

flash as3 获取摄像头 直播

?package
{
import flash.display.Sprite;
import https://www.sodocs.net/doc/f812743248.html,StatusEvent;
import flash.events.StatusEvent;
import flash.media.Camera;
import flash.media.Microphone;
import flash.media.Video;
import https://www.sodocs.net/doc/f812743248.html,Connection;
import https://www.sodocs.net/doc/f812743248.html,Stream;
//import flash.media.SoundTransform;
// import flash.media.SoundCodec;
/**
* ...
* @author FrostYen
*/
public class rec extends Sprite
{
private var netConn:NetConnection;
private var netStream:NetStream;
private var camera:Camera;
private var video:Video;
private var rtmp:String;
private var microphone:Microphone;
public function rec() {
init();
}

private function init():void
{
//初始化一个网络连接
netConn = new NetConnection();
//为这个连接添加事件,这个事件有返回连接状态
netConn.addEventListener(https://www.sodocs.net/doc/f812743248.html,_STATUS, onNetStatus);
//这是连接的地址,其实就是在你FMS的安装目录里,Applications下新建一个yan的文件夹,录制的视频会保存在这个yan文件夹下自动生成的streams/_definst_文件夹下,
rtmp = "rtmp://localhost/live";
//开始连接
netConn.connect(rtmp);
//获取系统的microphone
microphone = Microphone.getMicrophone();

// microphone.gain = 60;
microphone.rate = 11;
microphone.setUseEchoSuppression(true);
microphone.setLoopBack(true);
microphone.setSilenceLevel(5, 1000);
// microphone.setLoopBack(true);

// microphone.codec = SoundCodec.SPEEX;
// var transform:SoundTransform=new SoundTransform(0.7,0);
// microphone.soundTransform = transform;

//获取系统的摄像头
camera = Camera.getCamera();
if (camera == null) {
trace("未检测到摄像头");
}else {

//设定宽,高,以及帧频
camera.setMode (240, 180, 24);
// camera.setMode (500, 400, 100);
//设定画面质量
camera.setQuality(0,90);
video = new Video();
video.attachCamera(camera);
this.addChild(video);
camera.addEventListener(StatusEvent.STATUS, onCameraStatus);
}
}
//重要说明: 当引用或者创建Camera和Microphone对象时,Flash Player 将显示“隐私”对话框,用户可从中选择是允许还是拒绝访问摄像头和麦克风。 请确保应用程序窗口大小至少为 215 x 138 像素,这是显示对话框所需的最小尺寸。
private function onCameraStatus(e:StatusEvent):void
{

//status:StatusEvent — 在摄像头报告其状态时调度。 如果 code 属性的值为“Camera.Muted”,则表示用户拒绝 SWF 文件访问其摄像头。 如果 code 属性的值为“Camera.Unmuted”,则表示用户允许 SWF 文件访问其摄像头。
switch(e.code) {
case "Camera.Unmuted"://Camera access was allowed

break;
case "Camera.Muted"://Camera access was denied

break;
}
}

private function onN

etStatus(e:NetStatusEvent):void
{
//trace(https://www.sodocs.net/doc/f812743248.html,.code);
switch(https://www.sodocs.net/doc/f812743248.html,.code){
case "NetConnection.Connect.Success":
trace("链接成功")
if (netStream != null) {
netStream.close();
}
//建立一个流,为以后的录制传输数据
netStream = new NetStream(netConn);
// netStream.bufferTime=0;
camera.setQuality(163854,100);//设置视频质量

netStream.attachCamera(camera); //录制视频
netStream.attachAudio(microphone); //录制声音
netStream.publish("livestream","live");//直播
//netStream.publish("livestream","append");//追加性录制
// netStream.publish("livestream","record");//覆盖性录制
break;
case "NetConnection.Connect.Rejected":
trace("没有权限");
break;
default:
trace("连接服务器失败");
}
}

}

}

相关主题