戴玉剛,劉戰東
(西北民族大學 中國民族信息技術研究院,甘肅 蘭州730030)
藏族有著悠久的歷史、燦爛的文化,其文獻遺存在國內僅次于漢族,在世界民族之林亦有很大反響。藏語現在仍然在藏區被廣泛的使用,但是很多藏族同胞對漢語或其它語言知之甚少甚至根本都不了解[1-2]。由于計算機信息技術的成熟和藏文處理技術的發展,開發實時可靠、多功能、數字化、操作簡單的基于計算機網絡通訊技術和多媒體應用的藏文Flv播放器己成為計算機、通信、消費電子產品領域技術發展的主要方向之一[3-4]。
雖然說隨著計算機技術的迅速發展,藏文信息技術有了一定的發展,但是在國內外并沒有查找到有關藏文Flv播放器的研究及相關報道,因此展開對藏文Flv播放器的研究意義重大。應該說藏文Flv播放器在國內外的研究具有非常重要的應用價值。本文設計開發的藏文Flv播放器,兼容目前流行的Flash v10格式,它可以作為一個獨立的播放器,也可以作為插件集成到瀏覽器之中。
本文設計的藏文Flv播放器是采用Flex3.0開發,下面對該技術作簡要的闡述。Flex是Adobe公司開發的支持RIA (rich internet applications)開發和部署的技術產品,是面向企業級的應用。利用Flex的強大功能,用戶可以開發出富有交互性和標簽的用戶界面。在Flex工程中,用戶使用ActioScript為應用程序添加行為,主要采用兩種方法:一種是在MXML文件中直接添加ActioScript代碼;另一種是直接在AS文件中編寫ActioScript代碼,然后將其導入到MXML文件。MXML是一種用來描述Flex應用程序界面的標簽語言,它是基于XML的一種實現[3-4]。
由于Flex3.0是英文版本,所以對中文字體的支持并不太理想,只有少數中文字體可以使用,而藏文不屬于其中一種。
本文設計的藏文Flv播放器是采用Flex3.0開發,下面對該技術作簡要的闡述。Flex是Adobe公司開發的支持RIA (rich internet applications)開發和部署的技術產品,是面向企業級的應用。利用Flex的強大功能,用戶可以開發出富有交互性和標簽的用戶界面。在Flex工程中,用戶使用ActioScript為應用程序添加行為,主要采用兩種方法:一種是在MXML文件中直接添加ActioScript代碼;另一種是直接在AS文件中編寫ActioScript代碼,然后將其導入到MXML文件。MXML是一種用來描述Flex應用程序界面的標簽語言,它是基于XML的一種實現[4-6]。
由于Flex3.0是英文版本,所以對中文字體的支持并不太理想,只有少數中文字體可以使用,而藏文不屬于其中一種。如果需要使用藏文字體,必需引用藏文字體的.TTF文件,主要有兩種方法可以采用:①在控件的屬性中引用;②在CSS樣式中引用藏文字體。具體介紹如下:
(1)在控件的屬性中引用:例如,需要你想把按鈕控件名設為藏文的 “確定”,那么在按鈕控件的屬性中引用藏文 “TIBETBT”字體的語法格式如下所示
(2)在CSS樣式中引用藏文字體:在CSS樣式中引用藏文字體的語法格式如下所示:
@font-face
{
Src:url(“藏文字體路徑”);
fontFamily:TIBETBT;//藏文字體名
}
為了更好地設計和開發藏文Flv播放器,本文首先對藏文字體的特點和結構進行研究。
藏文屬于拼音文字,通常分為兩類:現代藏文和古代梵文。現代藏文是在梵文的基礎上發展而來的,因此現代藏文和梵文在書寫上十分相類,它是由輔音字母、反體字、疊字、元音符號、數字及符號組成[7]。一個藏字有1~7個字符構成[7-8],它是按自左到右、自上到下的順序呈非線性排列。一個完整的藏字的拼寫形式如圖1所示。
藏文Flv播放器 (TibetanFlvPlayer)的主要作用是,接受用戶選擇的本地Flv文件,并將選擇的視頻文件播放和顯示出來。接受用戶對播放的控制,包括改變播放、暫停和重播。接受用戶對視頻的控制。因此,在實例中需要處理的對象有:視頻顯示器和控制器等。其功能主要包括:處理用戶選擇、顯示視頻文件、調節視頻效果等。圖2展示了本實例TibetanFlvPlayer中的結構及各模塊的功能,這里僅展示了主要的功能[9-10]。

圖1 一個藏字圖

圖2 TibetanFlvPlayer結構設計
下面以 “TibetanFlvPlayer”實例為例介紹一下需要的功能:
這是TibetanFlvPlayer的主體,負責播放當前的Flv文件,將此視頻顯示出來。Flex 3.0中的VideoDisplay組件專用來播放 Flv格式視頻[10-12]。
提供與用戶交互的功能,包括播放與暫停及全屏等。此功能增加了播放器的可操作性,也增加了用戶的興趣[10-12]。播放控制器中,藏文名稱與相應的中文名稱對照表,如表1所示。

?
(1)播放/暫停功能:播放/暫停功能只需要調用Video Display組件的play方法和pause方法實現。
(2)全屏/退出全屏功能:實現 “全屏/退出全屏”功能前需要在FlvModel類中定義一個了布爾型的變量is-FullSrceen,用以表示當前是否為全屏狀態。
(3)靜音功能:由于VideoDisplay組件的volume屬性綁定在id為videoVolume的HSlider組件上,所以控件HSlisder組件的值就能控制視頻的音量。“靜音”功能只要videoVolume.value=0即可。
(4)改變播放速度:由于id為videoSlider的 HSlider組件的屬性綁定在VideoDisplay組件的playheadTime屬性上,所以HSlider組件能實時顯示播放速度。
(5)拖放控制:本播放器允許用戶將Flv和H.264編碼的文件拖放到上面進行播放。一旦視頻文件被接受,視頻文件的路徑也被傳給了播放器。
TibetanFlvPlayer播放器實例中使用<mx:MenuBar>組件添加菜單,當用戶單擊菜單子項時會執行相應的操作。在TibetanFlvPlayer中,藏文菜單名稱與相應的中文名稱對照表如表2所示。

?
單擊相應的按鈕時,彈出的對話框中藏文信息與相應的中文信息對照表如表3所示。
菜單項重要包括兩個主菜單:“文件”和 “關于”。“文件”菜單下面重要有兩個子菜單:“打開”和 “退出”,“關于”菜單下面重要有一個子菜單:“版本”。當用戶單擊菜單 “打開”時,可以打開本地文件,選擇要播放的Flv格式的視頻,當單擊菜單 “退出”時,將彈出一個對話框,有兩個按鈕:“最小化到托盤”和 “直接退出程序”,最終效果如圖3所示。當單擊菜單 “版本”時,將彈出一個對話框顯示版權和版本信息,最終效果如圖4所示。

?

(1)TibFlvModel類:TibFlvModel類繼承于 Cairngorm框架的ModelLocator類,用以存儲數據、狀態和資源[11]。
(2)TibFlvControl類:TibFlvControl類繼承于Cairngorm框架的FrontController類,用以監聽CairngormEvet事件[12-15]。
(3)OpenVideoEvent類:OpenVideoEvent類繼承于Cairngorm框架的CairngormEvent類,用以打開視頻事件[14]。
(4)OpenVideoCommand命令類:OpenVideoCommand命令類繼承于Cairngorm框架的Command類,用以對事件進行具體處理。OpenVideoCommand命令類的主要功能是加載Flv格式視頻[14]。
(5)Utils類:Utils類中定義了時間格式化處理函數formatVideoTime,用以將單位為毫秒的小數轉換為形如“12:23:23”的時間格式字符串[14-15]。
(6)TibFlvPlayViewHelper類:TibFlvPlayViewHelper類繼承于Cairngorm框架的ViewHelper類,用于修改MXML組件[14-15]。
(7)退出應用程序和最小化托盤:以下代碼定義了closingApplication函數實現了 “應用程序的退出和最小化托盤”功能[15]。

(8)藏文字體的顯示:Flex中除了使用設備字體外,還可以使用Windows中的內置字體。藏文字體是一種非系統字體,它需要注冊以后才能被使用,語法如下所示。
[Embed (source = “C:/WINDOWS/Fonts/arial.ttf”,fontName= “Arial”,mimeType= “application/xfont”)]
Private var ArialFont:Class;
參數說明如下:①source:字體文件所在路徑。②font-Name:程序中所使用的字體別名。③mimeType:application/x-font。
硬件環境配置如表4所示。

表4 硬件配置
測試效果如圖5所示。
實驗結果分析:通過測試,我們發現TibetanFlvPlayer不僅可以播放Flv格式的視頻文件,而且還可以直接播放F4V格式的視頻文件,播放效果也非常好,已達到了我們設計開發的目的。

圖5 實驗效果
目前,Flex技術已日漸成熟,利用該技術開發的應用程序具有更強的用戶交互性,可以給用戶帶來更豐富、體驗性更強的用戶界面。利用Flex技術,我們設計和實現藏文Flv播放器,通過測試,視頻播放效果非常理想,同時本播發器還可以正常播發F4V格式的視頻文件。但是本播放器也存在很多不足,與我們常用的播放器相比,功能還不夠完善;由于本播放器利用遠程服務器作為用戶界面的藏文正常顯示的支撐技術,目的就是防止在用戶沒安裝藏文字庫的情況下,TibetanPlayer也能夠正常顯示藏文,所以運行開銷比較大;另外在用戶的網絡發生故障或性能不太穩定的情況下,藏文字體的正常地顯示也存在一定問題。因此下一步我們要進一步優化播放器的性能。
[1]WANG Hai-hong.Research and implementation of a Tibetan input method based smartphone OS Symbian [D].Lanzhou:Northwest University for Nationalities,2009 (in Chinese).[王海紅.基于Symbian OS的藏文手機輸入法的研究與實現[D].蘭州:西北民族大學,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平臺的藏文輸入法研究 [J].信息技術與標準化,2007,8 (8):60-64.]
[3]HU Jie.Flex completely self-study manual [M].Beijing:Mechanical Press,2009 (in Chinese).[胡潔.Flex完全自學手冊 [M].北京:機械出版社,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流媒體播放器設計[J].山西電子技術,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).[張海濱,李揮,吳曄,等.嵌入式高清播放器的設計與 實 現 [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平臺的多媒體播放器的設計與實現 [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).[高定國,龔育昌.現代藏字全集的屬性統計研究[J].中文信息學報,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].計算機工程與設計,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).[何輝,王洪君,黃勇堅.智能播放器文件系統的設計與實現 [J].山東大學學報 (工學版),2006,36 (3):77-80.]
[10]SUN Xiao-hui,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播放器的設計與實現 [J].計算機應用,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 開發詳解:基于ActionScript3.0實現 [M].北京:電子工業出版社,2008:508-533.]
[12]WANG Yong-hao,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播放器的設計與實現 [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的多格式媒體播放器的設計與實現 [J].微計算機信息,2010,26 (9-2):12-14.]
[14] WANG Dao-qian,LIU Ding-zhi, WEN Jun-hao.Analysis and realization of MP3player based on ARM processor [J].Computer Engineering and Design,2007,28 (7):1595-1597(in Chinese).[王道乾,劉定智,文俊浩.基于ARM處理器的MP3播放器分析與實現 [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).[沈靜,何必仕,周麗.移動Flash播放器的設計與實現 [J].計算機系統應用,2009,18 (2):83-86.]