FLV播放器 源码二例
方法一
制作步驟:
1.新建一個(gè)FLASH文檔,設(shè)置舞臺(tái)大小:300*260。
2.將組件MediaController和MediaDisplay拖入舞臺(tái),然后從舞臺(tái)上刪除。這樣做的目的是將這兩個(gè)組件載入庫(kù)中,為接下來(lái)用attachMovie()方法將MediaController和MediaDisplay組件載入舞臺(tái)做好準(zhǔn)備。
3.新建一層,命名為function。在該層的第一幀上輸入如下AS代碼:
flagNum = 1;
//播放影片的標(biāo)示
flvNum = 0;
attachController();
};
//將MediaController和MediaDisplay組件載入舞臺(tái)并初始化
function attachController(){
//將MediaDisplay組件載入舞臺(tái)并給定義實(shí)例名 "flvContainer" + flagNum
_root.attachMovie("MediaDisplay","flvContainer" + flagNum,2);
//設(shè)置組件初始參數(shù)
with(_root["flvContainer" + flagNum]){
_x = 0;
_y = 0;
setMedia(myArray[flvNum],"FLV");//設(shè)置播放格式可以mp3等
}
//將MediaController組件載入舞臺(tái)并給定義實(shí)例名 "flvController" + flagNum
_root.attachMovie("MediaController","flvController" + flagNum,1);
//設(shè)置組件初始參數(shù)
with(_root["flvController" + flagNum]){
_x = 0;
_y = 190;
activePlayControl = false;
controllerPolicy = "on";
//將MediaController和MediaDisplay組件相關(guān)聯(lián)
associateDisplay(_root["flvContainer" + flagNum]);
};
};
function playNext(){
//將MediaController和MediaDisplay組件從舞臺(tái)上刪除
_root["flvController" + flagNum].removeMovieClip();
_root["flvContainer" + flagNum].removeMovieClip();
flagNum += 1;
flvNum += 1;
//如果播放到影片的最后一首,將flvNum = 0,意為將從頭開(kāi)始播放
if(flvNum == flvTotal) flvNum = 0;
//重新載入MediaController和MediaDisplay組件,并給一新的實(shí)例名
attachController();
//因?yàn)槊坎シ磐暌粋€(gè)影片后MediaController和MediaDisplay組件從舞臺(tái)上被卸載
//然后又重新載入MediaController和MediaDisplay組件并給了另外一個(gè)實(shí)例名
_root["flvContainer" + flagNum].addEventListener("complete", myListener);
}; 4.新建一層,命名為action,在該層第一幀輸入一下AS代碼:
stop();
//數(shù)組myArray用來(lái)存儲(chǔ) 載入的XML文檔中的影片名稱
var myArray = new Array();
//影片的總數(shù)
var flvTotal:Number;
var myXml = new XML();
myXml.ignoreWhite = true;
myXml.load("list.xml");
myXml.onLoad = function() {
var e = myXml.firstChild.childNodes;
flvTotal = e.length;
for (var i = 0; i<flvTotal; i++) {
myArray.push(e[i].attributes["title"]);
}
init();
_root["flvContainer"+flagNum].addEventListener("complete", myListener);
};
var myListener = new Object();
myListener.complete = function(eventObject) {
playNext();
};
?用記事本寫(xiě)入下面內(nèi)容作為播放列表,保存為list.xml:
<?xml version="1.0" encoding="utf-8" ?>- <flvLists>
<item title="http://littleredflowers.com/shipin/yugao.flv" />
<item title="http://littleredflowers.com/shipin/huaxu-01.flv" />
<item title="http://littleredflowers.com/shipin/huaxu-02.flv" />
<item title="http://littleredflowers.com/shipin/huaxu-03.flv" />
</flvLists>
相關(guān)源碼下載 點(diǎn)擊下載此文件
方法二
我們將制作的這個(gè)FLV播放器由這樣幾部分組成:
一個(gè)用于顯示視頻圖像的視頻對(duì)象,
三個(gè)分別用于播放、暫停和停止視頻的按鈕,
以及一個(gè)用于顯示緩沖區(qū)裝載進(jìn)度的動(dòng)態(tài)文本。
1. 創(chuàng)建三個(gè)按鈕元件,分別命名為“播放”、“暫停”、“停止”,將其各自一個(gè)實(shí)例拖放到場(chǎng)景舞臺(tái)中。
2. 創(chuàng)建一個(gè)視頻元件,將其一個(gè)實(shí)例拖放到場(chǎng)景舞臺(tái)中,并賦予其實(shí)例名myVideo。
3. 在場(chǎng)景舞臺(tái)中放置一個(gè)動(dòng)態(tài)文本,賦予其實(shí)例名myText。
4. 在根時(shí)間線的第1幀中捆綁下面的腳本:
//創(chuàng)建一個(gè)NetConnection對(duì)象。
myFLVConnection=new NetConnection();
//創(chuàng)建一個(gè)流連接。
myFLVConnection.connect(null);
//創(chuàng)建一個(gè)NetStream對(duì)象。
//myFLVConnection被指定給該NetStream對(duì)象。
myFLVStream=new NetStream(myFLVConnection);
//myFLVStream被捆綁到Video對(duì)象myVideo:
myVideo.attachVideo(myFLVStream);
//設(shè)置緩沖時(shí)間。
myFLVStream.setBufferTime(10);
分析這段腳本,首先我創(chuàng)建了一個(gè)NetConnection對(duì)象myFLVConnection,然后我調(diào)用NetConnection對(duì)象的connect()方法打開(kāi)了一個(gè)流連接,在調(diào)用connect()方法時(shí)你必須傳遞給它一個(gè)null值作為參數(shù)。
接下來(lái),我利用myFLVStream=new NetStream(myFLVConnection);這行代碼創(chuàng)建了一個(gè)NetStream對(duì)象myFLVStream,在創(chuàng)建時(shí)我就需要把為該“流”提供的“連接”告知它,即把myFLVConnection對(duì)象作為參數(shù)傳遞給NetStream類(lèi)的構(gòu)造函數(shù)。
之后,我把myFLVStream(“流”)捆綁到Video對(duì)象myVideo。然后,我還用NetStream類(lèi)的setBufferTime()方法以秒為單位指定了一個(gè)緩沖時(shí)間,即要在緩沖區(qū)中裝入可供播放多長(zhǎng)時(shí)間的數(shù)據(jù)后才開(kāi)始播放。
5. 在“播放”按鈕實(shí)例上捆綁下面的腳本:
on(release){
??? //裝載并播放FLV文件。
??? myFLVStream.play("myFLV.flv");
??? //定義bufferLoad函數(shù)以供setInterval函數(shù)調(diào)用來(lái)顯示緩沖進(jìn)度。
??? function bufferLoad(){
??????? //在動(dòng)態(tài)文本中顯示緩沖區(qū)的裝載進(jìn)度。
??????? myText.text="緩沖區(qū)已裝載"+int((myFLVStream.bytesLoaded/myFLVStream.bytesTotal)*100)+"%";
}
??????? //設(shè)置時(shí)間間隔。
??????? setInterval(bufferLoad,20);
}
這行代碼—myFLVStream.play("myFLV.flv");用來(lái)裝載和播放FLV文件。如果你的FLV文件位于某個(gè)HTTP地址或本地文件系統(tǒng)的某處,你可以使用http://或file://這樣的格式作為路徑的前綴來(lái)指定FLV文件的位置。
這個(gè)表達(dá)式—myFLVStream.bytesLoaded/myFLVStream.bytesTotal用來(lái)檢查緩沖區(qū)已裝載的字節(jié)占緩沖區(qū)要裝載的總字節(jié)的比值。bytesLoaded和bytesTotal是NetStream類(lèi)的兩個(gè)屬性。
6. 在“暫停”按鈕實(shí)例上捆綁下面的腳本:
on(release){
??? //暫停FLV文件。
??? myFLVStream.pause();
}
7. 在“停止”按鈕實(shí)例上捆綁下面的腳本:
on(release){
??? //停止FLV文件并同時(shí)刪除下載的FLV文件。
??? myFLVStream.close();
}
8. 制作完成。你應(yīng)該在你的網(wǎng)站中測(cè)試這個(gè)FLV播放器。
轉(zhuǎn)載于:https://www.cnblogs.com/esun/archive/2006/11/25/572389.html
總結(jié)
以上是生活随笔為你收集整理的FLV播放器 源码二例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SAP中有关差异的一些概念
- 下一篇: 关于xml的模糊查询问题