您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > FMS3技术文档之六
6.1.铸造许多流制作一个全世界的广播系统的想法,看起来似乎有点雄心勃勃,但使用FMS3,它其实很容易。所有您需要做的只是发出一个包含音频和视频的流,使用”Studio”模块,并有一个“TV”模块settopickitup。你甚至可以设置带宽分配,所以Studio模块使用更多的客户端到服务器之间的带宽,TV模块是有利的,所以大部分的带宽分配是从服务器到客户端。此外,您可以在live和录制之间切换和从远程位置取得报告。你走出去,并聘请一名新闻队伍之前,记得每一个客户端连接到应用程序,FMS3生成一个新的流。FMS3既有的带宽和连接客户端的限制,所以根据您的fms3版本,您将可以服务更多或更少的客户。但是,您可以创建一个广播的应用程序,优化带宽,使您可以服务一样多的客户同时,尽可能的仍提供服务器端的最佳A/V。6.2.切换摄像头一个在电视演播室工作的任何人都知道,制作人切换摄影机,大部分演出,约有3个不同摄影机拍摄。因此,在从一个摄影机切换到另一个,是设立自己的全球视讯广播公司的一个关键技能。6.2.1.选择一个摄像头像在本书中讨论的多大数改变一样,AS3.0中的一个关键的改变是改变了取得一个摄像头的方法,在以前的as版本中,可以用一个整数作为参数来取得一个摄像头。现在在AS3.0中,用一个字符串。新的方式,仍然使用一个整数类型,当作一个字符串来做这事情。意思就是“4”代替4。这个数字是摄像头在设置窗口中的位置。在最上面的是”0”,每一个摄像头是参照其在清单中的相对位置。因此,第五个摄像头是“4”就像一个基于0的数组。以下一行显示了取得在名单中的第5个摄像头:varcam2:Camera=Camera.getCamera(”4″);Camera类的实例:cam2,现在是设置窗口的第5个摄像头。(实际上,使用第5个设置)。您可能还记得,如果没有使用参数,摄像头默认为最后选定的摄像头。例如,如果您最近使用的摄像头位置是”5”,下面的会设置为6(如果6在名单中):varcam1:Camera=Camera.getCamera();此举意味cam1将取得第六摄像头,而不是在FlashPlayer设置窗口的第一个-在位置”0”。6.2.2.切换两个摄像头看看如何切换摄像头,以下应用程序最少需要2个像头。如果你只能有一个摄像头,借用一个或使用一个虚拟网路摄影机,您可以在网上找到。(一个有趣的摄像头驱动程序对你的屏幕作为一个摄像头,提供您一个好屏幕捕获工具,它可用于Windows:=8)按以下步骤来建立应用程序:1.建立一个CameraSwitch.fla文件2.拖一个Button组件到库中3.在文档类中输入CameraSwitch4.建立一个CameraSwitch.as5.在CameraSwitch.as中输入以下代码:Example6-1.CameraSwitch.asCodeView:package{importflash.media.Camera;importflash.media.Microphone;importflash.media.Video;importflash.display.Sprite;importflash.net.NetConnection;importflash.net.NetStream;importflash.events.MouseEvent;importfl.controls.Button;publicclassCameraSwitchextendsSprite{privatevarcam1:Camera;privatevarcam2:Camera;privatevarbtn1:Button;privatevarbtn2:Button;privatevarmic:Microphone;privatevarvid:Video;publicfunctionCameraSwitch(){vid=newVideo(320,240);vid.x=100,vid.y=30;addChild(vid);mic=Microphone.getMicrophone();cam1=Camera.getCamera();cam1.setMode(320,240,15);cam2=Camera.getCamera(4);cam2.setMode(320,240,15);btn1=newButton();btn1.width=70;btn1.x=vid.x;btn1.y=vid.y+vid.height+10;btn1.label=Camera1;addChild(btn1);btn1.addEventListener(MouseEvent.CLICK,camOne);btn2=newButton();btn2.width=70btn2.x=btn1.x+100;btn2.y=vid.y+vid.height+10;btn2.label=Camera2;addChild(btn2);btn2.addEventListener(MouseEvent.CLICK,camTwo);}privatefunctioncamOne(e:MouseEvent){vid.attachCamera(cam1);}privatefunctioncamTwo(e:MouseEvent){vid.attachCamera(cam2);}}}在测试程序之前,请检查您的FlashPlayer的设置窗口,并且确保列表中至少两个设备。如果您只有两个设备,确定哪一个是默认的,然后输入字符串数字等。(例如,如果您只有两个设备和第一个是默认的[“0”],然后设置cam2为”1”)。在接下来的Studio应用程序。如果您只有一个单一的摄像头,你大概不会想添加了第二个摄像头。不过,如果您想要把您的studio成为一个更强大的应用程序,那么只需合并Example6-1的代码。建立一个最简单的广播工作室是一个很简单的操作,要求只不过是一个模块与送出现场的音频和视频流。为了使它更容易,特别是在最后,这种应用程序包括一个可重用的类,只不过是为设置流出和流入的流。这个类工作起来,就像一个实用工具类,您可以重新使用,以简化创建流式音频/视频的工作。6.3.1.公用流类第一步是建立公用类让音频和视频流可以简单的工作。它使用以下列几类:ClassesNetConnectionNetStreamCameraMicrophoneVideo这个公用类是扩展NetStream类,这个类有两个公共的方法:一个是流a/v出去(streamOut),一个是流进来(streamIn)。记住,一个流需要一个麦克风实例、一个摄像头实例、一个流的名称。streamOut方法的参数就是这三个元素。反过来,要播放进来的视频,所有你所需要的是视频对象的名称和流的名称。因为这首先是最低限度的应用,只有视频流出来,您可能感到奇怪,为什么理会streamIn方法呢?这个类的目的是:不是让一个应用程序更好的开发,而是多个。在稍后的章节,您将了解如何创造一个“receiver”,像电视机一样工作,而且您将高兴地看到,streamIn方法包括在内。最后,一个元素你可能不熟悉,是super语句。此公用类是扩展NetStream类。创造一个NetStream实例,你需要包含NetConnection参数。Super语句调用父类的NetConnection,所以,当你建造一个StreamAV实例,您可以包含必要的NetConnection参数。按照下列步骤创建此公用类。建立一个StreamAV.as.添加以下的代码Example6-2.StreamAV.aspackage{importflash.net.NetConnection;importflash.net.NetStream;importflash.media.Camera;importflash.media.Microphone;importflash.media.Video;publicclassStreamAVextendsNetStream{publicfunctionStreamAV(nc:NetConnection){super(nc);}publicfunctionstreamOut(mic:Microphone,cam:Camera,stream:String):void{this.attachAudio(mic);this.attachCamera(cam);this.publish(stream,live);}publicfunctionstreamIn(vid:Video,stream:String):void{vid.attachNetStream(this);this.play(stream);}}}6.3.2.基本的播出演播室第一个Studio模块非常简单。只是显示TVAnchor(你)和”ontheair”消息,让你知道你已经连接了。第5章中展示了怎么流进来和流出去。这个模块是简单的流出去-使用StreamAV类帮忙。ClassesNetConnectionNetStatusEventCameraMicrophoneVideoSpriteTextFieldStreamAV为什么NetStream类没有列在这个应用程序中?因为你将用新的公用类StreamAV处理。在Broadcast和TV两个应用程序中,使用StreamAV类。以下介绍建立一个studio的最少步骤:1.在MS3的applications目录中建立一个名为studio的目录2.建立一个Broadcast.fla与StreamAv.as同一目录3.可选,用一个照片来作为studio的背景,或者用flash画一个。使用矩形工具在背景上面画一个矩形,宽200高150,位置为x=150,y=190。这将作为监控屏幕。在左上角的位置,添加了第二个矩形与尺寸为W=75,为H=21,为Y=21,为Y=68.5。图6-1显示了总体思路,和图6-2显示什么,您会看到当您执行该脚本。图6-1.Studiobackdrop4.建立一个Broadcast.as与StreamAV.as和Broadcast.fla同一目录5.在Broadcast.as文件中添加以下代码Example6-3.BroadCast.aspackage{importflash.net.NetConnection;importflash.events.NetStatusEvent;importflash.media.Camera;importflash.media.Microphone;importflash.media.Video;importflash.display.Sprite;importflash.text.TextField;publicclassBroadcastextendsSprite{privatevarnc:NetConnection;privatevarcam:Camera;privatevarmic:Microphone;privatevarvid:Video;privatevarrtmpNow:String;privatevaronAir:String;privatevarbroadcast:StreamAV;privatevargood:Boolean;privatevartxtField:TextField;publicfunctionBroadcast(){//SetCameraandMicrophonenc=newNetConnection;nc.addEventListener(NetStatusEvent.NET_STATUS,checkConnect);cam=Camera.getCamera();cam.setMode(240,180,15);cam.setQuality(0,85);m
本文标题:FMS3技术文档之六
链接地址:https://www.777doc.com/doc-5161920 .html