摘 要 隨著生活水平的逐漸提高,汽車已成為非常流行的社會(huì)話題,越來(lái)越多的人喜歡上汽車,汽車能給人帶來(lái)家的感覺(jué),大大加快了社會(huì)產(chǎn)業(yè)的新陳代謝,而車載媒體系統(tǒng)基本上是每一輛車的必備,一款好的車載媒體系統(tǒng)使用起來(lái)也是一種享受,本人旨在深入研究車載媒體系統(tǒng)的實(shí)現(xiàn),車載媒體的實(shí)現(xiàn)是需要方方面面的能力,特別是個(gè)人開(kāi)發(fā)的時(shí)候,沒(méi)有團(tuán)隊(duì)的支持,一切東西都要經(jīng)過(guò)自己的親手來(lái)打造,不過(guò)這也是練就個(gè)人能力的時(shí)候,制作這樣一個(gè)系統(tǒng)的目的在于其一,能很好的鍛煉個(gè)人能力,如果是團(tuán)隊(duì)就是團(tuán)隊(duì)協(xié)作能力,其二,更能了解整個(gè)軟件產(chǎn)業(yè)的構(gòu)成,其意義遠(yuǎn)大于軟件本身,程序需要學(xué)習(xí)的內(nèi)容大概可能分為三個(gè)部分,第一部分:語(yǔ)言功底C/C++,第二部分:編程工具的熟練使用如Qt Creator,第三部分:車載媒體的邏輯控制如:界面,交互邏輯,嵌入式等,可以說(shuō)掌握這三部分能幫助實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Demo,車載媒體系統(tǒng)一般基于linux系統(tǒng)下進(jìn)行運(yùn)行的,所以,最好使用linux環(huán)境下來(lái)進(jìn)行開(kāi)發(fā)!
關(guān)鍵詞 車載媒體播放器 C/C++ Qt Creator FFmpeg Demo linux
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
我們使用是C++語(yǔ)言來(lái)開(kāi)發(fā)實(shí)現(xiàn),IDE使用Qt環(huán)境,比較好的是Qt是一個(gè)跨平臺(tái)的框架,在第五章我會(huì)較詳細(xì)的介紹Qt框架與C++的同異之處,代碼只需少量修改即可移殖到相應(yīng)的平臺(tái)上去,首先,一款車載多媒體定有一個(gè)界面,一個(gè)主菜單,菜單欄里有相應(yīng)的功能給用戶使用,如音樂(lè),視頻,相冊(cè)等,這些功能就要逐條實(shí)現(xiàn),下面我們就先討論各功能的實(shí)現(xiàn)。
主菜單:可以做成滑動(dòng)的,也可以做成靜態(tài)的,當(dāng)然滑動(dòng)的難度系數(shù)肯定要高一些,做成靜態(tài)只要調(diào)整相對(duì)位置就好,放便但不夠較多的用戶體驗(yàn)。主菜單欄里有電話,音樂(lè),視頻,藍(lán)牙,設(shè)置等。
電話界面:一定會(huì)有一個(gè)撥號(hào)盤,還有直接通過(guò)手機(jī)獲取聯(lián)系人在車載上顯示,一個(gè)最近撥號(hào),還有一個(gè)聯(lián)系人界面。
音樂(lè)界面:一定要有一個(gè)當(dāng)前歌曲的頭像界面,還有歌詞隨著歌曲播放滾動(dòng)的界面,當(dāng)然肯定要有播放列表,用戶可以對(duì)播放列表做增刪改查的相關(guān)動(dòng)作!
視頻界面:視頻界面我們可以設(shè)計(jì)比較簡(jiǎn)約一點(diǎn)的,有一個(gè)視頻播放的界面,有一個(gè)正在播放的片名,還有一個(gè)播放列表。
文件管理界面:這個(gè)是一個(gè)可選的功能,如果有必要的話,我們可以自己實(shí)現(xiàn)一個(gè)文件管理系統(tǒng),并不是很難,可以對(duì)文件進(jìn)行刪查就好!
設(shè)置界面:設(shè)置的內(nèi)容比較雜亂,如有設(shè)置音量,設(shè)置語(yǔ)言,設(shè)置各個(gè)界面的相關(guān)的屬性等東西,項(xiàng)目多。
照片界面:這個(gè)也算多媒體的一部分,可以瀏覽我們外接的照片,通過(guò)SDCard或者手機(jī)的USB,或者手機(jī)藍(lán)牙傳輸?shù)模伎梢宰鰹槊浇?,在車載上顯示。
可能難點(diǎn)在于音頻視頻的播放了,還好有Qt有現(xiàn)在的框架,QmediaPlayer,能播放音視頻功能,但框架上的東西畢竟是框架上別人封裝好了的,你只能使用別人給你的接口這樣就局限性比較大,最好能找一個(gè)不愛(ài)框架限制的庫(kù),或者說(shuō)如果能力足夠,我們可以自己手動(dòng)解碼,如果使用手動(dòng)解碼的話在windows上運(yùn)行的話,從文件中取出相應(yīng)的流,然后再把流轉(zhuǎn)化為pcm裸流,基本上所有的平臺(tái)都有支持PCM裸流的操作,就可以發(fā)出聲音了,如果使用Qt框架的話,它基本上把該有的框架都封裝完畢了,有統(tǒng)一的接口,簡(jiǎn)單高效,快速開(kāi)發(fā),當(dāng)然也可以救助于第三方庫(kù)的介入,比較出名的Ffmpeg這個(gè)庫(kù),基于GNU開(kāi)源,比較難受的是FFmpeg這庫(kù)比較大,大概有30M左右的release包體,不太適合簡(jiǎn)單,矮小精罕的小程序,打出的包體過(guò)大,不太適合當(dāng)前環(huán)境的使用?;谶@幾點(diǎn)的考慮,我們還是使用Qt自帶的框架進(jìn)行媒體操作,畢竟開(kāi)發(fā)效率高,質(zhì)量也不低,簡(jiǎn)單清楚的接口。
主菜單是我們的主心骨,比較重要,因?yàn)槠嚸恳淮蔚膯?dòng)都會(huì)呈現(xiàn)給用戶觀看,要美觀,要實(shí)用,要方便,定要設(shè)計(jì)使審美疲勞降至最低。
布局比較簡(jiǎn)單明了,清晰,包括天氣查詢,音樂(lè),視頻,日歷,計(jì)算器等功能,細(xì)分主菜單我們可以看到主菜單,返回按鈕,時(shí)間標(biāo)簽,背景圖片等,我們可以看一下整個(gè)主菜單的制作過(guò)程,首先我們使用Qt 設(shè)計(jì)師可以實(shí)現(xiàn)整個(gè)界面的布局,Qt相當(dāng)?shù)姆奖悖绕餗FC簡(jiǎn)直是好,MFC確實(shí)是老的設(shè)計(jì),Qt的設(shè)計(jì)理念相當(dāng)?shù)牟诲e(cuò),實(shí)現(xiàn)了界面與邏輯的分離,標(biāo)準(zhǔn)的MVC框架,我們僅處理各各按鈕相應(yīng)的事件就可以了,再設(shè)置一下界面繪圖這種種方法的調(diào)用,即可以完成。
1音樂(lè)界面的設(shè)計(jì)
音樂(lè)界面可以說(shuō)是用的最多的界面了,基本上開(kāi)車都喜歡聽(tīng)兩曲,我們就要點(diǎn)開(kāi)此界面來(lái)播放音樂(lè)了,基本的功能的都具備了,上一曲,下一曲,播放,播放模式,暫停,靜音,添加文件,刪除文件,歌曲列表的上一曲下一曲等,我們使用了Qt的自帶媒體框架,QMediaPlayer框架,QMediaPlayer包含視頻,音頻,錄音,還有錄像等功能,當(dāng)然播放音樂(lè)我們就使用播放音樂(lè)的功能,找到Qt的開(kāi)發(fā)幫助文檔。
音樂(lè)搜索界面,提供下載,播放,添加播放列表等操作,整體比較簡(jiǎn)單清楚,可以滑動(dòng)操作等。
2結(jié)語(yǔ)
本文僅簡(jiǎn)單的介紹了播放器的實(shí)現(xiàn)機(jī)制,并沒(méi)有過(guò)多討論底層實(shí)現(xiàn)細(xì)節(jié)問(wèn)題。
作者簡(jiǎn)介:嚴(yán)濤(1995.10-),男,漢族,?四川人,本科,西華師范大學(xué),主要研究方向:音視頻解碼、計(jì)算機(jī)網(wǎng)絡(luò)、系統(tǒng)UI架構(gòu)。
參考文獻(xiàn)
[1] Stanley B.Lippman.深度探索C++對(duì)象模型[M].侯捷譯.北京:電子工業(yè)出版社,2011.
[2] 何欽銘,顏暉.C語(yǔ)言程序設(shè)計(jì)[M].北京:高等教育出版社,2012(01).
[3] 張海藩,呂云翔.軟件工程[M].北京:人民郵電出版社,2013.