王棟財(cái)+梁隆愷+韓改寧+王凡+王煬
摘 要:在嵌入式系統(tǒng)中,多媒體的應(yīng)用變得越來(lái)越廣泛,因此,開(kāi)發(fā)一款功能齊全、便于跨平臺(tái)使用的媒體播放器得非常迫切。本文以嵌入式ARM9開(kāi)發(fā)平臺(tái)為基礎(chǔ),利用開(kāi)源Linux系統(tǒng)和跨平臺(tái)Qt開(kāi)發(fā)工具。在音頻開(kāi)發(fā)中采用Qt提供的Phonon多媒體框架,讓?xiě)?yīng)用程序更易于開(kāi)發(fā)了;在視頻開(kāi)發(fā)中利用MPlayer作為其后端程序,加快了對(duì)媒體的處理速度。該播發(fā)器是以一個(gè)集音頻,視頻播放于一體的一款多媒體影音娛樂(lè)軟件。該軟件可以移植在汽車(chē)、飛機(jī)以及個(gè)人手持設(shè)備上使用。
關(guān)鍵詞:嵌入式;媒體播放器;ARM9;Linux;Qt
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
The Research and Development of Media Player Based on Embedded System
WANG Dongcai,LIANG Longkai,HAN Gaining,WANG Fan,WANG Yang
(Information Engineering Department Xianyang Normal Universty,Xianyang 712000,China)
Abstract:In embedded systems,the application of multimedia is becoming more and more widely,therefore,developing a complete function,easy to use cross-platform media player is very urgent.In this paper,based on embedded ARM9 development platform,using open source Linux system and Qt cross-platform development tools.In audio development program,using Phonon multimedia framework,in order to make applications easier to develop,and using MPlayer,in the video development,to accelerate the processing speed of the media.This is a collection of audio,video play in the integration of a multimedia entertainment software.The software can be transplanted in cars,planes,handheld devices,and personal to use.
Keywords:embedded;media player;ARM9;Linux;Qt
1 引言(Introduction)
隨著計(jì)算機(jī)技術(shù)、媒體編碼技術(shù)和嵌入式技術(shù)的不斷發(fā)展,用戶(hù)對(duì)媒體娛樂(lè)終端需求的不斷提高,嵌入式設(shè)備的不斷功能強(qiáng)大和逐漸成熟的市場(chǎng),嵌入式軟件的開(kāi)發(fā)與設(shè)計(jì)越來(lái)越受到專(zhuān)業(yè)技術(shù)人員的重視。隨著MP4、數(shù)字網(wǎng)絡(luò)電視、3G、4G通訊等相關(guān)技術(shù)的成熟,許多嵌入式產(chǎn)品中都包含媒體播放器,在未來(lái)幾年內(nèi)都將會(huì)得到快速發(fā)展。因此,基于嵌入式媒體播放器的開(kāi)發(fā)具有一定的實(shí)用價(jià)值。
2 系統(tǒng)設(shè)計(jì)(System design)
本設(shè)計(jì)基于ARM9的S3C2410處理器為核心,采用LCD顯示技術(shù)及觸摸屏技術(shù),利用Qt作為GUI來(lái)提供強(qiáng)大的用戶(hù)界面,實(shí)現(xiàn)嵌入式媒體播放器的設(shè)計(jì)與開(kāi)發(fā)。
2.1 軟硬件平臺(tái)
根據(jù)對(duì)嵌入式視頻播放的分析,為了實(shí)現(xiàn)圖像顯示和音頻系統(tǒng)的功能,硬件選擇ARM9處理器,LCD顯示屏及常用的接口電路。
嵌入式音視頻系統(tǒng)開(kāi)發(fā),基于嵌入式Linux系統(tǒng),利用Qt/Embedded用戶(hù)界面,調(diào)用Qt/Embedded提供的類(lèi)庫(kù)進(jìn)行開(kāi)發(fā),該軟件功能包括音視頻文件的打開(kāi)、刪除、顯示等信息,并提供播放列表和播放控制窗口等。另外,利用幀緩沖數(shù)據(jù)進(jìn)行輸出,取消對(duì)硬件架構(gòu)的依賴(lài),保證系統(tǒng)的可移植性。該媒體播放器屬于嵌入式系統(tǒng)上層應(yīng)用程序開(kāi)發(fā),占用Linux用戶(hù)空間區(qū)域,為應(yīng)用程序移植奠定基礎(chǔ),結(jié)構(gòu)框圖如圖1所示。
圖1 嵌入式軟硬件系統(tǒng)結(jié)構(gòu)
Fig.1 Embedded hardware and software system structure
2.2 音頻接口模塊設(shè)計(jì)
該模塊主要利用Qt提供的Phonon多媒體框架,Phonon多媒體庫(kù)是由KDE的開(kāi)發(fā)人員建立的,其讓多媒體應(yīng)用程序更易于編寫(xiě)。Phonon有兩個(gè)窗口部件,通用多媒體API的前端和API提供實(shí)際多媒體服務(wù)的后端[1]。對(duì)于使用該模塊開(kāi)發(fā)項(xiàng)目來(lái)說(shuō),必須在.pro文件加上QT+=phonon才能正常使用該P(yáng)honon庫(kù)。
Phonon模塊不支持對(duì)媒體流中的數(shù)據(jù)進(jìn)行操作,但它能夠提供一種間接的方法來(lái)操作音頻流,即效果處理器。這些處理器屬于Phonon::Effect類(lèi),它們能被加載到源和匯點(diǎn)之間的路徑上,在此之間傳輸數(shù)據(jù),可用的效果依賴(lài)于Phonon的后端,通過(guò)onon::BackendCapabilities::availableAudioEffects()函數(shù)獲得,效果大致包括放大,立體全景圖中的媒體流定位,均衡補(bǔ)償和重采樣。
創(chuàng)建一個(gè)新的Phonon::Effect實(shí)例,假設(shè)取得Phonon::createPath()方法返回Phonon::Path指針,下來(lái)就可以使用它調(diào)用Phonon::Path::insertEffect(),并把剛剛創(chuàng)建的Phonon::Effect實(shí)例傳給它。數(shù)據(jù)的傳遞通過(guò)匯點(diǎn)節(jié)點(diǎn),它是數(shù)據(jù)最終傳遞的物理設(shè)備,比如聲卡、耳機(jī)或視頻設(shè)備,由Phonon::AudioOutput媒體節(jié)點(diǎn)或者Phonon::VideoPlayer以及類(lèi)似媒體節(jié)點(diǎn)的Phonon::VideoWidget窗口部件來(lái)表示,如圖2所示。endprint
圖2 媒體物理流結(jié)構(gòu)
Fig.2 Media flow physical structure
2.3 視頻接口模塊設(shè)計(jì)
本模塊使用利用一個(gè)開(kāi)源的視頻播放器MPlayer作為其后端程序[2]。MPlayer具有良好的移植性,可以移植到許多非X86平臺(tái)上,MPlayer軟件包中含有針對(duì)ARM架構(gòu)的優(yōu)化代碼,這些代碼利用ARM的特性加快了對(duì)媒體的處理速度[3]。
在liunx系統(tǒng)下,利用Qt做一個(gè)應(yīng)用界面,包括:播放、停止、快進(jìn)、快退、上/下一曲等功能模塊;并通過(guò)交叉編譯器編譯應(yīng)用程序,然后移植到ARM平臺(tái)上。具體操作如下:使用popen()來(lái)打開(kāi)Mplayer播放文件;利用process->write(“pause”)實(shí)現(xiàn)會(huì)暫停功能;最后利用connect()函數(shù)連接信號(hào)與槽函數(shù),實(shí)現(xiàn)視頻模塊設(shè)計(jì)。
3 嵌入式媒體播放器系統(tǒng)實(shí)現(xiàn)( Embedded media
player system)
對(duì)于嵌入式開(kāi)發(fā),最終都要將做好的應(yīng)用程序下載到開(kāi)發(fā)板,然后再開(kāi)發(fā)板上運(yùn)行應(yīng)用程序,這樣就實(shí)現(xiàn)了整個(gè)開(kāi)發(fā)的流程。
(1)開(kāi)發(fā)板環(huán)境配置
以博創(chuàng)科技UP-TECH 2410經(jīng)典平臺(tái)為基礎(chǔ),移植LINUX 2.6.24系統(tǒng)具體過(guò)程如下:移植LINUX操作系統(tǒng)需要移植四個(gè)文件vivi、kernek、root和fs,這四個(gè)文件分別是:
Vivi—linux操作系統(tǒng)啟動(dòng)的bootloader;
ZImage—linux操作系統(tǒng)內(nèi)核;
root.cramfs—根文件系統(tǒng);
yaffs.tar.bz2—應(yīng)用程序壓縮包;
具體移植操作可見(jiàn)文獻(xiàn)[4,5]。
(2)在上位機(jī)上編譯好可執(zhí)行文件,通過(guò)Qmake和make工具,本系統(tǒng)最終編譯的程序?yàn)閜roject。
(3)通過(guò)NFS服務(wù)或者U盤(pán)將生成的文件移植到開(kāi)發(fā)板上,當(dāng)然,開(kāi)發(fā)板上的環(huán)境已經(jīng)搭建好了,里面有所需要的庫(kù)文件。NFS服務(wù)這種方式比較慢,而用U盤(pán)的方式很快的。
(4)查看開(kāi)發(fā)板上環(huán)境變量的設(shè)置,環(huán)境變量設(shè)置非常重要,如果這個(gè)設(shè)置不正確,則應(yīng)用程序不能再開(kāi)發(fā)板上運(yùn)行。通過(guò)命令:Vi/etc/profile
(5)運(yùn)行該程序:./ project -qws
運(yùn)行界面如圖3和圖4所示。
圖3 視頻模塊 圖4 音頻模塊
Fig.3 Video module Fig.4 Audio module
4 結(jié)論(Conclusion)
本設(shè)計(jì)以嵌入式Linux為操作系統(tǒng),基于ARM9的平臺(tái)開(kāi)發(fā),利用Qt進(jìn)行圖形界面設(shè)計(jì),再通過(guò)相關(guān)環(huán)境配置及LCD和觸摸屏的驅(qū)動(dòng)開(kāi)發(fā)設(shè)計(jì),使得開(kāi)發(fā)應(yīng)用程序運(yùn)行在ARM9開(kāi)發(fā)板。該系統(tǒng)開(kāi)發(fā)為嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)提供一定的思路,而且應(yīng)用程序移植性好,可廣泛應(yīng)用各類(lèi)嵌入式音視頻系統(tǒng)中。
參考文獻(xiàn)(References)
[1] 王建民,張宏壯.基于Qt的嵌入式媒體播放器的設(shè)計(jì)與實(shí)現(xiàn)
[J].微計(jì)算機(jī)信息,2009,(4):8-9.
[2] Kim J,et al.Efficient Metadata Management for Flash File
Systems.11th IEEE International Symposium on Object
Oriented Real- Time Distributed Computing,2008:535-540.
[3] 任亞飛,唐濤.基于嵌入式Linux的列控系統(tǒng)人機(jī)界面的實(shí)現(xiàn)
[J].鐵路計(jì)算機(jī)應(yīng)用,2005,(4):23-26.
[4] 陳云鶴,徐晶.基于QT/Embedded的媒體播放器的設(shè)計(jì)與實(shí)
現(xiàn)[J].微型電腦應(yīng)用,2006,8(22):33-34;52.
[5] 馬勇,等.嵌入式多媒體播放器的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].杭州電
子科技大學(xué)學(xué)報(bào),2006,2(26):60-63.
作者簡(jiǎn)介:
王棟財(cái)(1990-),男,學(xué)士.研究領(lǐng)域:計(jì)算機(jī)應(yīng)用.
梁隆愷(1991-),男,學(xué)士,研究領(lǐng)域:計(jì)算機(jī)應(yīng)用.
韓改寧(1977-),女,碩士,講師.研究領(lǐng)域:嵌入式系統(tǒng)應(yīng)用,
智能機(jī)器人.
王 凡(1989-),男,學(xué)士.研究領(lǐng)域:軟件開(kāi)發(fā).
王 煬(1990-),男,學(xué)士.研究領(lǐng)域:計(jì)算機(jī)應(yīng)用.endprint
圖2 媒體物理流結(jié)構(gòu)
Fig.2 Media flow physical structure
2.3 視頻接口模塊設(shè)計(jì)
本模塊使用利用一個(gè)開(kāi)源的視頻播放器MPlayer作為其后端程序[2]。MPlayer具有良好的移植性,可以移植到許多非X86平臺(tái)上,MPlayer軟件包中含有針對(duì)ARM架構(gòu)的優(yōu)化代碼,這些代碼利用ARM的特性加快了對(duì)媒體的處理速度[3]。
在liunx系統(tǒng)下,利用Qt做一個(gè)應(yīng)用界面,包括:播放、停止、快進(jìn)、快退、上/下一曲等功能模塊;并通過(guò)交叉編譯器編譯應(yīng)用程序,然后移植到ARM平臺(tái)上。具體操作如下:使用popen()來(lái)打開(kāi)Mplayer播放文件;利用process->write(“pause”)實(shí)現(xiàn)會(huì)暫停功能;最后利用connect()函數(shù)連接信號(hào)與槽函數(shù),實(shí)現(xiàn)視頻模塊設(shè)計(jì)。
3 嵌入式媒體播放器系統(tǒng)實(shí)現(xiàn)( Embedded media
player system)
對(duì)于嵌入式開(kāi)發(fā),最終都要將做好的應(yīng)用程序下載到開(kāi)發(fā)板,然后再開(kāi)發(fā)板上運(yùn)行應(yīng)用程序,這樣就實(shí)現(xiàn)了整個(gè)開(kāi)發(fā)的流程。
(1)開(kāi)發(fā)板環(huán)境配置
以博創(chuàng)科技UP-TECH 2410經(jīng)典平臺(tái)為基礎(chǔ),移植LINUX 2.6.24系統(tǒng)具體過(guò)程如下:移植LINUX操作系統(tǒng)需要移植四個(gè)文件vivi、kernek、root和fs,這四個(gè)文件分別是:
Vivi—linux操作系統(tǒng)啟動(dòng)的bootloader;
ZImage—linux操作系統(tǒng)內(nèi)核;
root.cramfs—根文件系統(tǒng);
yaffs.tar.bz2—應(yīng)用程序壓縮包;
具體移植操作可見(jiàn)文獻(xiàn)[4,5]。
(2)在上位機(jī)上編譯好可執(zhí)行文件,通過(guò)Qmake和make工具,本系統(tǒng)最終編譯的程序?yàn)閜roject。
(3)通過(guò)NFS服務(wù)或者U盤(pán)將生成的文件移植到開(kāi)發(fā)板上,當(dāng)然,開(kāi)發(fā)板上的環(huán)境已經(jīng)搭建好了,里面有所需要的庫(kù)文件。NFS服務(wù)這種方式比較慢,而用U盤(pán)的方式很快的。
(4)查看開(kāi)發(fā)板上環(huán)境變量的設(shè)置,環(huán)境變量設(shè)置非常重要,如果這個(gè)設(shè)置不正確,則應(yīng)用程序不能再開(kāi)發(fā)板上運(yùn)行。通過(guò)命令:Vi/etc/profile
(5)運(yùn)行該程序:./ project -qws
運(yùn)行界面如圖3和圖4所示。
圖3 視頻模塊 圖4 音頻模塊
Fig.3 Video module Fig.4 Audio module
4 結(jié)論(Conclusion)
本設(shè)計(jì)以嵌入式Linux為操作系統(tǒng),基于ARM9的平臺(tái)開(kāi)發(fā),利用Qt進(jìn)行圖形界面設(shè)計(jì),再通過(guò)相關(guān)環(huán)境配置及LCD和觸摸屏的驅(qū)動(dòng)開(kāi)發(fā)設(shè)計(jì),使得開(kāi)發(fā)應(yīng)用程序運(yùn)行在ARM9開(kāi)發(fā)板。該系統(tǒng)開(kāi)發(fā)為嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)提供一定的思路,而且應(yīng)用程序移植性好,可廣泛應(yīng)用各類(lèi)嵌入式音視頻系統(tǒng)中。
參考文獻(xiàn)(References)
[1] 王建民,張宏壯.基于Qt的嵌入式媒體播放器的設(shè)計(jì)與實(shí)現(xiàn)
[J].微計(jì)算機(jī)信息,2009,(4):8-9.
[2] Kim J,et al.Efficient Metadata Management for Flash File
Systems.11th IEEE International Symposium on Object
Oriented Real- Time Distributed Computing,2008:535-540.
[3] 任亞飛,唐濤.基于嵌入式Linux的列控系統(tǒng)人機(jī)界面的實(shí)現(xiàn)
[J].鐵路計(jì)算機(jī)應(yīng)用,2005,(4):23-26.
[4] 陳云鶴,徐晶.基于QT/Embedded的媒體播放器的設(shè)計(jì)與實(shí)
現(xiàn)[J].微型電腦應(yīng)用,2006,8(22):33-34;52.
[5] 馬勇,等.嵌入式多媒體播放器的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].杭州電
子科技大學(xué)學(xué)報(bào),2006,2(26):60-63.
作者簡(jiǎn)介:
王棟財(cái)(1990-),男,學(xué)士.研究領(lǐng)域:計(jì)算機(jī)應(yīng)用.
梁隆愷(1991-),男,學(xué)士,研究領(lǐng)域:計(jì)算機(jī)應(yīng)用.
韓改寧(1977-),女,碩士,講師.研究領(lǐng)域:嵌入式系統(tǒng)應(yīng)用,
智能機(jī)器人.
王 凡(1989-),男,學(xué)士.研究領(lǐng)域:軟件開(kāi)發(fā).
王 煬(1990-),男,學(xué)士.研究領(lǐng)域:計(jì)算機(jī)應(yīng)用.endprint
圖2 媒體物理流結(jié)構(gòu)
Fig.2 Media flow physical structure
2.3 視頻接口模塊設(shè)計(jì)
本模塊使用利用一個(gè)開(kāi)源的視頻播放器MPlayer作為其后端程序[2]。MPlayer具有良好的移植性,可以移植到許多非X86平臺(tái)上,MPlayer軟件包中含有針對(duì)ARM架構(gòu)的優(yōu)化代碼,這些代碼利用ARM的特性加快了對(duì)媒體的處理速度[3]。
在liunx系統(tǒng)下,利用Qt做一個(gè)應(yīng)用界面,包括:播放、停止、快進(jìn)、快退、上/下一曲等功能模塊;并通過(guò)交叉編譯器編譯應(yīng)用程序,然后移植到ARM平臺(tái)上。具體操作如下:使用popen()來(lái)打開(kāi)Mplayer播放文件;利用process->write(“pause”)實(shí)現(xiàn)會(huì)暫停功能;最后利用connect()函數(shù)連接信號(hào)與槽函數(shù),實(shí)現(xiàn)視頻模塊設(shè)計(jì)。
3 嵌入式媒體播放器系統(tǒng)實(shí)現(xiàn)( Embedded media
player system)
對(duì)于嵌入式開(kāi)發(fā),最終都要將做好的應(yīng)用程序下載到開(kāi)發(fā)板,然后再開(kāi)發(fā)板上運(yùn)行應(yīng)用程序,這樣就實(shí)現(xiàn)了整個(gè)開(kāi)發(fā)的流程。
(1)開(kāi)發(fā)板環(huán)境配置
以博創(chuàng)科技UP-TECH 2410經(jīng)典平臺(tái)為基礎(chǔ),移植LINUX 2.6.24系統(tǒng)具體過(guò)程如下:移植LINUX操作系統(tǒng)需要移植四個(gè)文件vivi、kernek、root和fs,這四個(gè)文件分別是:
Vivi—linux操作系統(tǒng)啟動(dòng)的bootloader;
ZImage—linux操作系統(tǒng)內(nèi)核;
root.cramfs—根文件系統(tǒng);
yaffs.tar.bz2—應(yīng)用程序壓縮包;
具體移植操作可見(jiàn)文獻(xiàn)[4,5]。
(2)在上位機(jī)上編譯好可執(zhí)行文件,通過(guò)Qmake和make工具,本系統(tǒng)最終編譯的程序?yàn)閜roject。
(3)通過(guò)NFS服務(wù)或者U盤(pán)將生成的文件移植到開(kāi)發(fā)板上,當(dāng)然,開(kāi)發(fā)板上的環(huán)境已經(jīng)搭建好了,里面有所需要的庫(kù)文件。NFS服務(wù)這種方式比較慢,而用U盤(pán)的方式很快的。
(4)查看開(kāi)發(fā)板上環(huán)境變量的設(shè)置,環(huán)境變量設(shè)置非常重要,如果這個(gè)設(shè)置不正確,則應(yīng)用程序不能再開(kāi)發(fā)板上運(yùn)行。通過(guò)命令:Vi/etc/profile
(5)運(yùn)行該程序:./ project -qws
運(yùn)行界面如圖3和圖4所示。
圖3 視頻模塊 圖4 音頻模塊
Fig.3 Video module Fig.4 Audio module
4 結(jié)論(Conclusion)
本設(shè)計(jì)以嵌入式Linux為操作系統(tǒng),基于ARM9的平臺(tái)開(kāi)發(fā),利用Qt進(jìn)行圖形界面設(shè)計(jì),再通過(guò)相關(guān)環(huán)境配置及LCD和觸摸屏的驅(qū)動(dòng)開(kāi)發(fā)設(shè)計(jì),使得開(kāi)發(fā)應(yīng)用程序運(yùn)行在ARM9開(kāi)發(fā)板。該系統(tǒng)開(kāi)發(fā)為嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)提供一定的思路,而且應(yīng)用程序移植性好,可廣泛應(yīng)用各類(lèi)嵌入式音視頻系統(tǒng)中。
參考文獻(xiàn)(References)
[1] 王建民,張宏壯.基于Qt的嵌入式媒體播放器的設(shè)計(jì)與實(shí)現(xiàn)
[J].微計(jì)算機(jī)信息,2009,(4):8-9.
[2] Kim J,et al.Efficient Metadata Management for Flash File
Systems.11th IEEE International Symposium on Object
Oriented Real- Time Distributed Computing,2008:535-540.
[3] 任亞飛,唐濤.基于嵌入式Linux的列控系統(tǒng)人機(jī)界面的實(shí)現(xiàn)
[J].鐵路計(jì)算機(jī)應(yīng)用,2005,(4):23-26.
[4] 陳云鶴,徐晶.基于QT/Embedded的媒體播放器的設(shè)計(jì)與實(shí)
現(xiàn)[J].微型電腦應(yīng)用,2006,8(22):33-34;52.
[5] 馬勇,等.嵌入式多媒體播放器的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].杭州電
子科技大學(xué)學(xué)報(bào),2006,2(26):60-63.
作者簡(jiǎn)介:
王棟財(cái)(1990-),男,學(xué)士.研究領(lǐng)域:計(jì)算機(jī)應(yīng)用.
梁隆愷(1991-),男,學(xué)士,研究領(lǐng)域:計(jì)算機(jī)應(yīng)用.
韓改寧(1977-),女,碩士,講師.研究領(lǐng)域:嵌入式系統(tǒng)應(yīng)用,
智能機(jī)器人.
王 凡(1989-),男,學(xué)士.研究領(lǐng)域:軟件開(kāi)發(fā).
王 煬(1990-),男,學(xué)士.研究領(lǐng)域:計(jì)算機(jī)應(yīng)用.endprint