999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于嵌入式的車載多媒體軟件開發(fā)

2016-05-14 21:43:50李飛
現(xiàn)代電子技術(shù) 2016年9期

李飛

摘 要: 設(shè)計(jì)了一種基于嵌入式系統(tǒng)的高清晰、便攜式的車載播放系統(tǒng)。該播放系統(tǒng)的軟件設(shè)計(jì)以Mplayer為后臺(tái),實(shí)現(xiàn)對(duì)音視頻文件的解碼播放等工作,并以Qt的基礎(chǔ)類庫為基礎(chǔ)設(shè)計(jì)了嵌入式多媒體播放器的前端控制圖形界面,通過創(chuàng)建QProcess進(jìn)程,實(shí)現(xiàn)對(duì)播放過程的控制,與后臺(tái)Mplayer進(jìn)行通信,實(shí)時(shí)獲取并顯示播放信息,并在指定窗口對(duì)音視頻碼流進(jìn)行輸出顯示。

關(guān)鍵詞: 汽車多媒體; 車載播放; 嵌入式系統(tǒng); 多媒體播放器

中圖分類號(hào): TN919?34; TM417 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2016)09?0149?04

Abstract: A highly definite and portable vehicle?mounted broadcast system based on embedded system was designed. The software design of this broadcast system takes Mplayer as the background to realize the decoding and broadcast work of the audio and video files. The front?end control graphical interface of the embedded multimedia player was designed based on Qt foundation class library. The QProcess process was established to control the broadcast process, communicate with background Mplayer, acquire and display the broadcast information in real time, and output and display the audio and video code stream at the specified window.

Keywords: automobile multimedia; vehicle?mounted broadcast; embedded system; multimedia player

目前,國內(nèi)車載電子設(shè)備市場(chǎng)極度缺乏多媒體綜合軟件,該軟件能有效地將車載導(dǎo)航、影音圖像、倒車?yán)走_(dá)、娛樂互動(dòng)等多個(gè)功能整合,方便乘客和車主的使用[1]。將多種娛樂和使用功能整合統(tǒng)一,使得設(shè)備簡潔美觀,同時(shí)降低了重復(fù)安裝的成本和投入。可以極大地減少車內(nèi)空間消耗,降低整車油耗[2]。多媒體共屏展示也能保證駕駛員的操作強(qiáng)度,保證行車安全。因此,將行車信息、娛樂互動(dòng)、交流通信、車載導(dǎo)航等功能集于一體的嵌入式綜合媒體系統(tǒng)符合市場(chǎng)和環(huán)境的發(fā)展要求[3]。

1 車載嵌入式播放器總體設(shè)計(jì)

出于應(yīng)用領(lǐng)域、自帶資源、可擴(kuò)展資源、功耗等多方面的考慮,選擇Linux 內(nèi)核為嵌入式多媒體播放器的操作系統(tǒng)核心。將多媒體技術(shù)應(yīng)用于嵌入式系統(tǒng)中面臨著諸多的技術(shù)難題,嵌入式設(shè)備的特點(diǎn)決定了其資源通常非常有限,而有限的資源意味著需要進(jìn)行多方面技術(shù)的優(yōu)化[4]。

首先,嵌入式設(shè)備采用蓄電池提供能源,所以對(duì)系統(tǒng)的功耗要求比較嚴(yán)格;第二,嵌入式設(shè)備上通常沒有實(shí)用的圖像加速器,聲卡等硬件加速設(shè)備的支持;第三,不存在DirectX,DirectShow等高層多媒體的支持。基于上述考慮,有必要設(shè)計(jì)適用于嵌入式應(yīng)用的嵌入式處理器,嵌入式操作系統(tǒng)。根據(jù)嵌入式多媒體播放器的功能需求及技術(shù)特點(diǎn),通常將嵌入式多媒體播放器的體系結(jié)構(gòu)劃分為硬件層、內(nèi)核層和應(yīng)用層,具體如圖1所示。

系統(tǒng)的硬件層的硬件平臺(tái)包括嵌入式微處理器和外圍設(shè)備,通過合理選型和匹配可以完成滿意的底層硬件組合。本系統(tǒng)的嵌入式MCU使用三星公司的S3C2410高速微處理器,S3C2410高速微處理器作為整個(gè)硬件系統(tǒng)的控制核心,接收、處理相關(guān)數(shù)據(jù)并實(shí)時(shí)發(fā)出控制指令。與其配合的系統(tǒng)外圍設(shè)備是完成系統(tǒng)功能的必要組建和模塊,涉及系統(tǒng)存儲(chǔ)模塊FLASH和E2PROM,LCD輸出單元、主控外圍電路和音頻輸出模塊等。

軟件部分包含應(yīng)用層和內(nèi)核層兩個(gè)部分。應(yīng)用層包含嵌入式Linux操作系統(tǒng)和硬件驅(qū)動(dòng)程序,包括BootLoader, Linux內(nèi)核,根文件系統(tǒng)3部分。應(yīng)用層包含嵌入式用戶應(yīng)用程序、音頻解碼器和GUI。本系統(tǒng)選擇嵌入式Linux操作系統(tǒng)作為操作系統(tǒng)[5]。

2 操作系統(tǒng)平臺(tái)的構(gòu)建

內(nèi)核是整個(gè)Linux系統(tǒng)的核心,根據(jù)實(shí)際情況針對(duì)內(nèi)核的配置進(jìn)行選擇,本質(zhì)上指根據(jù)開發(fā)系統(tǒng)的功能需求對(duì)已有的操作系統(tǒng)進(jìn)行選擇,保留開發(fā)需求的系統(tǒng)單元,刪除不需要的模塊單元。在本系統(tǒng)中,嵌入式Linux內(nèi)核選擇ARM?Linux內(nèi)核。Linux內(nèi)核的配置系統(tǒng)由Makefile、配置文件(config.in)、配置工具組成[6]。完成內(nèi)核的數(shù)據(jù)參數(shù)配置后,不能將程序數(shù)據(jù)直接下載到嵌入式系統(tǒng)中進(jìn)行調(diào)試運(yùn)行,因?yàn)榇藭r(shí)數(shù)據(jù)仍然以源代碼的形式存在。此時(shí),為了生成最終能在嵌入式操作系統(tǒng)上運(yùn)行的可執(zhí)行代碼[7],需要進(jìn)一步對(duì)內(nèi)核進(jìn)行編譯。

過程結(jié)束后,Image和zImage兩個(gè)內(nèi)核映像文件會(huì)在arch/arm/boot目錄下生成,zImage為壓縮后的映像文件,Image為正常大小的映像文件。得到內(nèi)核映像文件后,首先在開發(fā)板使用的宿主機(jī)(PC)上建立一個(gè)tftp服務(wù),使用DNW工具,在開發(fā)板上電時(shí)按任意鍵進(jìn)入U(xiǎn)?Boot提示符,執(zhí)行以下命令:

在嵌入式操作系統(tǒng)正常運(yùn)行時(shí),需要使用根文件系統(tǒng)支持各種功能[8],在內(nèi)核剛啟動(dòng)運(yùn)行時(shí)根文件系統(tǒng)需要掛載起來用于支持訪問外部設(shè)備,同時(shí)完成內(nèi)核模塊應(yīng)用程序的裝載和運(yùn)行,避免出現(xiàn)Kernelpanic的情況,防止系統(tǒng)內(nèi)核在啟動(dòng)時(shí)沒有根文件的支持。在實(shí)際應(yīng)用中,嵌入式操作系統(tǒng)使用動(dòng)態(tài)隨機(jī)存取器、同步動(dòng)態(tài)隨機(jī)存取器、FLASH存儲(chǔ)器作為存儲(chǔ)設(shè)備[9]。基于存儲(chǔ)設(shè)備,使用JFFS2,YAFFS,CRAMFS,ROMFS,RAMFS等常見系統(tǒng)作為存儲(chǔ)設(shè)備的嵌入式文件系統(tǒng)。在本系統(tǒng)中,選擇NANDFLASH作為硬件提案所使用的存儲(chǔ)芯片,選用NANDFLASH上使用比較廣泛的Cramfs文件系統(tǒng)作為嵌入式根文件系統(tǒng)。

嵌入式Linux 操作系統(tǒng)的啟動(dòng)流程如圖2所示。系統(tǒng)啟動(dòng)流程包括六個(gè)步驟:

(1) 系統(tǒng)復(fù)位,從地址0x00開始執(zhí)行,進(jìn)入步驟(2);

(2) 啟動(dòng)Bootloader模塊,進(jìn)入步驟(3);

(3) 判斷系統(tǒng)是否進(jìn)入Linux,啟動(dòng)Linux內(nèi)核映像,不啟動(dòng)則進(jìn)入U(xiǎn)?boot的命令操作環(huán)境,如果啟動(dòng)內(nèi)核,進(jìn)入步驟(4);

(4) 系統(tǒng)從NANDFLASH加載內(nèi)核到內(nèi)存中,完成對(duì)硬件設(shè)備的初始化工作,進(jìn)入步驟(5);

(5) 掛載根文件系統(tǒng),執(zhí)行init進(jìn)程,并從/etc/inittab取得配置文件,進(jìn)入步驟(6);

(6) 提示執(zhí)行用戶應(yīng)用程序或用戶登錄信息。

3 視頻播放器軟件設(shè)計(jì)

3.1 基于Mplayer實(shí)現(xiàn)多媒體播放器

Mplayer是一個(gè)Linux下的電影播放器(也能運(yùn)行在許多其他的Unices和非X86的CPU上)。Mplayer的邏輯結(jié)構(gòu)可以分為四個(gè)層次,即:輸入層、分流層、解碼層和輸出層,其結(jié)構(gòu)如圖3所示。

本文選擇Mplayer作為后臺(tái)設(shè)計(jì)播放軟件。利用Qt/E為軟件平臺(tái)設(shè)計(jì)GUI圖形控制界面,對(duì)多媒體播放器的播放過程進(jìn)行控制。由于條件限制,本實(shí)驗(yàn)在宿主機(jī)上編譯并安裝了Mplayer,通過Qt設(shè)計(jì)基于X86的多媒體播放器。

3.2 軟件總體模塊設(shè)計(jì)

由于Qt/Embedded工具可以繞過X Windows System協(xié)議客戶端庫,直接讀/寫幀緩存的FrameBuffer的數(shù)據(jù)信息,因此實(shí)現(xiàn)Qt類庫對(duì)幀緩存的直接讀/寫操作,使用基于Qt/Embedded的應(yīng)用程序可以完成。本系統(tǒng)使用嵌入式Linux作為操作系統(tǒng),通過Qt的圖形平臺(tái)和函數(shù)庫完成嵌入式多媒體綜合播放。多媒體播放系統(tǒng)采用模塊化設(shè)計(jì)思想,其架構(gòu)如圖4所示。

嵌入式多媒體播放器包含五個(gè)主要的模塊:

(1) I/O(輸入/輸出模塊):用于多媒體文件的讀入和輸出。

(2) UI(用戶界面單元):用戶界面單元的作用是方便用戶操作嵌入式媒體播放器的各項(xiàng)功能,提供良好的人機(jī)操作互動(dòng)界面和使用體驗(yàn)。

(3) 插件接口單元:讀入多媒體數(shù)據(jù)(通過輸入插件獲取I/O模塊發(fā)送過來的數(shù)據(jù))、調(diào)用Mplayer對(duì)文件進(jìn)行解碼播放、文件總的時(shí)間長度、編碼類型、比特率等信息的獲取、暫停、快進(jìn)、快退、停止、輸出、輸入等的動(dòng)作,輸入動(dòng)作具體指將輸出插件完成解碼的數(shù)據(jù)信息傳送到系統(tǒng)輸出輸入單元的過程。

(4) Mplayer解碼單元:為了對(duì)不同類型的多媒體文件進(jìn)行解碼操作,系統(tǒng)選擇的Mplayer解碼單元由分離器、音視頻解碼器等部分組成。

(5) GUI單元:為了方便快捷的產(chǎn)生讀/寫FrameBuffer以及用戶界面, GUI單元通過使用Qt/E嵌入式工具作為底層圖形庫。

軟件總體模塊中各單元之間的相互連接關(guān)系是:通過輸入/輸出單元讀入音視頻信息數(shù)據(jù),用戶界面單元在接收到播放信息指令后,調(diào)用插件模塊相應(yīng)的函數(shù),產(chǎn)生相應(yīng)的信號(hào),調(diào)用Mplayer完成對(duì)多媒體文件的解碼,完成解碼之后將數(shù)據(jù)送到I/O模塊輸出。

3.3 控制流程設(shè)計(jì)

主程序設(shè)計(jì)流程如圖5所示。當(dāng)從菜單項(xiàng)打開視頻文件時(shí)會(huì)觸發(fā)triggered()信號(hào),執(zhí)行slotopen()槽函數(shù),調(diào)用Qfiledialog的getOpenFileName()函數(shù)從對(duì)話框中選擇要播放的視頻文件。系統(tǒng)首先判斷文件格式是否為*.avi格式,如果是,則創(chuàng)建一個(gè)Qprocess進(jìn)程,通過該進(jìn)程調(diào)用Mplayer后臺(tái)對(duì)視頻文件進(jìn)行播放,并在指定區(qū)域進(jìn)行輸出顯示。

4 交互式圖形界面設(shè)計(jì)

QImage類提供了一種與硬件訪問無關(guān)的圖片存儲(chǔ)方式。QPainter則主要用來完成繪圖事件。QPushButton提供了圖形用戶界面最長用到的命令按鈕部件。此GUI交互界面利用Qt Designer以QMainWindow類為基礎(chǔ)設(shè)計(jì)了主框架,包括菜單欄以及狀態(tài)欄等;同時(shí),以QWidget類為基礎(chǔ)創(chuàng)建了一個(gè)對(duì)視頻播放進(jìn)行控制的插件接口,并通過合理的布局與主窗體組合在一起。

在指定目錄打開avi格式視頻文件,運(yùn)行效果如圖7所示。在播放過程中,通過狀態(tài)欄實(shí)時(shí)顯示當(dāng)前視頻文件的播放時(shí)間。通過界面下方的按鈕對(duì)播放器的播放過程進(jìn)行音量調(diào)節(jié)、暫停、快進(jìn)、快退、停止等控制,基本達(dá)到了預(yù)期的效果。打開視頻文件時(shí),終端開始輸出文件的加載路徑,開始讀取并輸出ANS_TIME_POSITION(視頻播放時(shí)間)參數(shù)值,在Qt與Mplayer之間完成了通信。

當(dāng)在控制臺(tái)實(shí)施各種控制操作時(shí),在終端輸出執(zhí)行的操作動(dòng)作并發(fā)送該信號(hào),調(diào)用相應(yīng)的槽函數(shù)完成對(duì)視頻播放的控制動(dòng)作。

以上是在主機(jī)上運(yùn)行播放程序執(zhí)行播放控制的過程。在主機(jī)上運(yùn)行的Qt程序是基于X結(jié)構(gòu)的,而在實(shí)際的嵌入式開發(fā)中,需要直接通過FrameBuffer進(jìn)行顯示。由于條件限制及其他因素,通過qvfb模擬程序在嵌入式開發(fā)板中運(yùn)行的情況,如圖8所示。

從圖8中可以看出,在qvfb中運(yùn)行該程序時(shí),菜單項(xiàng)的中文顯示出現(xiàn)了方塊型的亂碼,這說明菜單項(xiàng)已經(jīng)得到了識(shí)別,只是qtopia中缺少相應(yīng)的中文字體庫,在默認(rèn)的情況下,qvfb會(huì)調(diào)用字體庫中的默認(rèn)字體,這樣在顯示中文時(shí)會(huì)出現(xiàn)如上問題。可以在網(wǎng)絡(luò)上下載相應(yīng)的中文字體庫并拷貝到Trolltech/Qtopiacore?opensource?4.3.0/lib/fonts中。

6 結(jié) 論

本文通過對(duì)車載播放系統(tǒng)的設(shè)計(jì),根據(jù)車載嵌入式多媒體播放器的功能需求和技術(shù)特點(diǎn),選擇一款合適的嵌入式處理器,在此平臺(tái)上構(gòu)建了功能完整的嵌入式Linux系統(tǒng)開發(fā)平臺(tái)。經(jīng)過對(duì)Qt的GUI設(shè)計(jì)的研究,以Qt的基礎(chǔ)類庫為前端設(shè)計(jì)嵌入式多媒體播放器的前端控制圖形界面。通過創(chuàng)建QProcess進(jìn)程,實(shí)現(xiàn)了對(duì)播放過程的控制,與后臺(tái)Mplayer進(jìn)行通信,實(shí)時(shí)讀取并顯示播放信息,并在指定窗口對(duì)音視頻碼流進(jìn)行輸出顯示。通過測(cè)試表明,本系統(tǒng)達(dá)到了應(yīng)用于車載音視頻播放的要求,對(duì)相關(guān)開發(fā)具有重要參考價(jià)值。

參考文獻(xiàn)

[1] 趙丙辰.嵌入式系統(tǒng)的核心:嵌入式處理器的分類與選型[J].新鄉(xiāng)師范高等專科學(xué)校學(xué)報(bào),2012(7):89?90.

[2] 吳偉清,王磊,吳朝暉.基于QTE的嵌入式Linux中文環(huán)境解決方案[J].計(jì)算機(jī)工程,2013(2):55?56.

[3] 王建民,張宏壯.基于Qt的嵌入式媒體播放器系統(tǒng)的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2013(5):66?68.

[4] 李夢(mèng)亮,翁正新.Mplayer和Qtopia在嵌入式無線卡拉OK點(diǎn)播終端中的應(yīng)用[J].微計(jì)算機(jī)應(yīng)用,2013(2):10?12.

[5] 孫天澤.嵌入式Linux操作系統(tǒng)[M].北京:人民郵電出版社,2009:101?103.

[6] 許信順,智平.嵌入式Linux應(yīng)用編程[M].北京:機(jī)械工業(yè)出版社,2007:95?96.

[7] 王志誠.基于ARM9的嵌入式Linux操作系統(tǒng)的移植[J].陶瓷,2010(3):50?52.

[8] 韓合民.基于ARM平臺(tái)的嵌入式流媒體播放技術(shù)的研究和應(yīng)用[D].西安:西安電子科技大學(xué),2008:89?90.

[9] 林楓,孟超.基于CS5518的汽車多媒體的觸摸面板的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2015,38(2):62?64.

主站蜘蛛池模板: 精品中文字幕一区在线| 好紧太爽了视频免费无码| 国内老司机精品视频在线播出| 老司机aⅴ在线精品导航| 久精品色妇丰满人妻| 成年看免费观看视频拍拍| 一本久道热中字伊人| 伊在人亞洲香蕉精品區| 国产欧美精品一区aⅴ影院| 99re这里只有国产中文精品国产精品| 亚洲三级成人| 亚洲成人在线免费| 91精品国产自产91精品资源| 国产精品无码制服丝袜| 亚洲成人动漫在线观看| 亚洲天堂视频在线观看| 色欲不卡无码一区二区| 国产成人8x视频一区二区| 欧美激情首页| 国产成人无码AV在线播放动漫| 亚洲天堂网视频| 亚洲成a人片7777| 久热99这里只有精品视频6| 国产亚洲欧美在线视频| 中文字幕在线免费看| 丁香六月激情综合| 欧美黑人欧美精品刺激| 激情亚洲天堂| 国产亚洲欧美在线专区| 欧美日韩国产系列在线观看| 美女内射视频WWW网站午夜| 玖玖精品在线| 亚洲色图欧美激情| AV无码无在线观看免费| 国产香蕉在线视频| 久久久久久午夜精品| 国产香蕉97碰碰视频VA碰碰看| 国产成人盗摄精品| 亚洲婷婷丁香| 四虎成人在线视频| 精品成人一区二区| 欧美日韩国产在线人成app| 欧美日韩高清在线| 91色在线观看| 精品国产Av电影无码久久久| 国产成人一级| 欧美精品另类| av天堂最新版在线| 国产福利免费视频| 国产激情无码一区二区免费| 亚洲欧美日韩视频一区| 露脸国产精品自产在线播| 亚洲精品第一在线观看视频| 亚洲成人黄色在线观看| 性色一区| a免费毛片在线播放| 美女黄网十八禁免费看| 亚洲精品无码久久毛片波多野吉| 亚洲中文字幕手机在线第一页| 亚洲全网成人资源在线观看| 亚洲综合色区在线播放2019| 亚洲va视频| 97国产精品视频人人做人人爱| 久久毛片网| 欧美视频免费一区二区三区| 亚洲国产91人成在线| 亚洲色图欧美在线| 国产永久免费视频m3u8| 国产精品xxx| 青青草国产一区二区三区| 欧美激情视频二区三区| 亚洲综合极品香蕉久久网| 亚洲天堂视频在线观看免费| 国产综合网站| 激情午夜婷婷| 国产熟睡乱子伦视频网站| 2021国产精品自产拍在线观看| 高清欧美性猛交XXXX黑人猛交| 精品夜恋影院亚洲欧洲| 国产极品美女在线观看| 欧美中出一区二区| 欧美成人日韩|