摘 要:基于傳統VOD受到線路帶寬影響導致傳輸速率較慢的特點,設計一種基于ARM和linux操作系統的無線視頻點播系統。嵌入式平臺作為視頻點播終端,實現在QT界面中選擇播放目錄并調用mplayer播放的功能,并通過WiFi無線局域網實現播放目錄的下載和視頻文件的傳輸。PC端通過FTP服務器中的主目錄實現視頻文件的加載并提供資源。通過測試表明,終端上可得到實時清晰的視頻畫面,適合大型商場和家居環境的應用。
關鍵詞:視頻點播;操作系統;播放器;圖形界面;無線網絡;服務器
中圖分類號: TP36 文獻標識碼:A
1 引 言
在一些公共場所,為了及時播放最新信息或居民服務類的視頻信息,都安裝有視頻點播系統,現有的點播終端在播放過程中時常發生中斷,而且系統維護成本較高。本文所設計的點播系統克服了這些缺點,而且無線網絡與有線網絡相比,有組網靈活,維護方便的優點,廠商進入該領域的門檻比較較低,只要在人口較密集的地方設置“熱點”,并通過高速線路將因特網接入即可,這也使得基于wifi無線網絡的視頻點播成為研究熱點。
2 系統總體設計
本文提出一種基于wifi無線網絡的嵌入式視頻點播系統,該系統主要由ftp服務器、vod客戶端、Mplayer播放器、QT操作界面組成。ftp服務器主要提供片源服務,流媒體服務,本系統中選擇ServerU服務器軟件。VOD客戶端主要采用Qt圖形界面,用來顯示服務器上的視頻文件列表,取得各文件的實際地址,調用播放器播放視頻。該平臺通過wifi信道訪問PC端的FTP服務器,獲得片源目錄,然后在客戶端qt界面中,將得到的文件列表在窗口中顯示出來,通過鼠標點擊事件選擇要播放的視頻文件,調用mplayer播放器實現視頻播放。
3 系統硬件設計
該系統主要由S3C2440微處理器、FLASH存儲器、LCD顯示屏、WiFi無線網卡組成,并在PC端安裝FTP服務器提供視頻文件目錄。芯片S3C2440有低功耗, 高速的處理計算能力,它是基于ARM920T內核的32bit處理器,采用0.13Um cmos 標準單元和存儲單元復合體,而且采用了新的總線構架(AMBA),主頻上達到400MHZ(內核供電1.3V),大約是S3C2410的一倍。FLASH采用64M的NAND FLASH,型號為K9F1208,可以兼容16M,32M,或128M字節。64M字節的SDRAM,用兩片K4S561632組成,工作在32位模式下。晶振提供12MHZ的頻率,經過CPU內部倍頻和分頻后,CPU可得到正常的工作頻率。WiFi無線網卡型號為VT6656,基于VT6656的WLAN模塊可以提供寬裕的帶寬,實現高清晰數字媒體內容的傳輸。其整體硬件實現框架如圖1所示。
4 系統軟件設計與實現
4.1 嵌入式系統平臺的實現
搭建嵌入式系統開發平臺主要任務是移植系統引導程序Bootloader,之后根據功能的需要裁減內核及編譯安裝系統內核[1],本系統選擇的是2.6.30內核版本,最后加載根文件系統,并安裝交叉編譯源碼包eabi-4.1.2.tar.bz2,為后期交叉編譯qt庫做準備。另外在PC機上安裝Server-U服務器,添加Domain用戶,設置服務ip,并在Dir Acccess目錄中添加主目錄的權限,設置為可讀寫,激活啟動Ser-U服務器[2]。
4.2 WiFi無線傳輸模塊
基于802.11b協議的wifi模塊,主要功能是實現服務端與客戶端的無線通信。它在2.4Ghz頻段工作,所支持的速度最高達54 Mbps,可根據信號強弱做相應調整。在內核的配置和編譯時,需要在networking菜單下添加對802.11b協議的支持,以及在device drivers的network device support的wireless LAN菜單中加載無線網絡的驅動,然后保存退出,重新編譯內核,使內核支持無線網卡[3]。然后解壓wifi驅動模塊源碼包,在makefile文件中更改交叉編譯器的路徑和內核路徑,編譯出模塊文件。在進入開發板的linux系統之后,接上USB-WiFi網卡模塊,并加載該模塊。模塊加載成功后會增加出一塊名為eth1的網卡設備。這時配置網卡ip與MAC地址(mac地址為12位六組數字,用冒號隔開,ip根據實際情況配置),設置完后重起網絡。
4.3 QT庫移植
Qt是一個專門為嵌入式系統設計圖形用戶界面的工具包,它開放源碼,可移植性好,有自己的窗口系統,關鍵是它采用framebuffer(幀緩沖)作為底層圖形接口,避免了開發者使用繁瑣的Xlib/Server系統。同時,將外部輸入設備抽象為鍵盤和鼠標輸入事件[4]。
本系統采用的QT源碼包為qtembeddedfree3.3.8.tar.bz2,交叉編譯后下載到開發板上即可實現其功能。主要步驟如下:(1)將壓縮包拷貝到當前目錄下進行解壓,并復制x86平臺中的uic,moc工具到解壓后的文件中的/bin目錄下并設置安裝好環境變量。(2)編寫QTE源碼目錄中的src/tools/qconfiglocal.h,添加觸摸屏支持。(3)修改/share/tslib/etc 目錄下的ts.conf文件,將module_raw input 前面的注釋去掉,使QT支持觸摸屏。(4)修改QTE源碼中的src/embedded/qmouselinuxtp_qws.cpp 修改為正確的觸摸屏設配。(5)將QT_NO_IMAGEIO_JPEG宏注釋,以便QTE支持Jpeg圖片編譯。配置編譯QT庫后,將生成的庫移植到開發平臺的根文件系統中。
4.4 QT圖形界面設計
本系統主要的應用程序在于QT圖形界面的設計[5],在程序中主要實現功能為連通無線網絡,在PC端獲取目錄并連接到客戶端listbox窗體,在目錄列表選擇播放文件,調用Mplayer實現播放視頻文件。主窗體界面使用Qt設計器來完成,搭建好所需要的窗體框架,然后利用信號與槽事件來實現函數功能。主要實現函數如下:
使用connect函數實現開發平臺到PC端FTP服務器的連接功能:
void Windows:connect(QListBoxltem *item)
{
listBox1->clear(); //清空listBox1窗體
listBox1->setFocus(); //listBox1獲得當前焦點
ftp->setHost(lineEdit1->text()); //設置服務器端ip地址
ftp->setPath(“/”+item->text());//設置服務器端主目錄路徑
ftp->listChildren(); //請求服務器提供文件列表
testLabel1->setText(“ftp://”+ftp->host()+ftp->path());
}
使用play函數之前建立一個新的進程process,調用mplayer播放器及參數,以及播放文件,并將視頻窗口定位到frame1中:
void Form4::play()
{
process-> addArgument(“mplayer”); //調用mplayer命令
process->addArgument(“-slave”);//調用命令參數模式
process-> addArgument(dir1.currentDirPath ()+“/”+str1); //當前視頻文件
process-> addArgument(“-wid”); //將播放器窗體定位到frame1窗體中
process->addArgument(QString::number(frame1->winId()));
process -> start(); //開始播放
}
5 系統測試
系統測試環境是在實驗室內組建的小型局域網內實現。在主界面中輸入用戶名,密碼,和服務器ip地址,點擊connect按鍵,連接后即可在listbox列表框中顯示出ftp服務器下的主目錄,這樣就可以在觸摸屏點擊選擇所播放的視頻文件,然后點擊播放按鈕,開始播放,效果如圖2所示:
6 結 語
實現了基于ArmLinux的無線視頻點播系統,客戶端作為視頻點播終端實現了圖形界面的設計及目錄文件列表的下載與視頻文件的傳輸功能。PC端通過ftp服務器提供了視頻文件的信息和支持網絡下載的功能。測試表明,系統實現的功能和性能基本滿足視頻點播的要求,下一步工作將研究Mplayer播放原理及內核裁剪與配置問題,使其在啟動時保持更短的時間。
參考文獻
[1] 王黎明,陳雙橋,閆曉玲.ARM9 嵌入式系統開發與實踐[M].北京:北京航空航天大學出版社,2008:78-112.
[2] 計宏. 基于ServU的FTP設計與實現[J].科技信息,2010,(11):472-567.
[3] 劉芳華.基于ARM的WiFi無線通終端的研究與實現[D].武漢:武漢科技大學,2010:12-23.
[4] 趙瑩,徐大平,呂躍剛.基于Qt/Embedded 的嵌入式控制界面開發[J].微計算機信息,2009,04-2:36-38.
[5] 焦燕. 基于Qt的嵌入式GUI和瀏覽器的實現[D].北京:電子科技大學,2010:26-45.