以前一直以为录制视频是一件很麻烦的事情,这两天忙中偷闲研究了下FMS,没想到利用FMS和FLEX一切来得这么简单,刚研究这DD,一些内部机制都没能理解得很通透,如果那里说得不够准确或有误,欢迎大家拍砖,先说说它的原理:FLEX利用RTMP协议来与FMS也就是服务端取得连接,RTMP与HTTP的最大不同之处在于,RTMP是一个有状态的协议,它不仅可以一直与客户端保持连接,而且可以监控客户端的行为并主动与之交互,而HTTP则是一个无状态的协议,当客户端主动发出请求,服务端响应完毕后,一次会话过程序就结束了.而在FLEX中,主要用到了NetConnection和NetStream类,有过编程经验的朋友一眼就能看出来这两个家伙是干嘛的吧.小弟就不多说了.
先看代码吧:想表达的在注释中:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp();">
<mx:Script>
<![CDATA[
import mx.messaging.errors.NoChannelAvailableError;
private var nc:NetConnection;
private var ns:NetStream;
private var rtmpNow:String;
private var msg:Boolean;
private var metaSniffer:Object;
private var dur:Number;
private var cam:Camera;
private var mic:Microphone;
private var vid1:Video;
private function initApp():void{
//初始化一个网络连接
nc=new NetConnection();
//为这个连接添加事件,这个事件有返回连接状态
nc.addEventListener(NetStatusEvent.NET_STATUS,checkConnect);
//这是连接的地址其实就是在你FMS的安装目录里,Applications下新建一个vid2的文件夹,这个文件夹可以看成是你的工程名了
//至于后面的recordings是你录制视频时存放视频的文件夹
rtmpNow="rtmp://localhost/vid2/recordings";
//开始连接
nc.connect(rtmpNow);
addMedia();
}
private function checkConnect(event:NetStatusEvent):void{
//根据连接返回的状态信息判断是滞连接成功
msg=(event.info.code=="NetConnection.Connect.Success");
msgError.text=event.info.code;
if(msg){
//如果成功,就利用些连接建立一个流,为以后的录制传输数据
ns=new NetStream(nc);
msgError.text="establish netStream";
}
}
private function startRecord(e:Event):void{
if(ns){
msgError.text="start record";
//开始录制时要加载micphone和摄像头
ns.attachAudio(mic);
ns.attachCamera(cam);
//这里是关键,从这里开始,就开始录制了,input.text是录制的视频文件的名称
ns.publish(input.text,"record");
}
}
private function stop(event:Event):void{
//和JAVA里类似,流类的东西一定要记得关闭
ns.play(false);
ns.close();
msgError.text="stop";
}
private function addMedia ():void
{
//获取系统的摄像头
cam=Camera.getCamera();
//设定宽,高,以及帧
cam.setMode (240,180,24);
//设定画面质量
cam.setQuality (0,90);
//获取系统的microphone
mic=Microphone.getMicrophone();
//让videoDisplay加载摄像头
vv.attachCamera(cam);
msgError.text="initnize";
}
]]>
</mx:Script>
<mx:VBox id="myVb">
<mx:VideoDisplay id="vv" width="400" height="300"/>
<mx:Button label="record" id="btn" click="startRecord(event);"/>
<mx:Button label="play" id="stopbtn" click="stop(event);"/>
<mx:TextInput id="input"/>
<mx:TextArea id="msgError" backgroundColor="red"/>
</mx:VBox>
</mx:Application>
分享到:
相关推荐
FMS+FLEX-----使用远程共享对象实现多人实时在线聊天 说明:这是我在网上看到的,收集并整理了一下。 因为我的积分不多了,所以虽然不是原创,但还是要一点资源分的。大家见谅。 压缩包中有说明文档和源码。说明...
By:闪闪威廉@nju中文版流媒体服务器---fms3教程。
利用FLEX编写的摄像头录制视频文件,并上传到FMS服务器,同时就如何安装FMS服务器及配置进行说明.
首先下载fms服务器安装好,并在fms安装目录的applications目录下新建一个test_video文件夹目录,一定要与flext程序中rtmp://127.0.0.1/test_video的test_video要一致,fms服务器启动后,执行flex程序,即可实现
Flex+FMS写的视频聊天,在本机亲测通过。但唯一不足得是在别的机子上连接不成功。我也不知道为什么。望有才之士能完善。huzhaohui1992@qq.com 如能完善,请给我邮箱一份,在下感激不尽。
FMS视频录制监控,播放,完美实现Demo。
EdhRecPost是一个WEB插件服务项目,提供swf文件形式的插件,能让网页设计者十分容易地在网页中实现在线录制,并保存音频和视频文件到服务器上。比如:可以学校网站上增加学生在线表演模块,在各种BBS、BLOG中增加...
python库。 资源全名:mypy-boto3-fms-1.14.54.1.tar.gz
python库。 资源全名:mypy-boto3-fms-1.10.42.1.tar.gz
python库。 资源全名:mypy-boto3-fms-1.16.9.0.tar.gz
资源来自pypi官网。 资源全名:mypy-boto3-fms-1.18.50.tar.gz
Flex FMS 发送和接收视频的实例(含FMS的配置文档和Flex源码)
资源来自pypi官网。 资源全名:mypy-boto3-fms-1.14.8.0.tar.gz
资源来自pypi官网。 资源全名:mypy-boto3-fms-1.11.11.0.tar.gz
FMS+FLASH+在线视频录制+ASP+Access. <br>编者的话 <br>自己骗写的,下载本文件的朋友请自己研究,该注释的,我已经打好了详细注释,修改不困难,这样还不懂的话我也没有办法,另外还附了播放器。 <br>不...
python库。 资源全名:mypy-boto3-fms-1.17.70.post2.tar.gz
免费美女视频聊天,多人视频会议功能加强版本(Fms3和Flex开发(附源码)) 中文说明文档和代码, 简单明了好资料
利用flex和FMS建立聊天室,fms为源码
资源分类:Python库 所属语言:Python 资源全名:mypy-boto3-fms-1.18.55.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 资源全名:mypy-boto3-fms-1.14.55.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059