技巧:自制Flash FLV視頻播放器_Flash教程
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!
推薦:FLASH的場(chǎng)景,圖層(lawyer)和層(level)的理解對(duì)初學(xué)者來(lái)說(shuō),FLASH(這里一FLASH8為例)的場(chǎng)景、圖層(lawyer)和層(level)很輕易引起困惑的3個(gè)概念,今天看到大家在討論涉及這個(gè)主題,我覺(jué)得有必要做一個(gè)比較系統(tǒng)
大家好,前不久筆者將CenFun Music Player加入flv視頻播放功能,這里單獨(dú)拿出來(lái)給大家做一個(gè)Flash FLV播放器(僅ActionScript控制,不使用 FLVPlayback 組件),如有不當(dāng)之處還望指正。下面就打開(kāi)您的Macromedia Flash Player 8(推薦)開(kāi)始吧! 首先新建文檔,設(shè)置背景色黑色,其他默認(rèn),然后建四個(gè)圖層。 第一層用來(lái)放視頻元件,方法如下: 1,在"庫(kù)"面板("窗口">"庫(kù)")中,從"庫(kù)"彈出菜單中選擇"新建視頻"。
2,在"視頻屬性"對(duì)話框中,命名視頻元件并選擇"視頻"(由 ActionScript 控制)。
3,將視頻對(duì)象從"庫(kù)"面板拖到舞臺(tái)正中間,以創(chuàng)建視頻對(duì)象實(shí)例。
4,對(duì)此視頻元件取實(shí)例名為 "my_video"。 第二層用來(lái)放視頻地址輸入欄,方法如下: 1,在舞臺(tái)左下方用文本工具(快捷鍵T)畫一個(gè)地址輸入文本框,類型選擇"輸入文本"類型。
2,在"線條類型"彈出菜單中選擇"單行",并確認(rèn)"在文本四周顯示邊框"處于選中狀態(tài)。
3,對(duì)此文本框取實(shí)例名為"url"。 第三層用來(lái)放播放開(kāi)始按鈕,方法如下: 1,在"庫(kù)"面板("窗口">"庫(kù)")中,新建元件按鈕,按鈕樣式自行制作好,暫時(shí)能用就行。
2,將新建的按鈕對(duì)象從"庫(kù)"面板拖到舞臺(tái)地址輸入框后面,以創(chuàng)建播放開(kāi)始按鈕。
3,對(duì)此播放開(kāi)始按鈕取實(shí)例名為"play_bt"。 第四層用來(lái)放所有的ActionScript: //首先初始化
//創(chuàng)建一個(gè) NetConnection 對(duì)象
var my_nc:NetConnection = new NetConnection();
//創(chuàng)建一個(gè)本地流連接
my_nc.connect(null);
//創(chuàng)建一個(gè) NetStream 對(duì)象
var my_ns:NetStream = new NetStream(my_nc);
//寫一個(gè)播放函數(shù)playflv()
function playflv(flv) {
//參數(shù)flv是要播放的flv視頻地址
//trace(flv);//測(cè)試用
// 將 NetStream 視頻輸入信號(hào)附加到 Video 對(duì)象,即視頻元件my_video
my_video.attachVideo(my_ns);
// 設(shè)置緩沖時(shí)間,單位秒,下面設(shè)置3秒即可
my_ns.setBufferTime(3);
// 開(kāi)始播放 FLV 文件
my_ns.play(flv);
}
//點(diǎn)擊開(kāi)始播放按鈕開(kāi)始播放
play_bt.onRelease = function() {
playflv(url.text);
//獲得url輸入框的視頻文件地址,并調(diào)用播放函數(shù)播放url對(duì)應(yīng)的flv視頻文件
}; //////////////////////////////////////////////////////////////////////////////
//至此一個(gè)最簡(jiǎn)單的播放器已經(jīng)做完了,下面要做的都是對(duì)其進(jìn)行更多的控制和表現(xiàn)工作。
//這里就其幾個(gè)重要的方面進(jìn)行制作,其他的還需要大家發(fā)揮自己的想象去進(jìn)行更好的設(shè)計(jì)制作。
//注重,以下代碼非必要,未經(jīng)測(cè)試,望大家一個(gè)一個(gè)嘗試實(shí)現(xiàn)。非凡注重路徑和實(shí)例名的對(duì)應(yīng)。 //*********************************
//1,播放的控制,暫停和停止的實(shí)現(xiàn)
//新建兩個(gè)按鈕,一個(gè)暫停(pause_bt),一個(gè)停止(stop_bt),原理和播放按鈕一樣。 pause_bt.onRelease = function() {
my_ns.pause();
};
stop_bt.onRelease = function() {
my_ns.seek(0);
//搜尋從0開(kāi)始播放
my_ns.pause(true);
//參數(shù)true表示暫停,若是false則表示從暫停變?yōu)槔^續(xù)播放,若沒(méi)有參數(shù)則為在暫停/播放中切換。
};//*********************************
//2,視頻下載進(jìn)度
//這個(gè)比較簡(jiǎn)單,和一般的下載進(jìn)度類似,原理就是播放時(shí)將已下載的和總共文件大小進(jìn)行百分比,然后顯示出來(lái)。
//新建顯示百分比的靜態(tài)文本(info)和進(jìn)度條(bar),其初始狀態(tài)、位置自行調(diào)整 this.onEnterFrame =function () {
var loadedbytes = my_ns.bytesLoaded;
//獲得已經(jīng)下載字節(jié)
var totalbytes = my_ns.bytesTotal;
//文件總大小
if (totalbytes == undefined || totalbytes<4000) {
info.text = "0%";
bar._width = 1;
} else {
var nowLoadPercent = Math.round(loadedbytes/totalbytes*100);
if (isNaN(nowLoadPercent)) {
info.text = "0%";
bar._width = 1;
} else {
info.text = nowLoadPercent "%";
bar._width = nowLoadPercent*35/100;
if (nowLoadPercent == 100) {
delete this.onEnterFrame;
}
}
}
} //*********************************
//3,視頻尺寸修正或調(diào)整
//這個(gè)比較重要,因?yàn)橐曨l尺寸比例一般都不一樣,故播放時(shí)要進(jìn)行調(diào)整,以免失真變形。
//原理就是獲得flv的尺寸,然后重新調(diào)整my_video的尺寸,最后將位置居中,必要時(shí)還可進(jìn)行縮放處理(這里省略)。 //首先寫個(gè)改變尺寸函數(shù)changesize(w, h),w為要改變?yōu)榈膶挾龋琱為要改變?yōu)榈母叨?
function changesize(w, h) {
//改變到傳進(jìn)來(lái)的參數(shù)尺寸
my_video._width = w;
my_video._height = h;
//trace("w:" w "h:" h);//測(cè)試用
//位置居中處理,假如你的視頻舞臺(tái)寬550,高400
my_video._x = 550/2-w/2;
my_video._y = 400/2-h/2;
}
//然后獲得flv的固有尺寸,并調(diào)用以上函數(shù)改變它
//此處理函數(shù)在調(diào)用 my_ns.play() 方法后而在視頻播放頭前進(jìn)之前觸發(fā)
my_ns.onMetaData = function(infoObject:Object) {
//獲得FLV文件中嵌入的描述性信息,這里獲得寬/高
var flv_width = infoObject.width;
var flv_height = infoObject.height;
//改變尺寸
changesize(flv_width, flv_height);
}; //*********************************
//4,播放時(shí)間和進(jìn)度
//原理和下載進(jìn)度類似,先獲得總持續(xù)時(shí)間,然后獲得當(dāng)前時(shí)間對(duì)其進(jìn)行百分比,也可做進(jìn)度條。
// 定義總持續(xù)時(shí)間全局變量,并獲得其值。
var flv_duration;
my_ns.onMetaData = function(infoObject:Object) {
//獲得FLV文件中嵌入的描述性信息,這里獲得獲得總持續(xù)時(shí)間(單位:秒)
var flv_duration = infoObject.duration;
};
//注重:這里可以和獲得寬高寫在一起。
//獲取當(dāng)前播放時(shí)間
var flv_thistime = my_ns.time;
//然后便可制作播放進(jìn)度了,和下載進(jìn)度類似,大家自己制作,此處略。 //*********************************
//5,音量的控制
//這個(gè)復(fù)雜一點(diǎn),必須先將音頻從 FLV 文件附加到舞臺(tái)上的影片剪輯,然后對(duì)其進(jìn)行控制
//新建影片剪輯my_ns_mc,并附加音頻
my_ns_mc.attachAudio(my_ns);
//為影片剪輯創(chuàng)建新的 Sound 對(duì)象
var my_ns_sound = new Sound(my_ns_mc);
//初始化音量(此處默認(rèn)80)
var flv_volume = 80;
my_ns_sound.setVolume(flv_volume);
//最后對(duì)flv_volume的大�。�0到100間)進(jìn)行控制即可改變音量大小
//這部分制作也省略,大家自由發(fā)揮,還可以制作靜音功能,即flv_volume為0 //*********************************
//還有,像快進(jìn),快退,緩沖顯示等等,都可以實(shí)現(xiàn),大家自行研究。 ////////////////////////////////////////////
最后,一個(gè)Flash FLV播放器的制作基本完成了,推薦想學(xué)flash的朋友親自動(dòng)手去實(shí)現(xiàn),不要老是想去下載什么源碼然后修改一通,那樣就體會(huì)不到其中的很多奧妙了! 補(bǔ)充一個(gè)相關(guān)問(wèn)題:flv播放沒(méi)有圖象,只有聲音,這是因?yàn)檫@個(gè)flv文件用flash 8的編碼格式壓縮,而你發(fā)布的flash播放器為flash 7或更低的版本,故升級(jí)為版本8即可,或者將flv文件采用flash 7的編碼格式壓縮。 作者:大圣 來(lái)源:菲特網(wǎng)
分享:遮照及文字遮照的幾個(gè)概念和事例今天剛好有2個(gè)帖子發(fā)了關(guān)于遮照的問(wèn)題。這個(gè)教程是針對(duì)今天的帖子和初學(xué)者講一些概念,做法和事例。請(qǐng)大家多多討論,或許會(huì)有所提高。遮照(MASK),也被被稱為
相關(guān)Flash教程:
Flash教程Rss訂閱網(wǎng)站制作教程搜索
Flash教程推薦
- 卸載Flash插件的方法
- Flash MX2004入門與進(jìn)階實(shí)例——聲音和視頻(9)
- Flash制作碧海藍(lán)天海鷗飛片頭動(dòng)畫
- Flash基礎(chǔ)教程 動(dòng)畫基礎(chǔ)知識(shí)
- Flash教程:制作互動(dòng)的橡皮刷
- 用Flash輕松制作電子發(fā)散視覺(jué)效果動(dòng)畫
- Flash8濾鏡與混合模式(3):混合模式初探
- Flash常見(jiàn)動(dòng)畫制作分析:火苗動(dòng)畫的制作
- 用純Flash Actionscript做的火柴棍小人跑的動(dòng)畫
- 符合web標(biāo)準(zhǔn)的flash調(diào)用方法,解決了瀏覽器對(duì)flash的影響
猜你也喜歡看這些
- 相關(guān)鏈接:
- 教程說(shuō)明:
Flash教程-技巧:自制Flash FLV視頻播放器
。