顶着压力,昨天晚上研究了一个晚上red5和as3发现还是蛮有意思的
red5和fms都是个不错的东西,发现在压力下学东西学起来特别快哈
代码如下 | 复制代码 |
//预定义声明 import mx.utils.Delegate; //创建一个基本的网络连接对象 var nc:NetConnection = new NetConnection(); //连接到本地的Red5服务器 nc.connect("rtmp://localhost/online"); //将已和red5服务器建立连接的nc传递给NetStream var ns:NetStream = new NetStream(nc); //从摄像头和麦克风取得信息 var cam:Camera = Camera.get(); var mic:Microphone = Microphone.get(); //初始化摄像头和麦克风,调用函数 setupCameraMic(); //保存上次录制的内容,并进行清空 var lastVideoName:String = ""; //监听开始录制和停止录制两个按键的点击动作并进行相应的处理 playButton.addEventListener("click", Delegate.create(this, playClick)); stopButton.addEventListener("click", Delegate.create(this, stopClick)); //定义开始录制的playclick函数 function playClick():Void { //此flv文件是保存在 webapps/oflaDemo/streams/文件夹 //将摄像头和麦克风赋给ns ns.attachVideo(cam); ns.attachAudio(mic); //将摄像头信息赋给视频显示窗口,这样我们可以即时看到信息 videoContainer.attachVideo(cam); // 此处是定义存储名字的,用随机数目获得一个唯一的文件名 lastVideoName = "red5RecordDemo_" + random(getTimer()); ns.publish(lastVideoName, "record"); //锁定开始按键使其失效 playButton.enabled = false; //锁定停止按键使其生效 stopButton.enabled = true; } function stopClick():Void { //关闭ns与red5的连接 ns.close(); //并清空视频显示窗口 videoContainer.attachVideo(null); videoContainer.clear(); //锁定开始按键使其生效 playButton.enabled = true; //锁定停止按键使其失效 stopButton.enabled = false; //播放已经录制的视频 playLastVideo(); }
function playLastVideo():Void { // 传递录制的视频信息给视屏显示窗口 videoContainer.attachVideo(ns); //回访已经上次录制的视频片段 ns.play(lastVideoName); } function setupCameraMic():Void { //启动摄像头 cam = Camera.get(); //设置尺寸 cam.setMode(320, 240, 30); //设置录制质量 cam.setQuality(0,70); //启动麦克风 mic = Microphone.get(); mic.setRate(44); } |