FMS3系列(五):通过FMS实现时时视频聊天_第1页
FMS3系列(五):通过FMS实现时时视频聊天_第2页
FMS3系列(五):通过FMS实现时时视频聊天_第3页
FMS3系列(五):通过FMS实现时时视频聊天_第4页
FMS3系列(五):通过FMS实现时时视频聊天_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、FMS3系列(五):通过FMS实现时时视频聊天(Flash|Flex)       本系列的前几篇文章中分别介绍了,连接FMS服务器、建立播放程序以及在线视频录制以及回放等功能的实现。相信看过前面几篇文章的朋友已经对FMS有了一定的认识,并熟悉了常用的编程模式。本文将结合前面几篇文章所出现的技术点,来实现一个时时视频聊天程序。      通过FMS实现视频时时聊天其实很简单,也就是操作时时流。如果是单向视频聊天,则两端一边一边为发布端一边为订阅端,如果是双向视频聊天,则两边都

2、分别是发布端和订阅端。      如果从技术实现上来分析,单向视频聊天就是一边发布流另一边播放流,双向视频聊天则是两边都需要提供两个流,一个负责发布流,一个负责播放流。在说专业点就是一个创建流并且发送到服务器的客户端叫发布,一个创建流来接受内容的客户端叫订阅,当同一个客户端同是发布和订阅时,它必须创建两个流,一个是输出流,一个是接受流。       说了这么多下面看看具体是怎么实现的,要实现视频聊天上面分析过,就是一边发布时时视频流一边播放,这同样离不开连接FMS,

3、代码如下:private function onPublishClick(evt:MouseEvent):void      nc = new NetConnection();      nc.connect("rtmp:/localhost/LiveStreams");      nc.addEventListener(NetStatusEven

4、t.NET_STATUS,onNetStatusHandler);        通过点击按扭连接(NetConnection)FMS服务器,然后向FMS发布(publish)视频流,达到视频发布的目的。这里需要注意一点,在发布方法publish()中后一参数为“live”,表示时时视频流。以live的形式发布的流不会在FMS里生成.fla文件,不同于“record”录制视频流生成.flv的视频文件。private function onNetStatusHandler(evt:NetStatu

5、sEvent):void        trace(.code);       if(.code="NetConnection.Connect.Success")                  ns=new

6、0;NetStream(nc);           ns.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);           ns.client=new CustomClient();        

7、0;  ns.attachCamera(cam);           ns.attachAudio(mic);           ns.publish(txtInput.text,"live");           

8、0;  实现视频发布的核心技术点就是获取视频、音频数据,分别通过Camera和Microphone的静态方法实现。参考代码:public function PublishStream():void    btnPublish.label="发布视频"    btnPublish.addEventListener(MouseEvent.CLICK,onPublishClick);      

9、0;         /获取视频和声音,并将视频显示到Flash界面    cam = Camera.getCamera();    mic = Microphone.getMicrophone();    video = new Video(320,240);    video

10、.attachCamera(cam);    video.x=20;    video.y=20;    addChild(video);       通过以上步骤就完成了视频聊天的视频流发布端的开发,完整的示例代码如下:package    import .*;    import flash.events

11、.*;    import flash.display.*;    import flash.media.*;    import fl.controls.*;        public class PublishStream extends Sprite      

12、      private var video:Video;        private var nc:NetConnection;        private var ns:NetStream;        private 

13、;var cam:Camera;        private var mic:Microphone;                public function PublishStream():void        

14、0;           btnPublish.label="发布视频"            btnPublish.addEventListener(MouseEvent.CLICK,onPublishClick);           

15、             /获取视频和声音,并将视频显示到Flash界面            cam = Camera.getCamera();            mic = Micr

16、ophone.getMicrophone();            video = new Video(320,240);            video.attachCamera(cam);           &

17、#160;video.x=20;            video.y=20;            addChild(video);                   

18、;     private function onPublishClick(evt:MouseEvent):void                    nc = new NetConnection();        

19、;    nc.connect("rtmp:/localhost/LiveStreams");            nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);              &

20、#160;         private function onNetStatusHandler(evt:NetStatusEvent):void                    trace(.code);     

21、       if(.code="NetConnection.Connect.Success")                            ns=new NetStream(nc); 

22、;               ns.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);                ns.client=new CustomClient();  &

23、#160;             ns.attachCamera(cam);                ns.attachAudio(mic);             &#

24、160;  ns.publish(txtInput.text,"live");                               视频接收端相对发布端更简单,提供一个NetConnetion连接到发布端的FMS,通过NetStream播放时

25、时视频流就完成。代码很简单,基本上都是在本系列前几篇文章中出现过的代码片段整合而成,详细见下代码块:package    import .*;    import flash.events.*;    import flash.display.*;    import flash.media.*;        pub

26、lic class LiveStream extends Sprite            private var video:Video;        private var nc:NetConnection;        priv

27、ate var ns:NetStream;                public function LiveStream():void                    nc =&

28、#160;new NetConnection();            nc.connect("rtmp:/localhost/LiveStreams");            nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler); &#

29、160;                      private function onNetStatusHandler(evt:NetStatusEvent):void               

30、0;    if(.code="NetConnection.Connect.Success")                            ns=new NetStream(nc);                ns.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);        &#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论