技巧:自制Flash FLV視頻播放器_Flash教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:FLASH的場景,圖層(lawyer)和層(level)的理解對初學者來說,FLASH(這里一FLASH8為例)的場景、圖層(lawyer)和層(level)很輕易引起困惑的3個概念,今天看到大家在討論涉及這個主題,我覺得有必要做一個比較系統
大家好,前不久筆者將CenFun Music Player加入flv視頻播放功能,這里單獨拿出來給大家做一個Flash FLV播放器(僅ActionScript控制,不使用 FLVPlayback 組件),如有不當之處還望指正。下面就打開您的Macromedia Flash Player 8(推薦)開始吧! 首先新建文檔,設置背景色黑色,其他默認,然后建四個圖層。 第一層用來放視頻元件,方法如下: 1,在"庫"面板("窗口">"庫")中,從"庫"彈出菜單中選擇"新建視頻"。
2,在"視頻屬性"對話框中,命名視頻元件并選擇"視頻"(由 ActionScript 控制)。
3,將視頻對象從"庫"面板拖到舞臺正中間,以創建視頻對象實例。
4,對此視頻元件取實例名為 "my_video"。 第二層用來放視頻地址輸入欄,方法如下: 1,在舞臺左下方用文本工具(快捷鍵T)畫一個地址輸入文本框,類型選擇"輸入文本"類型。
2,在"線條類型"彈出菜單中選擇"單行",并確認"在文本四周顯示邊框"處于選中狀態。
3,對此文本框取實例名為"url"。 第三層用來放播放開始按鈕,方法如下: 1,在"庫"面板("窗口">"庫")中,新建元件按鈕,按鈕樣式自行制作好,暫時能用就行。
2,將新建的按鈕對象從"庫"面板拖到舞臺地址輸入框后面,以創建播放開始按鈕。
3,對此播放開始按鈕取實例名為"play_bt"。 第四層用來放所有的ActionScript: //首先初始化
//創建一個 NetConnection 對象
var my_nc:NetConnection = new NetConnection();
//創建一個本地流連接
my_nc.connect(null);
//創建一個 NetStream 對象
var my_ns:NetStream = new NetStream(my_nc);
//寫一個播放函數playflv()
function playflv(flv) {
//參數flv是要播放的flv視頻地址
//trace(flv);//測試用
// 將 NetStream 視頻輸入信號附加到 Video 對象,即視頻元件my_video
my_video.attachVideo(my_ns);
// 設置緩沖時間,單位秒,下面設置3秒即可
my_ns.setBufferTime(3);
// 開始播放 FLV 文件
my_ns.play(flv);
}
//點擊開始播放按鈕開始播放
play_bt.onRelease = function() {
playflv(url.text);
//獲得url輸入框的視頻文件地址,并調用播放函數播放url對應的flv視頻文件
}; //////////////////////////////////////////////////////////////////////////////
//至此一個最簡單的播放器已經做完了,下面要做的都是對其進行更多的控制和表現工作。
//這里就其幾個重要的方面進行制作,其他的還需要大家發揮自己的想象去進行更好的設計制作。
//注重,以下代碼非必要,未經測試,望大家一個一個嘗試實現。非凡注重路徑和實例名的對應。 //*********************************
//1,播放的控制,暫停和停止的實現
//新建兩個按鈕,一個暫停(pause_bt),一個停止(stop_bt),原理和播放按鈕一樣。 pause_bt.onRelease = function() {
my_ns.pause();
};
stop_bt.onRelease = function() {
my_ns.seek(0);
//搜尋從0開始播放
my_ns.pause(true);
//參數true表示暫停,若是false則表示從暫停變為繼續播放,若沒有參數則為在暫停/播放中切換。
};//*********************************
//2,視頻下載進度
//這個比較簡單,和一般的下載進度類似,原理就是播放時將已下載的和總共文件大小進行百分比,然后顯示出來。
//新建顯示百分比的靜態文本(info)和進度條(bar),其初始狀態、位置自行調整 this.onEnterFrame =function () {
var loadedbytes = my_ns.bytesLoaded;
//獲得已經下載字節
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,視頻尺寸修正或調整
//這個比較重要,因為視頻尺寸比例一般都不一樣,故播放時要進行調整,以免失真變形。
//原理就是獲得flv的尺寸,然后重新調整my_video的尺寸,最后將位置居中,必要時還可進行縮放處理(這里省略)。 //首先寫個改變尺寸函數changesize(w, h),w為要改變為的寬度,h為要改變為的高度
function changesize(w, h) {
//改變到傳進來的參數尺寸
my_video._width = w;
my_video._height = h;
//trace("w:" w "h:" h);//測試用
//位置居中處理,假如你的視頻舞臺寬550,高400
my_video._x = 550/2-w/2;
my_video._y = 400/2-h/2;
}
//然后獲得flv的固有尺寸,并調用以上函數改變它
//此處理函數在調用 my_ns.play() 方法后而在視頻播放頭前進之前觸發
my_ns.onMetaData = function(infoObject:Object) {
//獲得FLV文件中嵌入的描述性信息,這里獲得寬/高
var flv_width = infoObject.width;
var flv_height = infoObject.height;
//改變尺寸
changesize(flv_width, flv_height);
}; //*********************************
//4,播放時間和進度
//原理和下載進度類似,先獲得總持續時間,然后獲得當前時間對其進行百分比,也可做進度條。
// 定義總持續時間全局變量,并獲得其值。
var flv_duration;
my_ns.onMetaData = function(infoObject:Object) {
//獲得FLV文件中嵌入的描述性信息,這里獲得獲得總持續時間(單位:秒)
var flv_duration = infoObject.duration;
};
//注重:這里可以和獲得寬高寫在一起。
//獲取當前播放時間
var flv_thistime = my_ns.time;
//然后便可制作播放進度了,和下載進度類似,大家自己制作,此處略。 //*********************************
//5,音量的控制
//這個復雜一點,必須先將音頻從 FLV 文件附加到舞臺上的影片剪輯,然后對其進行控制
//新建影片剪輯my_ns_mc,并附加音頻
my_ns_mc.attachAudio(my_ns);
//為影片剪輯創建新的 Sound 對象
var my_ns_sound = new Sound(my_ns_mc);
//初始化音量(此處默認80)
var flv_volume = 80;
my_ns_sound.setVolume(flv_volume);
//最后對flv_volume的大小(0到100間)進行控制即可改變音量大小
//這部分制作也省略,大家自由發揮,還可以制作靜音功能,即flv_volume為0 //*********************************
//還有,像快進,快退,緩沖顯示等等,都可以實現,大家自行研究。 ////////////////////////////////////////////
最后,一個Flash FLV播放器的制作基本完成了,推薦想學flash的朋友親自動手去實現,不要老是想去下載什么源碼然后修改一通,那樣就體會不到其中的很多奧妙了! 補充一個相關問題:flv播放沒有圖象,只有聲音,這是因為這個flv文件用flash 8的編碼格式壓縮,而你發布的flash播放器為flash 7或更低的版本,故升級為版本8即可,或者將flv文件采用flash 7的編碼格式壓縮。 作者:大圣 來源:菲特網
分享:遮照及文字遮照的幾個概念和事例今天剛好有2個帖子發了關于遮照的問題。這個教程是針對今天的帖子和初學者講一些概念,做法和事例。請大家多多討論,或許會有所提高。遮照(MASK),也被被稱為
相關Flash教程:
- 相關鏈接:
- 教程說明:
Flash教程-技巧:自制Flash FLV視頻播放器。