最近在学校做毕业设计
顶着压力,昨天晚上研究了一个晚上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); |
| } |

你真强
很好很强大
啊?
技术勃
不错 学习 ^_^
我需的是red5端实现视频的录制!!客户端太简单了!!www.8gcom.com