读书人

应用red5录像

发布时间: 2012-11-17 11:14:15 作者: rapoo

使用red5录像

Red5是一个采用Java开发开源的Flash流媒体服务器。它支持:把音频(MP3)和视频(FLV)转换成播放流; 录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。Red5使用RSTP作为流媒体传输协议,在其自带的一些示例中演示了在线录制,flash流媒体播放,在线聊天,视频会议等一些基本功能。

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> <mx:Script> <![CDATA[ import mx.controls.Alert; private var nc:NetConnection = null; private var ns:NetStream = null; private var video:Video = null; private var camera:Camera = null;//定义一个摄像头 private var mic:Microphone; //定义一个麦克风 private var rtmp_url:String = "";// "rtmp://192.168.61.113/TestRed5"; private var videoName:String = ""; //视频保存名字 private function init():void{ //nc = new NetConnection(); setupCameraAndMic(); } private function setupCameraAndMic():void{ camera = Camera.getCamera(); if(camera != null){ camera.addEventListener(StatusEvent.STATUS,cameraStatus); camera.setMode(320,240,30); camera.setQuality(0,70); video = new Video(); video.width = 320; video.height = 240; video.attachCamera(camera); videoPlay.addChild(video); } mic = Microphone.getMicrophone(); if(mic != null){ mic.addEventListener(StatusEvent.STATUS,micStatus); mic.setSilenceLevel(0,-1); //设置麦克风保持活动状态并持续接收集音频数据 mic.gain = 80; //设置麦克风声音大小 } } private function cameraStatus(event:StatusEvent):void{ if(!camera.muted){ startRecord.enabled = true; //error_label.text = error_label.text + "1"; }else{ error_label.text = error_label.text + " 无法找到摄像头" } //camera.removeEventListener(StatusEvent.STATUS,cameraStatus); } /* 好像麦克风没法检测,测试过拔掉麦克风,但是没效果 */ private function micStatus(event:StatusEvent):void{ if(!mic.muted){ startRecord.enabled = true; //error_label.text = error_label.text + "2"; }else{ error_label.text = error_label.text + " 无法找到麦克风"; } //mic.removeEventListener(StatusEvent.STATUS,micStatus); } /*点击 开始录像 按钮*/ private function clickStartRecord():void{ nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS,nsHandler); var name : String = root.loaderInfo.parameters.name; --从外界出入的参数//rtmp_url = "rtmp://192.168.61.113/TestRed5";rtmp_url = "rtmp://" + name + "/TestRed5";error_label.text=rtmp_url + name;//error_label.text=rtmp_url + name; nc.connect(rtmp_url); //连接red5 //doStart(); } private function nsHandler(evt:NetStatusEvent):void{ if(evt.info.code == "NetConnection.Connect.Success"){ //如果连接成功 doStart(); }else{ Alert.show("连接失败"); } } /*开始录像*/ private function doStart():void{ if(video != null){ video.clear(); videoPlay.removeChild(video); video = new Video(); video.width = 320; video.height = 240; video.attachCamera(camera); videoPlay.addChild(video); } ns = new NetStream(nc); ns.attachCamera(camera); ns.attachAudio(mic); videoName = "vincent_"+Math.random()+getTimer(); ns.publish(videoName,"record"); startRecord.enabled = false; stopRecord.enabled = true; } private function clickStopRecord():void{ ns.close(); video.clear(); videoPlay.removeChild(video); startRecord.enabled = true; stopRecord.enabled = false; init();/*重新初始化Camera,否则Camera会默认使用完了,不再显示图像*/ } ]]> </mx:Script> <mx:Panel x="213" y="175" width="360.5" height="301" layout="absolute"> <mx:VideoDisplay x="10" y="10" width="320" height="240" id="videoPlay"/> </mx:Panel> <mx:Button x="270" y="498" label="开始录像" id="startRecord" click="clickStartRecord()"/> <mx:Button x="432" y="498" label="停止录像" id="stopRecord" click="clickStopRecord()" enabled="false"/> <!-- <mx:Button x="442" y="498" label="播放录像" id="playRecord" enabled="false"/> --> <mx:Label text="错误:" x="213" y="544" width="360.5" height="25" id="error_label" fontSize="12"/> </mx:Application> <%@ page language="java" import="java.util.*" pageEncoding="gbk"%><html> <head> <title>视频录像</title> </head> <body> <center> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="400" height="350" id="myFlash"> <param name="movie" value="videoRecorder2.swf"/> <param name="quality" value="high"/> <param name="flashvars" value="name=192.168.61.113" /> --传参数给flash <embed src="videoRecorder2.swf" quality="high" width="400" height="350" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" name="myFlash" swLiveConnect="true" flashvars="name=192.168.61.113" /> </object> <br/> <font color="red">温馨提示:在进行正式视频录像前,请先录制一小段视频<br/>以测试各种设备(特别是麦克风)是否能工作正常。</font> </center> </body></html>?启动相关服务,访问相关页面即可进行视频录像了。

1 楼 tancai0118 2011-12-08 很详细很好哦强力支持你

读书人网 >编程

热点推荐