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