摘要 利用XML和Flash組件技術(shù)構(gòu)建Flash視頻點(diǎn)播系統(tǒng),技術(shù)實(shí)現(xiàn)容易,擴(kuò)展維護(hù)方便,結(jié)構(gòu)形式靈活多樣。以Flash 8為創(chuàng)作工具,詳細(xì)闡述了構(gòu)建視頻點(diǎn)播系統(tǒng)的具體方法和關(guān)鍵技術(shù)。
關(guān)鍵詞 XML; Flash組件;視頻點(diǎn)播
中圖分類號: TP37文獻(xiàn)標(biāo)識碼:A文章編號:1671-489X(2006)12-0051-02
Practice on Using Flash 8 to Construct VOD System// Luo Wenbin, Wang Xiaoyan, Luo Jinhua
Abstract It is not only easy to implement and maintain but also flexible to structure of using XML and Flash component technology to construct VOD system. This paper, using flash 8 as a development tool, narrates the specific method and key technology in constructing VOD system.
Key words XML; Flash component; VOD
Author's address Modern Technology Centre of Huazhong Science Technology University, 430000, Wuhan, China
1 引言
利用Flash不僅能夠制作出高質(zhì)量的動畫和視頻,而且還由于其具有良好的交互性能而受到媒體制作者的青睞。Flash8給媒體創(chuàng)作者提供了更多的模板和組件,利用這些模板和組件不僅可以幫助我們快速地建立多媒體課程網(wǎng)站和交互學(xué)習(xí)內(nèi)容,而且對視頻編碼和外部視頻的播放控制有了更好的支持,為我們快速構(gòu)建視頻點(diǎn)播系統(tǒng)提供了技術(shù)保障。
一個(gè)架構(gòu)良好的點(diǎn)播系統(tǒng),不僅能夠?qū)崿F(xiàn)視頻點(diǎn)播的功能,還應(yīng)該具有良好的擴(kuò)展性能,便于視頻文件的增加和刪除,所以本文采用外部XML文檔記錄視頻的相關(guān)信息,結(jié)合Flash組件技術(shù)構(gòu)建擴(kuò)展維護(hù)方便的視頻點(diǎn)播系統(tǒng)。
2、視頻點(diǎn)播系統(tǒng)的構(gòu)建
利用Flash組件構(gòu)建視頻點(diǎn)播系統(tǒng)時(shí),應(yīng)用不同的組件構(gòu)建出來的視頻點(diǎn)播系統(tǒng)的結(jié)構(gòu)形式可以靈活多樣,常見的樣式有菜單式、樹狀結(jié)構(gòu)式、表格式和列表式。每一種樣式的顯示效果和XML文檔的結(jié)構(gòu)層次有一定的關(guān)系,下面以菜單式結(jié)構(gòu)為例,闡述構(gòu)建視頻點(diǎn)播系統(tǒng)的具體方法和關(guān)鍵技術(shù)。
1)建立XML文檔。
選用XML文檔來描述視頻資源的相關(guān)信息,是由于XML文檔具有很強(qiáng)的通用性和擴(kuò)展性。一個(gè)播放系統(tǒng)建立起來之后,經(jīng)常需要更新系統(tǒng)中的文件,采用了XML文檔之后,當(dāng)需要更改某一個(gè)具體的視頻描述信息時(shí),只需要在XML文件中修改相應(yīng)的內(nèi)容就可以了,維護(hù)非常方便。這里新建一個(gè)XML文檔,輸入如下的內(nèi)容,并命名為\"video.xml\"。
<xml version="1.0" encoding="UTF-8" ?>
<root>
<node label="物理系實(shí)驗(yàn)室">
<subnode label="熱輻射與紅外掃描實(shí)驗(yàn)" url="video\video1.flv" />
<subnode label="快速電子的量能相對論關(guān)系" url="video\video2.flv" />
</node>
<node label="機(jī)械學(xué)院實(shí)驗(yàn)室">
<subnode label="皮帶傳動實(shí)驗(yàn)的實(shí)驗(yàn)?zāi)康模?url="video\video3.flv" />
</node>
</root>
\"root\"標(biāo)記是這個(gè)XML文檔的根元素,每一個(gè)XML文檔只能有一個(gè)根元素。\"node\"標(biāo)記是根元素下面的子元素,一個(gè)根元素可以有多個(gè)子元素。\"subnode\"標(biāo)記是\"node\"元素下面的子元素,每一個(gè)子元素也都可以包含多個(gè)子元素。這些標(biāo)記的名稱可以根據(jù)實(shí)際需要任意更改。這里用\"label\"和\"url\"來描述視頻資源的兩個(gè)基本屬性:名稱和存放位置。點(diǎn)播系統(tǒng)中最基本的要求是點(diǎn)擊一個(gè)\"名稱\",播放相應(yīng)的視頻,該名稱就是\"label\"來描述,具體存放位置由\"url\"來描述。如果有需要可以增加其它的描述信息。從XML文檔中可以看到視頻文件都存放在\"video\"目錄中,視頻文件的名稱依次為\"video1.flv\"、\"video2.flv\"和\"video3.flv\",如果有更多的視頻,按照這種方式依次擴(kuò)展。
2)構(gòu)建播放系統(tǒng)。
打開Flash 8應(yīng)用程序,新建一個(gè)文檔,將其保存在和XML文檔相同的目錄,便于后續(xù)闡述。構(gòu)建視頻點(diǎn)播系統(tǒng)主要用到Flash 8提供的三個(gè)組件:XMLConnecter(數(shù)據(jù)連接組件)、Menubar(菜單組件)和 FLVPlayback(FLV視頻播放組件)。分別將這三個(gè)組件拖放到舞臺上合適的位置,并依次命名實(shí)例名為\"my_xml\"、\"my_menu\"、\"my_player\"。XMLConnecter組件在文件運(yùn)行時(shí)不會顯示出來,只起到一個(gè)數(shù)據(jù)連接的作用,所以它的具體位置和最后顯示的結(jié)果無關(guān)。Menubar組件和FLVPlayback組件的尺寸和位置根據(jù)實(shí)際需要進(jìn)行設(shè)置。選擇菜單是通過Menubar組件來呈現(xiàn)的,選擇Menubar組件中呈現(xiàn)的一個(gè)子菜單之后,F(xiàn)LVPlayback組件將播放對應(yīng)的視頻文件,完成點(diǎn)播功能。
在舞臺上選擇XMLConnecter組件,打開\"組件檢查器\"參數(shù)面板,在\"參數(shù)\"標(biāo)簽中設(shè)置路徑\"URL\"參數(shù)為\"video.xml\",方向\"direction\"為\"receive\"。在\"架構(gòu)\"標(biāo)簽中選擇\"results:XML\"后,單擊,導(dǎo)入前面制作好的\"video.xml\"文檔,成功導(dǎo)入后,如圖1所示。
選擇Menubar組件,在其組件檢查器面板中單擊\"綁定\"標(biāo)簽,添加一個(gè)\"dataProvider:XML\"的\"綁定\",選擇添加的綁定,設(shè)置\"direction\"為\"in\",\"bound to\"為\"XMLConnector\"中的\"root:Object\"位置。其它的保持默認(rèn)設(shè)置。通過上面的設(shè)置,已經(jīng)完成了XMLConnecter組件和外部XML文件的關(guān)系,同時(shí)完成了XMLConnecter組件和Menubar組件之間的綁定關(guān)系。如果這時(shí)修改外部\"video.xml\"文件的內(nèi)容,Menubar組件顯示的內(nèi)容也會做相應(yīng)的改變。在時(shí)間軸的第一幀上,添加腳本代碼\"my_xml.trigger ();\",讓文件運(yùn)行時(shí)加載XML文檔。
發(fā)布文件,就能夠看到Menubar組件正常顯示菜單了,如圖2所示。
要實(shí)現(xiàn)點(diǎn)擊菜單欄上的不同菜單就能夠播放不同的視頻,還需要讓菜單和媒體播放組件之間建立聯(lián)動關(guān)系,對鼠標(biāo)的操作進(jìn)行偵聽。在時(shí)間軸的第一幀上,繼續(xù)添加腳本代碼:
listener_play = function (evt) {
my_player.contentPath = evt.menuItem.attributes["url"];
my_player.play();};
my_menu.addEventListener("change", listener_play);
在上面的腳本中,為菜單實(shí)例\"my_menu\"注冊了一個(gè)\"listener_play\"偵聽器函數(shù),當(dāng)菜單發(fā)生\"change\"事件時(shí),就會調(diào)用偵聽器函數(shù),函數(shù)的主體\"my_player.contentPath = evt.menuItem.attributes[\"url\"];my_player.play();\"是將選擇的菜單項(xiàng)\"URL\"屬性值賦給媒體播放組件實(shí)例\"my_player\"的\"contentPath\"屬性,并啟動播放。最終效果如圖3所示。
到這里,一個(gè)簡單的播放系統(tǒng)就構(gòu)建完畢了。在播放一個(gè)視頻的同時(shí),如果選擇了其它的菜單項(xiàng),則媒體播放組件就會播放新選擇的視頻,而終止前面選擇的視頻。如果需要更新菜單名稱或者實(shí)際的視頻文件,只需要更改XML文檔中的內(nèi)容,并將相應(yīng)的視頻文件復(fù)制到對應(yīng)的目錄就可以了,擴(kuò)展和維護(hù)非常方便。如果需要對視頻進(jìn)行暫停、快進(jìn)和停止等操作,直接設(shè)置媒體播放組件的外觀樣式就可以了。