秦紅兵 俞生成
FLV,英文名稱(chēng)為Flash Video,是當(dāng)前網(wǎng)絡(luò)視頻的主流媒體格式,目前被眾多在線視頻網(wǎng)站采用,土豆,新浪搜狐,優(yōu)酷,56等知名網(wǎng)站都利用它代替了原有的WMV流媒體文件,它是基于sorenso公司的算法基礎(chǔ)上開(kāi)發(fā)出來(lái)的,以體積小,質(zhì)量?jī)?yōu)等顯著特征成為目前增長(zhǎng)最快,傳播最廣的視頻格式。它的出現(xiàn)有效補(bǔ)充了網(wǎng)絡(luò)視頻點(diǎn)播系統(tǒng)的需要。目前flash播放器種類(lèi)繁多,但因其界面的單一性,并不能夠真正滿足我們課堂實(shí)際需要,很多視頻播放器在播放Flv文件時(shí),對(duì)文件內(nèi)的原有交互都不能夠正常顯示,特別是Flv文件普及是在犧牲一定質(zhì)量的基礎(chǔ)之上,如同MP3代替CD被廣泛應(yīng)用一樣。如果后期控制系統(tǒng)再打折扣,將對(duì)Flv技術(shù)的效果產(chǎn)生一定的置疑。其實(shí)我們可以利用FlashMx2004自己手動(dòng)打造個(gè)性化Flv文件控制器,并在視頻流中增加適當(dāng)?shù)慕换?,以滿足我們?cè)谌粘=虒W(xué)中的需要。在利用FlashMx2004制作控制器過(guò)程中,我們有兩種方法可以選擇,一種是通過(guò)其自帶的playback組件來(lái)制作播放器,另外一種是通過(guò)自己創(chuàng)建元件,利用腳本語(yǔ)句來(lái)實(shí)現(xiàn)Flv控制器的播放。在本章節(jié)中我們選擇腳本語(yǔ)句控制,以視頻控制的停止,播放,暫停三個(gè)按鈕作為播放器的交互對(duì)象,一個(gè)動(dòng)態(tài)文本,用于顯示緩沖區(qū)裝載進(jìn)度,以及一個(gè)用于顯示圖像的視頻組件。
(1)打開(kāi)FLashMx2004軟件,如圖1所示,單擊圖中右上角標(biāo)簽,新建對(duì)應(yīng)的元件,首先我們需要?jiǎng)?chuàng)建3個(gè)交互按鈕,分別命名為pause,play,stop,再分別將其以實(shí)例形式拖到舞臺(tái)中央。
圖1
(2)添加一個(gè)動(dòng)態(tài)文本,用于顯示緩沖區(qū)的裝載進(jìn)度,并賦予實(shí)例名為VideoText。
(3)參考圖1,在舞臺(tái)場(chǎng)景中添加一個(gè)視頻元件實(shí)例,并賦予其實(shí)例名ShowVideo。
新建一圖層,或選擇原有一圖層改名為Action,選擇第一幀如圖2所示,F(xiàn)9調(diào)出動(dòng)作代碼面板,執(zhí)行下列對(duì)應(yīng)操作:
圖2
(1)播放器代碼的編譯是整個(gè)播放器設(shè)計(jì)的關(guān)鍵步驟,代碼編譯的成功與否,決定了播放器是否能夠控制嵌入影片的交互,首先在動(dòng)作面板中,按順序輸入以下語(yǔ)句,如圖3所示:
圖3
在該段代碼中,首先創(chuàng)建了一個(gè)jygzFLVConnection對(duì)象,再通過(guò)connect()方法打開(kāi)了一個(gè)流連接,調(diào)用NetConnection對(duì)象,同時(shí)在調(diào)用connect()方法時(shí)傳遞給它一個(gè)null值作為參數(shù)。創(chuàng)建一個(gè)NetStream對(duì)象jygzFLVStream,并通過(guò)“jygzFLVStream=new NetStream(jygzFLVConnection);”這行代碼來(lái)實(shí)現(xiàn),它的本質(zhì)是起到消息傳遞的作用,將流連接告知對(duì)方,如果連接到?jīng)]有使用服務(wù)器的Flv文件,即把實(shí)例對(duì)象作為參數(shù),傳遞給構(gòu)造函數(shù)NetStream,之后,把myFLVStream“流”捆綁到Video對(duì)象jygzVideo。再以秒為單位指定一個(gè)緩沖時(shí)間,通過(guò)NetStream類(lèi)的setBufferTime()方法實(shí)現(xiàn),“告知”緩沖區(qū)中要裝載多少數(shù)據(jù)才可實(shí)現(xiàn)播放。
(2)播放交互按鈕的腳本實(shí)現(xiàn)。
在動(dòng)作面板中,按如圖4所示輸入相應(yīng)代碼:
圖4
播放交互按鈕是整個(gè)控制器的核心,如果設(shè)置不當(dāng),該播放器與普通播放器無(wú)異,而本文設(shè)計(jì)的播放器除了要有正常的視頻流播放暫停功能,還需能夠執(zhí)行原有Flash的交互功能,所以在添加裝載視頻命令之前,首先需要指定加載的對(duì)象是Flv文件。
播放按鈕嵌套的代碼主要執(zhí)行裝載和播放功能,當(dāng)滿足裝載進(jìn)程后就執(zhí)行播放程序,并通過(guò)代碼jygzFLVStream.play("myFLV.f l v")來(lái)調(diào)用。但有時(shí)我們?cè)谡{(diào)用Flv文件時(shí),視頻文件可能位于網(wǎng)絡(luò)上某個(gè)位置,不存放在本地服務(wù)器上,此時(shí)我們可以用file://或http://路徑格式來(lái)指定Flv文件的存放位置.
播放器在執(zhí)行播放功能之前,需要先滿足調(diào)用條件,第四行代碼用來(lái)檢查緩沖區(qū)需要裝載的總字節(jié)與緩沖區(qū)中已經(jīng)裝載的字節(jié)占的比值。為了緩解使用者等待的心理,我們可以通過(guò)設(shè)置時(shí)間間隔來(lái)進(jìn)行調(diào)節(jié)。其中bytesLoaded和bytesTotal是NetStream類(lèi)的兩個(gè)屬性。
(3)暫停交互按鈕的代碼實(shí)現(xiàn):
此處代碼的功能是停止視頻流的播放。
完成上述步驟后,我們可以將播放器嵌套一個(gè)視頻流,簡(jiǎn)單修改后,添加至視頻服務(wù)器測(cè)試,測(cè)試這個(gè)Flv控制器(http://www.jygz.net/ypjg/sp/qhb)。這里所設(shè)計(jì)的視頻服務(wù)器需要安裝FMS/RED5協(xié)議,如果未安裝專(zhuān)門(mén)協(xié)議,還可采用本地部署方式測(cè)試。利用上述方法編譯的Flv文件控制器最大特點(diǎn)是避開(kāi)了傳統(tǒng)的flash播放器界面單一,打開(kāi)Flv文件之后,對(duì)文件不能夠修改的瓶頸,利用上述代碼自己手動(dòng)打造,既能滿足個(gè)性化需要,又可以在Flv文件中添加適當(dāng)?shù)膱?chǎng)景,動(dòng)畫(huà),甚至是命令代碼,進(jìn)一步拓寬了該技術(shù)應(yīng)用面,如果我們與非線性編輯軟件AE CS3軟件相結(jié)合,還可以打造出更為交互的三維課件,相信只要我們?nèi)ヅL試和不斷探索,F(xiàn)lv技術(shù)定能為我們所用。
[1]王道乾,劉定智,文俊浩.基于ARM處理器的MP3播放器分析與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007(7):1585-1597.
[2]陳志偉.淺析FLV格式在視頻點(diǎn)播網(wǎng)站中的應(yīng)用[J].福建電腦,2010(3):152.
[3]雷鋼.F LV視頻的制作及教學(xué)應(yīng)用[J].四川文理學(xué)院學(xué)報(bào),2009(5):99-101.
[4]周東飛.另類(lèi)流媒體網(wǎng)頁(yè)HotMedia造[N].中國(guó)電腦教育報(bào),2002-08-12.
[5]賀梁,張毅斌,顧君忠.NewsOnDemand——WWW上的多媒體視頻技術(shù)[J].計(jì)算機(jī)周刊,1997(21):35-36.
[6]劉華艷.流媒體技術(shù)特點(diǎn)及其在網(wǎng)絡(luò)教學(xué)中的應(yīng)用[J].電腦知識(shí)與技術(shù),2010(3):705-706.