戴玉剛,劉戰(zhàn)東
(西北民族大學(xué) 中國民族信息技術(shù)研究院,甘肅 蘭州730030)
藏族有著悠久的歷史、燦爛的文化,其文獻(xiàn)遺存在國內(nèi)僅次于漢族,在世界民族之林亦有很大反響。藏語現(xiàn)在仍然在藏區(qū)被廣泛的使用,但是很多藏族同胞對(duì)漢語或其它語言知之甚少甚至根本都不了解[1-2]。由于計(jì)算機(jī)信息技術(shù)的成熟和藏文處理技術(shù)的發(fā)展,開發(fā)實(shí)時(shí)可靠、多功能、數(shù)字化、操作簡單的基于計(jì)算機(jī)網(wǎng)絡(luò)通訊技術(shù)和多媒體應(yīng)用的藏文Flv播放器己成為計(jì)算機(jī)、通信、消費(fèi)電子產(chǎn)品領(lǐng)域技術(shù)發(fā)展的主要方向之一[3-4]。
雖然說隨著計(jì)算機(jī)技術(shù)的迅速發(fā)展,藏文信息技術(shù)有了一定的發(fā)展,但是在國內(nèi)外并沒有查找到有關(guān)藏文Flv播放器的研究及相關(guān)報(bào)道,因此展開對(duì)藏文Flv播放器的研究意義重大。應(yīng)該說藏文Flv播放器在國內(nèi)外的研究具有非常重要的應(yīng)用價(jià)值。本文設(shè)計(jì)開發(fā)的藏文Flv播放器,兼容目前流行的Flash v10格式,它可以作為一個(gè)獨(dú)立的播放器,也可以作為插件集成到瀏覽器之中。
本文設(shè)計(jì)的藏文Flv播放器是采用Flex3.0開發(fā),下面對(duì)該技術(shù)作簡要的闡述。Flex是Adobe公司開發(fā)的支持RIA (rich internet applications)開發(fā)和部署的技術(shù)產(chǎn)品,是面向企業(yè)級(jí)的應(yīng)用。利用Flex的強(qiáng)大功能,用戶可以開發(fā)出富有交互性和標(biāo)簽的用戶界面。在Flex工程中,用戶使用ActioScript為應(yīng)用程序添加行為,主要采用兩種方法:一種是在MXML文件中直接添加ActioScript代碼;另一種是直接在AS文件中編寫ActioScript代碼,然后將其導(dǎo)入到MXML文件。MXML是一種用來描述Flex應(yīng)用程序界面的標(biāo)簽語言,它是基于XML的一種實(shí)現(xiàn)[3-4]。
由于Flex3.0是英文版本,所以對(duì)中文字體的支持并不太理想,只有少數(shù)中文字體可以使用,而藏文不屬于其中一種。
本文設(shè)計(jì)的藏文Flv播放器是采用Flex3.0開發(fā),下面對(duì)該技術(shù)作簡要的闡述。Flex是Adobe公司開發(fā)的支持RIA (rich internet applications)開發(fā)和部署的技術(shù)產(chǎn)品,是面向企業(yè)級(jí)的應(yīng)用。利用Flex的強(qiáng)大功能,用戶可以開發(fā)出富有交互性和標(biāo)簽的用戶界面。在Flex工程中,用戶使用ActioScript為應(yīng)用程序添加行為,主要采用兩種方法:一種是在MXML文件中直接添加ActioScript代碼;另一種是直接在AS文件中編寫ActioScript代碼,然后將其導(dǎo)入到MXML文件。MXML是一種用來描述Flex應(yīng)用程序界面的標(biāo)簽語言,它是基于XML的一種實(shí)現(xiàn)[4-6]。
由于Flex3.0是英文版本,所以對(duì)中文字體的支持并不太理想,只有少數(shù)中文字體可以使用,而藏文不屬于其中一種。如果需要使用藏文字體,必需引用藏文字體的.TTF文件,主要有兩種方法可以采用:①在控件的屬性中引用;②在CSS樣式中引用藏文字體。具體介紹如下:
(1)在控件的屬性中引用:例如,需要你想把按鈕控件名設(shè)為藏文的 “確定”,那么在按鈕控件的屬性中引用藏文 “TIBETBT”字體的語法格式如下所示
(2)在CSS樣式中引用藏文字體:在CSS樣式中引用藏文字體的語法格式如下所示:
@font-face
{
Src:url(“藏文字體路徑”);
fontFamily:TIBETBT;//藏文字體名
}
為了更好地設(shè)計(jì)和開發(fā)藏文Flv播放器,本文首先對(duì)藏文字體的特點(diǎn)和結(jié)構(gòu)進(jìn)行研究。
藏文屬于拼音文字,通常分為兩類:現(xiàn)代藏文和古代梵文。現(xiàn)代藏文是在梵文的基礎(chǔ)上發(fā)展而來的,因此現(xiàn)代藏文和梵文在書寫上十分相類,它是由輔音字母、反體字、疊字、元音符號(hào)、數(shù)字及符號(hào)組成[7]。一個(gè)藏字有1~7個(gè)字符構(gòu)成[7-8],它是按自左到右、自上到下的順序呈非線性排列。一個(gè)完整的藏字的拼寫形式如圖1所示。
藏文Flv播放器 (TibetanFlvPlayer)的主要作用是,接受用戶選擇的本地Flv文件,并將選擇的視頻文件播放和顯示出來。接受用戶對(duì)播放的控制,包括改變播放、暫停和重播。接受用戶對(duì)視頻的控制。因此,在實(shí)例中需要處理的對(duì)象有:視頻顯示器和控制器等。其功能主要包括:處理用戶選擇、顯示視頻文件、調(diào)節(jié)視頻效果等。圖2展示了本實(shí)例TibetanFlvPlayer中的結(jié)構(gòu)及各模塊的功能,這里僅展示了主要的功能[9-10]。
圖1 一個(gè)藏字圖
圖2 TibetanFlvPlayer結(jié)構(gòu)設(shè)計(jì)
下面以 “TibetanFlvPlayer”實(shí)例為例介紹一下需要的功能:
這是TibetanFlvPlayer的主體,負(fù)責(zé)播放當(dāng)前的Flv文件,將此視頻顯示出來。Flex 3.0中的VideoDisplay組件專用來播放 Flv格式視頻[10-12]。
提供與用戶交互的功能,包括播放與暫停及全屏等。此功能增加了播放器的可操作性,也增加了用戶的興趣[10-12]。播放控制器中,藏文名稱與相應(yīng)的中文名稱對(duì)照表,如表1所示。
?
(1)播放/暫停功能:播放/暫停功能只需要調(diào)用Video Display組件的play方法和pause方法實(shí)現(xiàn)。
(2)全屏/退出全屏功能:實(shí)現(xiàn) “全屏/退出全屏”功能前需要在FlvModel類中定義一個(gè)了布爾型的變量is-FullSrceen,用以表示當(dāng)前是否為全屏狀態(tài)。
(3)靜音功能:由于VideoDisplay組件的volume屬性綁定在id為videoVolume的HSlider組件上,所以控件HSlisder組件的值就能控制視頻的音量。“靜音”功能只要videoVolume.value=0即可。
(4)改變播放速度:由于id為videoSlider的 HSlider組件的屬性綁定在VideoDisplay組件的playheadTime屬性上,所以HSlider組件能實(shí)時(shí)顯示播放速度。
(5)拖放控制:本播放器允許用戶將Flv和H.264編碼的文件拖放到上面進(jìn)行播放。一旦視頻文件被接受,視頻文件的路徑也被傳給了播放器。
TibetanFlvPlayer播放器實(shí)例中使用<mx:MenuBar>組件添加菜單,當(dāng)用戶單擊菜單子項(xiàng)時(shí)會(huì)執(zhí)行相應(yīng)的操作。在TibetanFlvPlayer中,藏文菜單名稱與相應(yīng)的中文名稱對(duì)照表如表2所示。
?
單擊相應(yīng)的按鈕時(shí),彈出的對(duì)話框中藏文信息與相應(yīng)的中文信息對(duì)照表如表3所示。
菜單項(xiàng)重要包括兩個(gè)主菜單:“文件”和 “關(guān)于”?!拔募辈藛蜗旅嬷匾袃蓚€(gè)子菜單:“打開”和 “退出”,“關(guān)于”菜單下面重要有一個(gè)子菜單:“版本”。當(dāng)用戶單擊菜單 “打開”時(shí),可以打開本地文件,選擇要播放的Flv格式的視頻,當(dāng)單擊菜單 “退出”時(shí),將彈出一個(gè)對(duì)話框,有兩個(gè)按鈕:“最小化到托盤”和 “直接退出程序”,最終效果如圖3所示。當(dāng)單擊菜單 “版本”時(shí),將彈出一個(gè)對(duì)話框顯示版權(quán)和版本信息,最終效果如圖4所示。
?
(1)TibFlvModel類:TibFlvModel類繼承于 Cairngorm框架的ModelLocator類,用以存儲(chǔ)數(shù)據(jù)、狀態(tài)和資源[11]。
(2)TibFlvControl類:TibFlvControl類繼承于Cairngorm框架的FrontController類,用以監(jiān)聽CairngormEvet事件[12-15]。
(3)OpenVideoEvent類:OpenVideoEvent類繼承于Cairngorm框架的CairngormEvent類,用以打開視頻事件[14]。
(4)OpenVideoCommand命令類:OpenVideoCommand命令類繼承于Cairngorm框架的Command類,用以對(duì)事件進(jìn)行具體處理。OpenVideoCommand命令類的主要功能是加載Flv格式視頻[14]。
(5)Utils類:Utils類中定義了時(shí)間格式化處理函數(shù)formatVideoTime,用以將單位為毫秒的小數(shù)轉(zhuǎn)換為形如“12:23:23”的時(shí)間格式字符串[14-15]。
(6)TibFlvPlayViewHelper類:TibFlvPlayViewHelper類繼承于Cairngorm框架的ViewHelper類,用于修改MXML組件[14-15]。
(7)退出應(yīng)用程序和最小化托盤:以下代碼定義了closingApplication函數(shù)實(shí)現(xiàn)了 “應(yīng)用程序的退出和最小化托盤”功能[15]。
(8)藏文字體的顯示:Flex中除了使用設(shè)備字體外,還可以使用Windows中的內(nèi)置字體。藏文字體是一種非系統(tǒng)字體,它需要注冊(cè)以后才能被使用,語法如下所示。
[Embed (source = “C:/WINDOWS/Fonts/arial.ttf”,fontName= “Arial”,mimeType= “application/xfont”)]
Private var ArialFont:Class;
參數(shù)說明如下:①source:字體文件所在路徑。②font-Name:程序中所使用的字體別名。③mimeType:application/x-font。
硬件環(huán)境配置如表4所示。
表4 硬件配置
測(cè)試效果如圖5所示。
實(shí)驗(yàn)結(jié)果分析:通過測(cè)試,我們發(fā)現(xiàn)TibetanFlvPlayer不僅可以播放Flv格式的視頻文件,而且還可以直接播放F4V格式的視頻文件,播放效果也非常好,已達(dá)到了我們?cè)O(shè)計(jì)開發(fā)的目的。
圖5 實(shí)驗(yàn)效果
目前,F(xiàn)lex技術(shù)已日漸成熟,利用該技術(shù)開發(fā)的應(yīng)用程序具有更強(qiáng)的用戶交互性,可以給用戶帶來更豐富、體驗(yàn)性更強(qiáng)的用戶界面。利用Flex技術(shù),我們?cè)O(shè)計(jì)和實(shí)現(xiàn)藏文Flv播放器,通過測(cè)試,視頻播放效果非常理想,同時(shí)本播發(fā)器還可以正常播發(fā)F4V格式的視頻文件。但是本播放器也存在很多不足,與我們常用的播放器相比,功能還不夠完善;由于本播放器利用遠(yuǎn)程服務(wù)器作為用戶界面的藏文正常顯示的支撐技術(shù),目的就是防止在用戶沒安裝藏文字庫的情況下,TibetanPlayer也能夠正常顯示藏文,所以運(yùn)行開銷比較大;另外在用戶的網(wǎng)絡(luò)發(fā)生故障或性能不太穩(wěn)定的情況下,藏文字體的正常地顯示也存在一定問題。因此下一步我們要進(jìn)一步優(yōu)化播放器的性能。
[1]WANG Hai-h(huán)ong.Research and implementation of a Tibetan input method based smartphone OS Symbian [D].Lanzhou:Northwest University for Nationalities,2009 (in Chinese).[王海紅.基于Symbian OS的藏文手機(jī)輸入法的研究與實(shí)現(xiàn)[D].蘭州:西北民族大學(xué),2009.]
[2]YU Hong-zhi.The research of Tibetan input method cross the windows and Linux platform [J].Information Technology &Standardization,2007,8 (8):60-64 (in Chinese). [于洪志.跨Windows和Linux平臺(tái)的藏文輸入法研究 [J].信息技術(shù)與標(biāo)準(zhǔn)化,2007,8 (8):60-64.]
[3]HU Jie.Flex completely self-study manual [M].Beijing:Mechanical Press,2009 (in Chinese).[胡潔.Flex完全自學(xué)手冊(cè) [M].北京:機(jī)械出版社,2009.]
[4]CHENG Shao-lian,CHEN Lin. The design of H.264 streaming media player based on Directshow [J].Shanxi Electronic Technology,2010,38 (6):65-67 (in Chinese). [程少煉,陳林.基于Directshow的H.264流媒體播放器設(shè)計(jì)[J].山西電子技術(shù),2010,38 (6):65-67.]
[5]ZHANG Hai-bin,LI Hui,WU Ye,et al.Design and implementation of embedded high definition player [J].Computer Engineering and Design,2010,31 (13):3084-3087 (in Chinese).[張海濱,李揮,吳曄,等.嵌入式高清播放器的設(shè)計(jì)與 實(shí) 現(xiàn) [J]. 計(jì) 算 機(jī) 工 程 與 設(shè) 計(jì),2010,31 (13):3084-3087.]
[6]MA Yan,LI Cun,LI Xiaoyong,et al.Design and implemen-tation of multimedia player based on ARM [J].Computer Engineering,2006,32 (24):221-223 (in Chinese).[馬燕,李存,李曉勇,等.基于ARM平臺(tái)的多媒體播放器的設(shè)計(jì)與實(shí)現(xiàn) [J].計(jì)算機(jī)工程,2006,32 (24):221-223.]
[7]GAO Ding-guo,GONG Yu-chang.A statistically study on the qualities of all modern Tibetan character set [J].Journal of Chinese Information Processing,2005,19 (1):71-75 (in Chinese).[高定國,龔育昌.現(xiàn)代藏字全集的屬性統(tǒng)計(jì)研究[J].中文信息學(xué)報(bào),2005,19 (1):71-75.]
[8]LIU Tao,YANG Xiu-xia.Unicode programming in Chinese multilingual text processing [J].Computer Engineering and Design,2006,27 (6):2020-2023 (in Chinese). [劉濤,楊秀霞.中國多民族文字信息處理中的Unicode編程 [J].計(jì)算機(jī)工程與設(shè)計(jì),2006,27 (6):2020-2023.]
[9]HE Hui,WANG Hong-jun,HUANG Yong-jian.Design and implementation of file system in intelligent player[J].Journal of Shandong University (Engineering Science),2006,36 (3):77-80 (in Chinese).[何輝,王洪君,黃勇堅(jiān).智能播放器文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [J].山東大學(xué)學(xué)報(bào) (工學(xué)版),2006,36 (3):77-80.]
[10]SUN Xiao-h(huán)ui,LIU Jian,WANG Chun,et al.Design and implementation of an embedded flash player [J].Computer Applications,2008,28 (1):248-250 (in Chinese). [孫曉輝,劉建,王春,等.一種嵌入式Flash播放器的設(shè)計(jì)與實(shí)現(xiàn) [J].計(jì)算機(jī)應(yīng)用,2008,28 (1):248-250.]
[11]HUANG Xi.Flex3.0RIA development:Realization based on ActionScript3.0 [M].Beijing:Electronic Industry Press,2008:508-533 (in Chinese). [黃曦.Flex3.0RIA 開發(fā)詳解:基于ActionScript3.0實(shí)現(xiàn) [M].北京:電子工業(yè)出版社,2008:508-533.]
[12]WANG Yong-h(huán)ao,ZHOU Yan-sen.Design and implementation of MP3player based on embedded Linux [J].Computer Engineering and Design,2009,30 (17):3948-3951 (in Chinese).[汪永好,周延森.基于嵌入式Linux的MP3播放器的設(shè)計(jì)與實(shí)現(xiàn) [J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30 (17):3948-3951.]
[13]XU Xue-mei,XU Wei-qin,ZHOU Wen,et al.Design and implementation of multi-format media player based on S3C2440[J]. Microcomputer Information,2010,26 (9-2):12-14(in Chinese). [許雪梅,徐蔚欽,周文,等.基于S3C2440的多格式媒體播放器的設(shè)計(jì)與實(shí)現(xiàn) [J].微計(jì)算機(jī)信息,2010,26 (9-2):12-14.]
[14] WANG Dao-qian,LIU Ding-zhi, WEN Jun-h(huán)ao.Analysis and realization of MP3player based on ARM processor [J].Computer Engineering and Design,2007,28 (7):1595-1597(in Chinese).[王道乾,劉定智,文俊浩.基于ARM處理器的MP3播放器分析與實(shí)現(xiàn) [J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28 (7):1595-1597.]
[15]SHEN Jing,HE Bi-shi,ZHOU Li.Design and implementation of Flash player for mobile device [J].Computer Systems& Applications,2009,18 (2):83-86 (in Chinese).[沈靜,何必仕,周麗.移動(dòng)Flash播放器的設(shè)計(jì)與實(shí)現(xiàn) [J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2009,18 (2):83-86.]