下(xià)面就打開(kāi)您的Macromedia Flash Player 8(推薦)開(kāi)始吧!
首先新建文檔,設置背景色黑色,其他默認,然後建四個圖層。
第一(yī)層用來放(fàng)視頻(pín)元件,方法如下(xià):
1,在"庫"面闆("窗口">"庫")中(zhōng),從"庫"彈出菜單中(zhōng)選擇"新建視頻(pín)"。
2,在"視頻(pín)屬性"對話(huà)框中(zhōng),命名視頻(pín)元件并選擇"視頻(pín)"(由 ActionScript 控制)。
3,将視頻(pín)對象從"庫"面闆拖到舞台正中(zhōng)間,以創建視頻(pín)對象實例。
4,對此視頻(pín)元件取實例名爲 "my_video"。
第二層用來放(fàng)視頻(pín)地址輸入欄,方法如下(xià):
1,在舞台左下(xià)方用文本工(gōng)具(快捷鍵T)畫一(yī)個地址輸入文本框,類型選擇"輸入文本"類型。
2,在"線條類型"彈出菜單中(zhōng)選擇"單行",并确認"在文本周圍顯示邊框"處于選中(zhōng)狀态。
3,對此文本框取實例名爲"url"。
第三層用來放(fàng)播放(fàng)開(kāi)始按鈕,方法如下(xià):
1,在"庫"面闆("窗口">"庫")中(zhōng),新建元件按鈕,按鈕樣式自行制作好,暫時能用就行。
2,将新建的按鈕對象從"庫"面闆拖到舞台地址輸入框後面,以創建播放(fàng)開(kāi)始按鈕。
3,對此播放(fàng)開(kāi)始按鈕取實例名爲"play_bt"。
第四層用來放(fàng)所有的ActionScript:
//首先初始化
//創建一(yī)個 NetConnection 對象
var my_nc:NetConnection = new NetConnection();
//創建一(yī)個本地流連接
my_nc.connect(null);
//創建一(yī)個 NetStream 對象
var my_ns:NetStream = new NetStream(my_nc);
//寫一(yī)個播放(fàng)函數playflv()
function playflv(flv) {
//參數flv是要播放(fàng)的flv視頻(pín)地址
//trace(flv);//測試用
// 将 NetStream 視頻(pín)輸入信号附加到 Video 對象,即視頻(pín)元件my_video
my_video.attachVideo(my_ns);
// 設置緩沖時間,單位秒,下(xià)面設置3秒即可
my_ns.setBufferTime(3);
// 開(kāi)始播放(fàng) FLV 文件
my_ns.play(flv);
}
//點擊開(kāi)始播放(fàng)按鈕開(kāi)始播放(fàng)
play_bt.onRelease = function() {
playflv(url.text);
//獲得url輸入框的視頻(pín)文件地址,并調用播放(fàng)函數播放(fàng)url對應的flv視頻(pín)文件
};
//////////////////////////////////////////////////////////////////////////////
//至此一(yī)個最簡單的播放(fàng)器已經做完了,下(xià)面要做的都是對其進行更多的控制和表現工(gōng)作。
//這裏就其幾個重要的方面進行制作,其他的還需要大(dà)家發揮自己的想象去(qù)進行更好的設計制作。
//注意,以下(xià)代碼非必要,未經測試,望大(dà)家一(yī)個一(yī)個嘗試實現。特别注意路徑和實例名的對應。
//*********************************
//1,播放(fàng)的控制,暫停和停止的實現
//新建兩個按鈕,一(yī)個暫停(pause_bt),一(yī)個停止(stop_bt),原理和播放(fàng)按鈕一(yī)樣。
pause_bt.onRelease = function() {
my_ns.pause();
};
stop_bt.onRelease = function() {
my_ns.seek(0);
//搜尋從0開(kāi)始播放(fàng)
my_ns.pause(true);
//參數true表示暫停,若是false則表示從暫停變爲繼續播放(fàng),若沒有參數則爲在暫停/播放(fàng)中(zhōng)切換。
};
//*********************************
//2,視頻(pín)下(xià)載進度
//這個比較簡單,和一(yī)般的下(xià)載進度類似,原理就是播放(fàng)時将已下(xià)載的和總共文件大(dà)小(xiǎo)進行百分(fēn)比,然後顯示出來。
//新建顯示百分(fēn)比的靜态文本(info)和進度條(bar),其初始狀态、位置自行調整
this.onEnterFrame =function () {
var loadedbytes = my_ns.bytesLoaded;
//獲得已經下(xià)載字節
var totalbytes = my_ns.bytesTotal;
//文件總大(dà)小(xiǎo)
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,視頻(pín)尺寸修正或調整
//這個比較重要,因爲視頻(pín)尺寸比例一(yī)般都不一(yī)樣,故播放(fàng)時要進行調整,以免失真變形。
//原理就是獲得flv的尺寸,然後重新調整my_video的尺寸,最後将位置居中(zhōng),必要時還可進行縮放(fàng)處理(這裏省略)。
//首先寫個改變尺寸函數changesize(w, h),w爲要改變爲的寬度,h爲要改變爲的高度
function changesize(w, h) {
//改變到傳進來的參數尺寸
my_video._width = w;
my_video._height = h;
//trace("w:"+w+"h:"+h);//測試用
//位置居中(zhōng)處理,假如你的視頻(pín)舞台寬550,高400
my_video._x = 550/2-w/2;
my_video._y = 400/2-h/2;
}
//然後獲得flv的固有尺寸,并調用以上函數改變它
//此處理函數在調用 my_ns.play() 方法後而在視頻(pín)播放(fàng)頭前進之前觸發
my_ns.onMetaData = function(infoObject:Object) {
//獲得FLV文件中(zhōng)嵌入的描述性信息,這裏獲得寬/高
var flv_width = infoObject.width;
var flv_height = infoObject.height;
//改變尺寸
changesize(flv_width, flv_height);
};
//*********************************
//4,播放(fàng)時間和進度
//原理和下(xià)載進度類似,先獲得總持續時間,然後獲得當前時間對其進行百分(fēn)比,也可做進度條。
// 定義總持續時間全局變量,并獲得其值。
var flv_duration;
my_ns.onMetaData = function(infoObject:Object) {
//獲得FLV文件中(zhōng)嵌入的描述性信息,這裏獲得獲得總持續時間(單位:秒)
var flv_duration = infoObject.duration;
};
//注意:這裏可以和獲得寬高寫在一(yī)起。
//獲取當前播放(fàng)時間
var flv_thistime = my_ns.time;
//然後便可制作播放(fàng)進度了,和下(xià)載進度類似,大(dà)家自己制作,此處略。
//*********************************
//5,音量的控制
//這個複雜(zá)一(yī)點,必須先将音頻(pín)從 FLV 文件附加到舞台上的影片剪輯,然後對其進行控制
//新建影片剪輯my_ns_mc,并附加音頻(pín)
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的大(dà)小(xiǎo)(0到100間)進行控制即可改變音量大(dà)小(xiǎo)
//這部分(fēn)制作也省略,大(dà)家自由發揮,還可以制作靜音功能,即flv_volume爲0
//*********************************
//還有,像快進,快退,緩沖顯示等等,都可以實現,大(dà)家自行研究。
////////////////////////////////////////////
最後,一(yī)個Flash FLV播放(fàng)器的制作基本完成了,推薦想學flash的朋友親自動手去(qù)實現,不要老是想去(qù)下(xià)載什麽源碼然後修改一(yī)通,那樣就體(tǐ)會不到其中(zhōng)的很多奧妙了!
補充一(yī)個相關問題:flv播放(fàng)沒有圖象,隻有聲音,這是因爲這個flv文件用flash 8的編碼格式壓縮,而你發布的flash播放(fàng)器爲flash 7或更低的版本,故升級爲版本8即可,或者将flv文件采用flash 7的編碼格式壓縮。
首先新建文檔,設置背景色黑色,其他默認,然後建四個圖層。
第一(yī)層用來放(fàng)視頻(pín)元件,方法如下(xià):
1,在"庫"面闆("窗口">"庫")中(zhōng),從"庫"彈出菜單中(zhōng)選擇"新建視頻(pín)"。
2,在"視頻(pín)屬性"對話(huà)框中(zhōng),命名視頻(pín)元件并選擇"視頻(pín)"(由 ActionScript 控制)。
3,将視頻(pín)對象從"庫"面闆拖到舞台正中(zhōng)間,以創建視頻(pín)對象實例。
4,對此視頻(pín)元件取實例名爲 "my_video"。
第二層用來放(fàng)視頻(pín)地址輸入欄,方法如下(xià):
1,在舞台左下(xià)方用文本工(gōng)具(快捷鍵T)畫一(yī)個地址輸入文本框,類型選擇"輸入文本"類型。
2,在"線條類型"彈出菜單中(zhōng)選擇"單行",并确認"在文本周圍顯示邊框"處于選中(zhōng)狀态。
3,對此文本框取實例名爲"url"。
第三層用來放(fàng)播放(fàng)開(kāi)始按鈕,方法如下(xià):
1,在"庫"面闆("窗口">"庫")中(zhōng),新建元件按鈕,按鈕樣式自行制作好,暫時能用就行。
2,将新建的按鈕對象從"庫"面闆拖到舞台地址輸入框後面,以創建播放(fàng)開(kāi)始按鈕。
3,對此播放(fàng)開(kāi)始按鈕取實例名爲"play_bt"。
第四層用來放(fàng)所有的ActionScript:
//首先初始化
//創建一(yī)個 NetConnection 對象
var my_nc:NetConnection = new NetConnection();
//創建一(yī)個本地流連接
my_nc.connect(null);
//創建一(yī)個 NetStream 對象
var my_ns:NetStream = new NetStream(my_nc);
//寫一(yī)個播放(fàng)函數playflv()
function playflv(flv) {
//參數flv是要播放(fàng)的flv視頻(pín)地址
//trace(flv);//測試用
// 将 NetStream 視頻(pín)輸入信号附加到 Video 對象,即視頻(pín)元件my_video
my_video.attachVideo(my_ns);
// 設置緩沖時間,單位秒,下(xià)面設置3秒即可
my_ns.setBufferTime(3);
// 開(kāi)始播放(fàng) FLV 文件
my_ns.play(flv);
}
//點擊開(kāi)始播放(fàng)按鈕開(kāi)始播放(fàng)
play_bt.onRelease = function() {
playflv(url.text);
//獲得url輸入框的視頻(pín)文件地址,并調用播放(fàng)函數播放(fàng)url對應的flv視頻(pín)文件
};
//////////////////////////////////////////////////////////////////////////////
//至此一(yī)個最簡單的播放(fàng)器已經做完了,下(xià)面要做的都是對其進行更多的控制和表現工(gōng)作。
//這裏就其幾個重要的方面進行制作,其他的還需要大(dà)家發揮自己的想象去(qù)進行更好的設計制作。
//注意,以下(xià)代碼非必要,未經測試,望大(dà)家一(yī)個一(yī)個嘗試實現。特别注意路徑和實例名的對應。
//*********************************
//1,播放(fàng)的控制,暫停和停止的實現
//新建兩個按鈕,一(yī)個暫停(pause_bt),一(yī)個停止(stop_bt),原理和播放(fàng)按鈕一(yī)樣。
pause_bt.onRelease = function() {
my_ns.pause();
};
stop_bt.onRelease = function() {
my_ns.seek(0);
//搜尋從0開(kāi)始播放(fàng)
my_ns.pause(true);
//參數true表示暫停,若是false則表示從暫停變爲繼續播放(fàng),若沒有參數則爲在暫停/播放(fàng)中(zhōng)切換。
};
//*********************************
//2,視頻(pín)下(xià)載進度
//這個比較簡單,和一(yī)般的下(xià)載進度類似,原理就是播放(fàng)時将已下(xià)載的和總共文件大(dà)小(xiǎo)進行百分(fēn)比,然後顯示出來。
//新建顯示百分(fēn)比的靜态文本(info)和進度條(bar),其初始狀态、位置自行調整
this.onEnterFrame =function () {
var loadedbytes = my_ns.bytesLoaded;
//獲得已經下(xià)載字節
var totalbytes = my_ns.bytesTotal;
//文件總大(dà)小(xiǎo)
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,視頻(pín)尺寸修正或調整
//這個比較重要,因爲視頻(pín)尺寸比例一(yī)般都不一(yī)樣,故播放(fàng)時要進行調整,以免失真變形。
//原理就是獲得flv的尺寸,然後重新調整my_video的尺寸,最後将位置居中(zhōng),必要時還可進行縮放(fàng)處理(這裏省略)。
//首先寫個改變尺寸函數changesize(w, h),w爲要改變爲的寬度,h爲要改變爲的高度
function changesize(w, h) {
//改變到傳進來的參數尺寸
my_video._width = w;
my_video._height = h;
//trace("w:"+w+"h:"+h);//測試用
//位置居中(zhōng)處理,假如你的視頻(pín)舞台寬550,高400
my_video._x = 550/2-w/2;
my_video._y = 400/2-h/2;
}
//然後獲得flv的固有尺寸,并調用以上函數改變它
//此處理函數在調用 my_ns.play() 方法後而在視頻(pín)播放(fàng)頭前進之前觸發
my_ns.onMetaData = function(infoObject:Object) {
//獲得FLV文件中(zhōng)嵌入的描述性信息,這裏獲得寬/高
var flv_width = infoObject.width;
var flv_height = infoObject.height;
//改變尺寸
changesize(flv_width, flv_height);
};
//*********************************
//4,播放(fàng)時間和進度
//原理和下(xià)載進度類似,先獲得總持續時間,然後獲得當前時間對其進行百分(fēn)比,也可做進度條。
// 定義總持續時間全局變量,并獲得其值。
var flv_duration;
my_ns.onMetaData = function(infoObject:Object) {
//獲得FLV文件中(zhōng)嵌入的描述性信息,這裏獲得獲得總持續時間(單位:秒)
var flv_duration = infoObject.duration;
};
//注意:這裏可以和獲得寬高寫在一(yī)起。
//獲取當前播放(fàng)時間
var flv_thistime = my_ns.time;
//然後便可制作播放(fàng)進度了,和下(xià)載進度類似,大(dà)家自己制作,此處略。
//*********************************
//5,音量的控制
//這個複雜(zá)一(yī)點,必須先将音頻(pín)從 FLV 文件附加到舞台上的影片剪輯,然後對其進行控制
//新建影片剪輯my_ns_mc,并附加音頻(pín)
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的大(dà)小(xiǎo)(0到100間)進行控制即可改變音量大(dà)小(xiǎo)
//這部分(fēn)制作也省略,大(dà)家自由發揮,還可以制作靜音功能,即flv_volume爲0
//*********************************
//還有,像快進,快退,緩沖顯示等等,都可以實現,大(dà)家自行研究。
////////////////////////////////////////////
最後,一(yī)個Flash FLV播放(fàng)器的制作基本完成了,推薦想學flash的朋友親自動手去(qù)實現,不要老是想去(qù)下(xià)載什麽源碼然後修改一(yī)通,那樣就體(tǐ)會不到其中(zhōng)的很多奧妙了!
補充一(yī)個相關問題:flv播放(fàng)沒有圖象,隻有聲音,這是因爲這個flv文件用flash 8的編碼格式壓縮,而你發布的flash播放(fàng)器爲flash 7或更低的版本,故升級爲版本8即可,或者将flv文件采用flash 7的編碼格式壓縮。