[转]linux下的fms2流媒体服务器搭建六部曲之五-----flv播放器制作篇
??? 要做flv播放器,首先你要明白fms2的工作目錄,它的工作目錄都在安裝目錄的applications目錄下,你需要新建一個目錄作為自己的工作目錄,比如我新建了gdrc,然后在gdrc里面新建一個streams目錄(這個目錄名不能改變),這樣,在streams下的所有子目錄都是你的應用了。默認是_definst_,我為了好管理自己建了video放置視頻flv文件,再建audio放置音頻,這樣我的目錄結構就是:applications/gdrc/streams/video、applications/gdrc/streams/audio、applications/gdrc/streams/_definst_。在上一篇中提到的格式轉換轉換的所有flv文件就是放在applications/streams/video目錄下。
??? 然后,來看看我的flv播放器吧,我是用flash8開發的,只需要幾個簡單的組件,視頻組件、播放按鈕、暫停按鈕、停止按鈕、時間軸再加下面的代碼就是一個flv播放器,在第一禎寫上下面的代碼:
stop();
var play_status = false;//視頻播放標記,true-正在播放;false-沒有播放
var connect_url = "rtmp://172.16.1.2/gdrc/video";//連接方式rtmp,注意這個連接的后面/gdrc/video跟上面提到的flv目錄applications/gdrc/streams/video是對應的。
var flv = stream;//動態播放flv,該參數名對應外面的參數名比如play.swf?stream=a表示播放a.flv,參數不需要.flv后綴名
var nc:NetConnection = new NetConnection();
var ns:NetStream;
nc.connect(connect_url);
var streamLength;//flv文件長度
bt_pause._visible = false;//設置暫停按鈕不可見
var startBF = 2;//開始緩沖秒數
var mainBF = 6;//空時緩沖秒數
//初始化
initStreams = function(){
?ns=new NetStream(nc);
?ns.setBufferTime(startBF);
?video.attachVideo(ns);//把ns附給video視頻組件
?ns.onStatus = Onstatus;//動態緩沖
};
//動態緩沖,緩沖區滿時為3秒,空的時候為10秒
function? Onstatus(infoObject:Object){
?trace(infoObject["code"]);
?if(infoObject["code"] == "NetStream.Buffer.Full"){
??ns.setBufferTime(startBF);
?}
?if(infoObject["code"] == "NetStream.Buffer.Empty"){
??ns.setBufferTime(mainBF);
?}
}
//測試連接
nc.onStatus = function(info) {
?trace(info.code);
?switch (info.code) {
??case "NetConnection.Connect.Success":initStreams();break;
?}
}
//緩沖
function checkBufferTime(ns:NetStream):Void{
??? var bufferPct:Number = Math.min(Math.round(ns.bufferLength/ns.bufferTime*100), 100);
?if(isNaN(bufferPct)){
??bufferPct = 0;
?}
??? buffer_txt = "緩沖:"+bufferPct+"%";;
};
//獲得文件長度,這個長度的獲取需要服務器端的支持,要在fms2服務器端編寫main.asc,后面會給出
function FileLength() {
?this.onResult = function(retVal) {
???streamLength = retVal;
?};
};
//播放
doPlay = function(){
?if(play_status == false){
??bar.ball._x = 0;
??play_status = true;
??ns.play(flv);
??//播放進度條
??bar.onEnterFrame=function(){
???nc.call("getFileLength", new FileLength(), flv);
???var nowPlayPercent=Math.round(ns.time/streamLength*100);
???if(isNaN(nowPlayPercent)){
????bar.ball._x = 0;
???}
???else{
????bar.ball._x = nowPlayPercent*490/100;
???}
???if(nowPlayPercent==99){
????play_status = false;
????bar.ball._x = 0;
????bt_play._visible = true;
????bt_pause._visible = false;
????//ns.close();
????delete this.onEnterFrame;
???}
??};
??//緩沖提示
??var buffer_interval:Number = setInterval(checkBufferTime, 100, ns);
?}
?else{
??ns.pause();
?}
};
//暫停
doPause = function(){
?ns.pause();
};
//停止
doStop = function(){
?play_status = false;
?bar.ball._x = 0;
?//ns.seek(0);
?//ns.pause(true);
?ns.close();
};
//開始播放
playNow.onRelease=function(){
?bt_play._visible = false;
?bt_pause._visible = true;
?doPlay();
};
//播放按鈕
bt_play.onRelease=function(){
?bt_play._visible = false;
?bt_pause._visible = true;
?doPlay();
};
//暫停按鈕
bt_pause.onRelease=function(){
?bt_play._visible = true;
?bt_pause._visible = false;
?doPause();
};
//停止按鈕
bt_stop.onRelease=function(){
?bt_play._visible = true;
?bt_pause._visible = false;
?doStop();
};
main.asc,放置到fms2安裝目錄的applications/gdrc目錄下
load("components.asc");
application.onAppStart = function() {};
application.onConnect = function(client) {
?application.acceptConnection(client);
?client.getFileLength = function(filename) {
??var tlen = Stream.length(filename);
??return tlen;
?};
?};
? ? 本文轉自 OldHawk ?博客園博客,原文鏈接:http://www.cnblogs.com/taobataoma/archive/2007/10/12/921992.html,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的[转]linux下的fms2流媒体服务器搭建六部曲之五-----flv播放器制作篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IIS7 Request format
- 下一篇: Forefront Client Sec