va代码 ?

- <?xml?version="1.0"?encoding="utf-8"?>??
- <mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"?layout="absolute"?height="312"?width="328"?creationComplete="init()">??
- <mx:Script>??
- ?<![CDATA[??
- ????
- ??import?mx.controls.Alert;??
- ??import?mx.events.SliderEvent;??
- ????
- ????
- ??private?var?vi:Video;??
- ??private?var?cam:Camera;????????
- ??private?var?inNs:NetStream;??
- ??private?var?outNs:NetStream;???
- ??private?var?nc:NetConnection;??
- ????
- ???
- ??private?var?_duration:Number;??????????????
- ??private?var?playPosition:Number;???????????
- ????
- ??private?var?flag:Boolean?=?false;??????????
- ??private?var?lastVideoName:String?=?"";?????
- ??private?var?_url:String?=?"rtmp://127.0.0.1:1935/videoRec";??
- ????
- ??public?function?init():void{??
- ???setupCamera();??????
- ??}??
- ????
- ??public?function?clickConnect():void{??
- ????nc?=?new?NetConnection();??
- ????nc.addEventListener(NetStatusEvent.NET_STATUS,nsHandler);??
- ?????????????nc.connect(_url);???????????
- ??}????
- ??public?function?nsHandler(evt:NetStatusEvent):void{??
- ???if?(evt.info.code?==?"NetConnection.Connect.Success"){?????????????
- ????playClick();??
- ????}else{??
- ?????Alert.show("连接失败");??????
- ????}??????
- ??}??
- ????
- ??public?function?playClick():void{?????
- ???if(vi?!=?null){??
- ????vi.clear();??
- ????vdisplay.removeChild(vi);??
- ????vi?=?new?Video();??
- ????vi.width?=?320;??
- ????vi.height?=?240;??
- ????vi.attachCamera(cam);??
- ???????vdisplay.addChild(vi);??
- ???}??
- ???outNs?=?new?NetStream(nc);?????????
- ???outNs.attachCamera(cam);?????
- ?????
- ???lastVideoName?=?"red5RecordDemo_"?+?Math.random()+getTimer();??
- ???outNs.publish(lastVideoName,?"record");??
- ????????
- ???startRec.enabled?=?false;??
- ???stopRec.enabled?=?true;?????
- ??}????
- ????
- ??public?function?stopClick():void{??
- ?????
- ???outNs.close();???
- ???vi.clear();??
- ???vdisplay.removeChild(vi);????
- ?????
- ???startRec.enabled?=?true;??
- ?????
- ???stopRec.enabled?=?false;??
- ??}????
- ????
- ??public?function?playLastVideo():void{??
- ?????if(nc!=null){??
- ????????
- ???????inNs?=?new?NetStream(nc);??
- ??????
- ????var?customClient:Object?=?new?Object();??
- ????customClient.onMetaData?=?function(metadata:Object):void{??
- ?????_duration?=?metadata.duration;???
- ?????t_sh.maximum?=?_duration;??
- ????}??
- ????inNs.client?=?customClient;??
- ??????
- ????vi?=?new?Video();??
- ????vi.width?=?320;??
- ????vi.height?=?240;??
- ????vi.attachNetStream(inNs);??
- ????vdisplay.addChild(vi);???
- ????inNs.play(lastVideoName+".flv");??
- ????addEventListener(Event.ENTER_FRAME,onEnterFrame);???
- ?????}??
- ??}??
- ????
- ????
- ??public?function?setupCamera():void{??
- ?????
- ???cam?=?Camera.getCamera();???
- ???if(cam?!=?null){??
- ????cam.addEventListener(StatusEvent.STATUS,onStatusHandler);??
- ????cam.setMode(320,240,30);??
- ????cam.setQuality(0,70);????
- ????vi?=?new?Video();??
- ????vi.width?=?320;??
- ????vi.height?=?240;??
- ????vi.attachCamera(cam);??
- ????vdisplay.addChild(vi);??
- ??
- ???}??
- ??
- ??
- ??
- ??
- ??
- ??}??
- ????
- ??private?function?onStatusHandler(event:StatusEvent):void{??
- ???if(!cam.muted){?????
- ????startRec.enabled?=?true;??
- ???}else{??
- ????Alert.show("错误:无法链接到活动摄像头!")??
- ???}??
- ???cam.removeEventListener(StatusEvent.STATUS,onStatusHandler);??
- ??}??
- ????
- ??public?function?thumbPress(event:SliderEvent):void{??
- ??????inNs.togglePause();??
- ???removeEventListener(Event.ENTER_FRAME,onEnterFrame);??
- ??}??
- ??private?function?thumbChanges(event:SliderEvent):void{??
- ????playPosition?=?t_sh.value;??????????
- ????inNs.seek(playPosition);???
- ????addEventListener(Event.ENTER_FRAME,onEnterFrame);??
- ??}??
- ??private?function?thumbRelease(event:SliderEvent):void{????????
- ???inNs.seek(playPosition);???????????????????????????????
- ???inNs.togglePause();??
- ??????addEventListener(Event.ENTER_FRAME,onEnterFrame);??
- ??}??
- ??public?function?onEnterFrame(event:Event):void{??
- ???if(_duration?>?0?&&?inNs.time?>?0){???
- ????t_sh.value?=inNs.time;??
- ????lbtime.text?=?formatTimes(inNs.time)?+?"?/?"+?formatTimes(_duration);??
- ???}?????
- ???if(formatTimes(inNs.time)==formatTimes(_duration)){??????
- ??????if(flag==true){??????????
- ?????removeEventListener(Event.ENTER_FRAME,onEnterFrame);??
- ?????inNs.close();??????
- ?????lbtime.text?=?"0:00?/?"+?formatTimes(_duration);??
- ????}??
- ???????setTimeout(function():void{flag?=?true;},1000);??
- ???}??
- ???}??
- ????
- ??private?function?formatTimes(value:int):String{??
- ???var?result:String?=?(value?%?60).toString();??
- ???if?(result.length?==?1){??
- ????result?=?Math.floor(value?/?60).toString()?+?":0"?+?result;??
- ???}?else?{??
- ????result?=?Math.floor(value?/?60).toString()?+?":"?+?result;??
- ???}??
- ???return?result;??
- ??}????
- ????
- ??
- ??
- ??
- ??
- ??
- ??
- ??
- ?]]>??
- </mx:Script>??
- ?<mx:VideoDisplay?x="0"?y="0"?width="324.5"?height="240"?id="vdisplay"/>??
- ?<mx:Button?x="10"?y="250"?label="开始录制"?id="startRec"?click="clickConnect()"?enabled="false"?/>??
- ?<mx:Button?x="10"?y="280"?label="停止录制"?width="70"?id="stopRec"?click="stopClick()"?enabled="false"?/>??
- ?<mx:Button?x="253"?y="268"?label="播放"?click="playLastVideo()"??/>??
- ?<mx:HSlider?x="98"?y="248"?width="143"?id="t_sh"?thumbPress="thumbPress(event)"?thumbRelease="thumbRelease(event)"?change="thumbChanges(event)"/>??
- ?<mx:Label?x="237"?y="242"?text="0:00/0:00"?width="89"?textAlign="center"?height="18"?id="lbtime"/>??
- ?<!--mx:HSlider?x="98"?y="278"?width="91"?id="th_sound"?minimum="0"?maximum="1"?value="{vdisplay.volume}"?change="sound_thumbChanges(event)"?thumbRelease="sound_thumbRelease(event)"/>??
- ?<mx:Label?x="187"?y="270"?text="sound"?height="20"?width="44"?textAlign="center"/-->???
- </mx:Application>??
- ??
- 注:??
- ??
- 1.red5做服务器,后面代码其实什么也没有,最关键的还是前端flex代码,当然还有些配置问题,相信做过red5??simple???demo的朋友应该知道,在这就不一一细说了.??
- ??
- 2.文章中注释地方是音频的录制,因为本机上无麦克风所以就屏掉了。如果要加上些功能,去掉注释即可。??
- ??
- 3.以下是前端显示图??

- 描述: 前端显示图
- 大
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|