//預(yù)定義聲明
import mx.utils.Delegate;
//創(chuàng)建一個基本的網(wǎng)絡(luò)連接對象
var nc:NetConnection = new NetConnection();
//連接到本地的Red5服務(wù)器
nc.connect("rtmp://localhost/online");
//將已和red5服務(wù)器建立連接的nc傳遞給NetStream
var ns:NetStream = new NetStream(nc);
//從攝像頭和麥克風(fēng)取得信息
var cam:Camera = Camera.get();
var mic:Microphone = Microphone.get();
//初始化攝像頭和麥克風(fēng),調(diào)用函數(shù)
setupCameraMic();
//保存上次錄制的內(nèi)容,并進(jìn)行清空
var lastVideoName:String = "";
//監(jiān)聽開始錄制和停止錄制兩個按鍵的點(diǎn)擊動作并進(jìn)行相應(yīng)的處理
playButton.addEventListener("click", Delegate.create(this, playClick));
stopButton.addEventListener("click", Delegate.create(this, stopClick));
//定義開始錄制的playclick函數(shù)
function playClick():Void
{
//此flv文件是保存在 webapps/oflaDemo/streams/文件夾
//將攝像頭和麥克風(fēng)賦給ns
ns.attachVideo(cam);
ns.attachAudio(mic);
//將攝像頭信息賦給視頻顯示窗口,這樣我們可以即時看到信息
videoContainer.attachVideo(cam);
// 此處是定義存儲名字的,用隨機(jī)數(shù)目獲得一個唯一的文件名
lastVideoName = "red5RecordDemo_" + random(getTimer());
ns.publish(lastVideoName, "record");
//鎖定開始按鍵使其失效
playButton.enabled = false;
//鎖定停止按鍵使其生效
stopButton.enabled = true;
}
function stopClick():Void
{
//關(guān)閉ns與red5的連接
ns.close();
//并清空視頻顯示窗口
videoContainer.attachVideo(null);
videoContainer.clear();
//鎖定開始按鍵使其生效
playButton.enabled = true;
//鎖定停止按鍵使其失效
stopButton.enabled = false;
//播放已經(jīng)錄制的視頻
playLastVideo();
}
function playLastVideo():Void
{
// 傳遞錄制的視頻信息給視屏顯示窗口
videoContainer.attachVideo(ns);
//回訪已經(jīng)上次錄制的視頻片段
ns.play(lastVideoName);
}
function setupCameraMic():Void
{
//啟動攝像頭
cam = Camera.get();
//設(shè)置尺寸
cam.setMode(320, 240, 30);
//設(shè)置錄制質(zhì)量
cam.setQuality(0,70);
//啟動麥克風(fēng)
mic = Microphone.get();
mic.setRate(44);
}
|