关于FMS视频在线录制的心得
点击次数:64 次 发布日期:2008-11-21 16:35:45 作者:源代码网
|
源代码网整理以下年前的时候曾经研究过flv播放器方面的技术,并且在红杏的帮助下解决了关键的一些技术问题.以至于我这个对Flash一窍不通的人也看明白了一些... 源代码网整理以下源文件:http://zongyz.com/blog/uploads/200704/02_004824_pig_rec.rar 源代码网整理以下直接编译发布即可,需要修改的就是FMS服务器的地址和建立相关的路径. 源代码网整理以下代码: //开始初始化
源代码网供稿.var timeNum:Number = 0; //初始化时间计数; var server_url:String = "rtmp://192.168.0.13/vhost/"; //FMS地址; var videoname:String = "vtest"; //保存的文件名; var pig_nc:NetConnection = new NetConnection(); //新建一个连接对象,用来连接FMS; pig_nc.connect(server_url); //连接FMS; var pig_ns:NetStream = new NetStream(pig_nc); //新建流,用来捕获和播放视频; var pig_cam:Camera = Camera.get(); //获取摄像头rec_cam; var pig_mic:Microphone = Microphone.get(); //获取麦克风声音; waiting(); //UI初始等待状态; //-------------------事件发生---------------------// rec_con.onRelease = function() { //录制按钮被点击; if (recstar._currentframe == 1) { recstar.gotoAndStop(2); recplay(); } else if (recstar._currentframe == 2) { recstar.gotoAndStop(1); recstop(); } else if (recstar._currentframe == 3) { recstar.gotoAndStop(1); waiting(); } else { trace("出错!"); } }; view_con.onRelease = function() { //预览按钮被点击; if (view._currentframe == 1) { view.gotoAndStop(2); viewstar(); } else if (view._currentframe == 2) { view.gotoAndStop(1); viewstop(); } else { trace("出错!"); } }; submit_con.onRelease = function() { //完成按钮被点击; submitstar(); }; //-------------------控制函数---------------------// function waiting() { //初始等待状态; view.gotoAndStop(3); view_con._visible = false; //设置预览不可用; submit.gotoAndStop(2); submit_con._visible = false; //设置提交不可用; statebox.htmlText = "等待中..."; //更新状态信息; pig_cam.setQuality(0, 80); //设置带宽和质量; pig_ns.attachVideo(pig_cam); pig_ns.attachAudio(pig_mic); //将声音和图像装载到流; recbox.attachVideo(pig_cam); //将摄像头视频装载到recbox(视频录制预览窗口); } function rec_time() { //时间计数; timeNum++; statebox.text = statemsg+"时间:"+Math.floor(timeNum/60)+"分"+(timeNum%60)+"秒"; } function recplay() { //录制开始; pig_ns.publish(videoname, "record"); //开始录制; statebox.textColor = 0xFF0000; statebox.text = "设备准备中..."; statemsg = "正在录制,"; RecordInterval = setInterval(rec_time, 1000); } function recstop() { //录制停止; recstar.gotoAndStop(4); rec_con._visible = false; view.gotoAndStop(1); view_con._visible = true; statebox.htmlText = "录制完成,请点击预览按钮回放."; statebox.textColor = 0x006600; //更新状态信息; clearInterval(RecordInterval); timeNum = 0; pig_ns.close(); recbox.clear(); isplay = true; } function viewstar() { //预览开始; if (isplay == true) { view_ns = new NetStream(pig_nc); recbox.attachVideo(view_ns); view_ns.play(videoname); isplay = false; statebox.text = "正在回放,时间:0分0秒"; } else { view_ns.pause(); } //开始回放; view_ns.onStatus = function(PlayInfo) { if (PlayInfo.code == "NetStream.Play.Stop") { view_ns.onStatus = function(PlayInfo) { if (PlayInfo.code == "NetStream.Buffer.Empty") { viewend(); } }; } }; //视频回放状态 recstar.gotoAndStop(3); rec_con._visible = true; submit.gotoAndStop(1); submit_con._visible = true; statemsg = "正在回放,"; ReviewInterval = setInterval(rec_time, 1000); //statebox.htmlText = "正在回放,您可以重新录制或者完成."; statebox.textColor = 0x336699; //更新状态信息; } function viewstop() { //预览暂停; //更新状态信息; statebox.htmlText = "回放暂停,点击预览继续播放."; statebox.textColor = 0x336699; view_ns.pause(); clearInterval(ReviewInterval); } function viewend() { //视频播放结束 clearInterval(ReviewInterval); timeNum = 0; statebox.htmlText = "回放结束,您可以重新录制或者完成"; view.gotoAndStop(1); isplay = true; } function submitstar() { //完成提交; recstar.gotoAndStop(4); rec_con._visible = false; view.gotoAndStop(1); view_con._visible = true; isplay = true; submit.gotoAndStop(2); submit_con._visible = false; statebox.htmlText = "完成,请填写视频相关资料然后发布."; statebox.textColor = 0x006600; //更新状态信息; } |
