AS3和FMS的视频录制小例子


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="connectFMS()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private var vi:Video;
private var cam:Camera;
private var outStream:NetStream;
private var nc:NetConnection;
private var connectionURL:String="rtmp://192.168.1.101:1935/test";

private function connectFMS():void{
//创建连接
nc = new NetConnection();
//回调为本机客户端
nc.client = this;
//根据url连接
nc.connect(connectionURL);
//添加 状态变化处理函数
nc.addEventListener(NetStatusEvent.NET_STATUS,ncHandler);
}


private function ncHandler(evt:NetStatusEvent):void
{
//如果连接成功
if (evt.info.code == "NetConnection.Connect.Success")
{
Alert.show("连接成功", "提示");
//录制视频
beginRec();
}
else
{
Alert.show("连接失败", "提示");
}
}

private function beginRec():void{
//得到当前本机视频设备的流对象
cam = Camera.getCamera();
if(cam == null){
Alert.show("无摄像头","提示");
}else{
//大小与帧率
cam.setMode(320,240,30);
//设置清晰度
cam.setQuality(0,100);
//输出流对象 封装fms服务器连接
outStream = new NetStream(nc);
//服务器回调客户端为本机
outStream.client = this;
//激活视频
outStream.attachCamera(cam);
//发布 参数一为视频name 参数二为视频传送策略
outStream.publish("1111","live");
//监听流的状态
outStream.addEventListener(NetStatusEvent.NET_STATUS,netHandler);
}
}
private function netHandler(evt:NetStatusEvent):void{
//如果已经开始
if(evt.info.code == "NetStream.Publish.Start"){
//从FMS服务器得到视频流
getVideo();
}
}

private function getVideo():void
{
//创建输入流 封装fms连接
var inStream:NetStream=new NetStream(nc);
//服务器回调为本机
inStream.client=this;
//订阅名字为connectName的流对象
inStream.play("1111"); //1111为流的名字,对应于视频流发布端的publish("1111","live").
//创建视频播放对象
vi=new Video();
vi.width=viewDisplay.width;
vi.height=viewDisplay.height;
vi.smoothing=true;
//封装输入流
vi.attachNetStream(inStream);
//加入到界面上的播放器
viewDisplay.addChild(vi);
}

]]>
</mx:Script>

<mx:Button label="发送视频" click=" beginRec()"/>
<mx:VideoDisplay id="viewDisplay" x="141" y="125" width="150" height="150"/>
<mx:Button x="141" y="95" label="开始接受视频流" click="getVideo()"/>

</mx:Application>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值