基于red5的在线视频录制实例和详细注释

/预定义声明
import mx.utils.Delegate;
//创建一个基本的网络连接对象
var nc:NetConnection=newNetConnection();
//连接到本地的Red5服务器
nc.connect("rtmp://localhost/online");
//将已和red5服务器建立连接的nc传递给NetStream
var ns:NetStream=newNetStream(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);
}
posted @ 2011-12-26 15:16  lovecd  阅读(788)  评论(1编辑  收藏  举报