當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于Symbian 平臺(tái)的流媒體播放器設(shè)計(jì)與實(shí)現(xiàn)

   1 引言

  繼語音通話、短信服務(wù)、數(shù)據(jù)通信之后,音樂無線下載及實(shí)時(shí)播放正在成為全球手機(jī)運(yùn)營(yíng)商提供的新興服務(wù)之一,引發(fā)廣泛的關(guān)注。與傳統(tǒng)的基于個(gè)人電腦的音樂播放器相比,手機(jī)音樂播放器的優(yōu)勢(shì)在于其下載和播放方式的方便快捷,可以給用戶帶來輕松舒適的使用體驗(yàn)。以手機(jī)音樂播放器為媒介,運(yùn)營(yíng)商可以依靠其自身對(duì)移動(dòng)通信網(wǎng)絡(luò)服務(wù)的強(qiáng)大控制力,為顧客提供更好的服務(wù)。由于移動(dòng)通信服務(wù)的靈活性和多樣性,使其在增值業(yè)務(wù)方面也有較強(qiáng)的擴(kuò)展性。

  Symbian S60 平臺(tái)的MulTImedia Framework( MMF) API 可以為上層應(yīng)用程序提供多媒體服務(wù),為用戶創(chuàng)建和分發(fā)豐富多彩的音樂應(yīng)用。作為一個(gè)多媒體處理單元的插件集,MMF 提供了操作終端硬件的通用接口,支持不同的音頻操作,可實(shí)現(xiàn)本地回放和流式回放兩種模式,可播放多種音頻格式。

  在現(xiàn)有基于Symbian OS 的多媒體播放器的相關(guān)文獻(xiàn)中,討論了基于Symbian 平臺(tái)的流媒體播放器移動(dòng)客戶端的設(shè)計(jì)原理,給出了指導(dǎo)性意見,并在結(jié)構(gòu)、緩沖等方面給出了優(yōu)化建議,在此基礎(chǔ)上提出了用戶界面的設(shè)計(jì)方案。但該文獻(xiàn)沒有給出多媒體技術(shù)的具體實(shí)現(xiàn)。本文設(shè)計(jì)并實(shí)現(xiàn)了基于Symbian 平臺(tái)的多媒體播放器,但其僅支持本地播放,并沒涉及到流式播放的相關(guān)技術(shù)。

  MMusic 是一款基于MMF 架構(gòu),用于播放多種音樂文件的多媒體播放軟件。它不僅實(shí)現(xiàn)了音樂文件的本地播放,同時(shí)支持流式播放。除此之外,該音樂播放器還支持音樂下載、歌詞下載及播放同步等功能。其界面美觀、操作簡(jiǎn)單且具有多種功能。

  2 系統(tǒng)總體框架設(shè)計(jì)

  在設(shè)計(jì)系統(tǒng)框架時(shí),首先明確了播放器需要實(shí)現(xiàn)的四項(xiàng)基本功能: ①支持mp3、wmv、aac 等多種格式的本地音頻播放; ②支持流式音頻播放; ③支持歌曲搜索及下載的功能; ④支持歌詞同步的功能。

  MMusic 播放器的程序?qū)崿F(xiàn)基于Symbian S60 平臺(tái)的應(yīng)用程序架構(gòu),采用多視圖框架,根據(jù)不同的功能構(gòu)造不同的視圖。其視圖包括播放界面( 主界面) 、搜索歌曲界面、音樂媒體庫(kù)界面和電臺(tái)列表界面。其中播放界面是整個(gè)播放器的核心界面,主要負(fù)責(zé)音頻媒體的播放,包括本地播放和流式播放。

  根據(jù)播放模式的不同,動(dòng)態(tài)選擇相應(yīng)的菜單和播放引擎。本地播放使用CPlayerAdapter 引擎。該引擎使用音頻播放類CMdaAudioPlayerUtility 類及其相關(guān)的觀察器MMdaAudioPlayerCallback 來實(shí)現(xiàn)本地音頻播放。流式播放則使用CPluginAdaper 引擎來實(shí)現(xiàn),它使用了CMdaAudioOutputSTream 和MMdaAudioOutputStreamCallback 類。

  MMusic 音樂播放器按功能可劃分為六個(gè)模塊:

 ?、賃I 模塊,負(fù)責(zé)各個(gè)界面顯示和界面間的切換,并對(duì)用戶按鍵進(jìn)行處理;②本地播放模塊,可以提供本地音頻文件播放及音量控制等服務(wù);③流式播放模塊,實(shí)現(xiàn)與服務(wù)器的交互與流式播放;④數(shù)據(jù)下載模塊,負(fù)責(zé)音頻數(shù)據(jù)的下載及存儲(chǔ);⑤歌詞同步模塊,保證音頻播放與歌詞播放的同步;⑥服務(wù)器模塊,提供音樂文件和歌詞等下載資源。不同模塊的關(guān)系如圖1 所示。



圖1 MMusic 播放器功能關(guān)系圖

  3 關(guān)鍵技術(shù)的介紹

  3. 1 音頻播放

  音頻播放功能可以通過MMF 所提供的接口來實(shí)現(xiàn)。其中音頻播放類CMdaAudioPlayerUtility 類提供本地播放的API,而CMdaAudioOutputStream 類則提供流式播放的API。

  3. 1. 1 本地播放引擎

  MMusic 播放器把對(duì)音頻文件的初始化、播放、暫停等操作封裝在本地播放引擎CPlayer - Adapter中。該引擎包含支持音頻回放操作和簡(jiǎn)單元數(shù)據(jù)讀取操作的音頻播放類CMdaAudio - PlayerUtility。由于它的所有操作都是異步的,需要一個(gè)客戶端來*音頻播放操作。播放引擎CPlayerAdapter 須繼承MMdaAudioPlayerCallback 接口類。該接口類提供了兩個(gè)方法,MapcInitComplete( ) 和MapcPlayComplete( ) 。本地播放流程如圖2 所示。首先通過調(diào)用CMdaAudioPlayerUtility: : NewFilePlayerL( ) 函數(shù)構(gòu)造并創(chuàng)建一個(gè)音頻播放器的實(shí)例。當(dāng)打開及初始化一個(gè)音頻采樣的工作結(jié)束后,系統(tǒng)自動(dòng)調(diào)用MapcInit-Complete( ) 方法,通知客戶端創(chuàng)建實(shí)例的結(jié)果。若成功創(chuàng)建,則可調(diào)用CMdaAudioPlayerUtility: : Play( ) 方法來播放音頻文件。當(dāng)播放某段音頻采樣操作完成后,系統(tǒng)再通過MapcPlayComplete( ) 回調(diào)函數(shù)通知客戶端播放已完成。[!--empirenews.page--]

  3. 1. 2 流式播放引擎

  對(duì)于流式音頻播放,則使用多媒體框架的CMdaAudioOutputStreamAPI。CPluginAdaper 為封裝好的流式播放引擎,由它來調(diào)用流媒體播放的相關(guān)接口。本地內(nèi)容播放和流式播放的主要不同在于文件打開方式、初始化方法及對(duì)音頻數(shù)據(jù)流的處理方式。

  要實(shí)現(xiàn)流式播放,在程序里需要編寫一個(gè)實(shí)現(xiàn)了MMdaAudioOutputStreamCallback 的客戶端類。

  這個(gè)類提供三個(gè)回調(diào)函數(shù),向客戶端提示音頻輸出的流式過程結(jié)果,讓程序能處理可能的錯(cuò)誤。這些回調(diào)函數(shù)是MaoscOpenComplete( ) 、MaoscBufferCopied() 及MaoscPlay - Complete ( ) ,它們都必須由CMdaAudioOutputStream 類的使用類實(shí)現(xiàn)。因此,CPluginAdaper 須繼承觀察類MMdaAudioOutputStreamCallback來得到流式播放過程的結(jié)果。



圖2 本地播放流程圖

  在實(shí)現(xiàn)流式播放前,需要與服務(wù)器進(jìn)行連接,獲得待播放的音頻數(shù)據(jù)流。在MMusic 播放器里,使用套接字來實(shí)現(xiàn)服務(wù)端與客戶端的通信??蛻舳耸紫刃枰B接到Symbian OS 套接字服務(wù)器,然后打開一個(gè)套接字并指定TCP 作為傳輸協(xié)議。接著從列表文件得到服務(wù)器的IP 地址和端口,向服務(wù)器發(fā)送請(qǐng)求。等服務(wù)器作出響應(yīng)后,讀取響應(yīng)的數(shù)據(jù)并進(jìn)行分析,用來初始化播放引擎??蛻舳死^續(xù)對(duì)服務(wù)端請(qǐng)求播放的音頻數(shù)據(jù)。

  得到要播放的音頻數(shù)據(jù)流后,則開始流式播放。

  其播放流程如圖3 所示。首先初始化CMdaAudioOutputStream類。初始化完成后,Multimedia 框架會(huì)調(diào)用MaoscOpenComplete( ) 回調(diào)函數(shù),指出音頻輸出已經(jīng)可用。該框架所給出的參數(shù)是一個(gè)出錯(cuò)值,它指出初始化是否成功。如果成功,則給出KErrNONe。此處可以設(shè)置采樣率和音量等。成功初始化后,則可以在客戶端調(diào)用PlayL( ) 函數(shù)來播放音頻數(shù)據(jù)流。它調(diào)用FillBufferL( ) 函數(shù)把數(shù)據(jù)往緩沖區(qū)填充,并使用CMdaAudioOutputStream: : WriteL( const TdesC8&aData) 進(jìn)行播放。其中參數(shù)aData 為緩沖區(qū)數(shù)據(jù)。

  WriteL( ) 是一個(gè)異步函數(shù)。當(dāng)復(fù)制了描述符aData中的數(shù)據(jù)到音頻硬件之后,該框架將調(diào)用MMdaAudioOutputStreamCallback: : MaoscBufferCopied( ) 回調(diào)方法,通知客戶端應(yīng)用已收到aData 并將其復(fù)制到播放流。此時(shí),可以再調(diào)用FillBufferL( ) 函數(shù)繼續(xù)填充緩沖區(qū),從而實(shí)現(xiàn)連續(xù)不斷地流播放。



圖3 流式播放流程圖

  3. 2 音頻文件下載及斷點(diǎn)續(xù)傳

  MMusic 使用超文本傳輸協(xié)議HTTP 來實(shí)現(xiàn)音頻文件和歌詞的下載。HTTP 是在TCP /IP 協(xié)議上實(shí)現(xiàn)的應(yīng)用層協(xié)議,用于在互聯(lián)網(wǎng)上傳輸信息。它使用Socket 在服務(wù)器和客戶端之間進(jìn)行數(shù)據(jù)傳輸。

  在Symbian OS 版本中,提供了對(duì)HTTP 客戶端的API 支持。

  使用HTTP 進(jìn)行通信時(shí),客戶端需要建立一個(gè)HTTP 客戶端會(huì)話,在會(huì)話上處理與HTTP 服務(wù)器的通信。在會(huì)話上建立HTTP 通信事務(wù),事務(wù)由請(qǐng)求和響應(yīng)組成,在同一個(gè)會(huì)話上可以建立一個(gè)或多個(gè)事務(wù)。也可以同時(shí)建立多個(gè)會(huì)話,來實(shí)現(xiàn)不同的連接。

  在創(chuàng)建HTTP 引擎時(shí),首先創(chuàng)建一個(gè)RHTTPSession類的對(duì)象,然后調(diào)用該類的Open( ) 方法,打開這個(gè)新建立的會(huì)話。然后使用RHTTPTransaction類代表HTTP 事務(wù)。事務(wù)是在HTTP 客戶端會(huì)話打開的。打開事務(wù)時(shí),需制定事務(wù)使用的數(shù)據(jù)傳輸方法,GET 或POST,同時(shí)傳入要打開的URL。服務(wù)端處理完成后,返回響應(yīng)數(shù)據(jù)。HTTP 客戶端通過對(duì)MHTTP - TransactionCallback 的回遞,處理響應(yīng)結(jié)果和接收響應(yīng)數(shù)據(jù)。[!--empirenews.page--]

  歌曲的下載分兩步來實(shí)現(xiàn)。首先把要搜索的歌曲名字用HTTP 引擎發(fā)送到服務(wù)器,服務(wù)器返回XML 格式的文件給客戶端。該XML 文件包含了搜索到的歌曲名字、下載地址、音頻文件格式和大小等信息??蛻舳擞肧ymbian 自帶的XML 解析器對(duì)文件進(jìn)行解析,把解析后的歌曲信息存放在數(shù)組里。

  每個(gè)數(shù)組的元素為自定義的結(jié)構(gòu)體,包含歌曲名,下載地址等內(nèi)容。

  解析完畢后,切換到列表界面。列表界面顯示剛下載的XML 文件的解析結(jié)果。用戶可以根據(jù)自己的喜好選擇要下載的歌曲。此時(shí),客戶端提取出歌曲下載的地址,用封裝好的HTTP 引擎向服務(wù)器發(fā)送下載請(qǐng)求。客戶端首先判斷待下載的文件是否已存在,如果不存在,則使用HTTP 引擎普通下載模式下載音頻文件。如果待下載的文件已存在,則獲得現(xiàn)有文件大小,并把它作為參數(shù)傳給HTTP 引擎,發(fā)送到服務(wù)器端,實(shí)現(xiàn)斷點(diǎn)續(xù)傳。具體代碼如下:



  3. 3 歌詞同步

  首先在用戶終端進(jìn)行本地搜索與正在播放的音樂文件名字相同的歌詞文件。若搜索到符合條件的文件,則對(duì)其進(jìn)行解析。把文件的每一行內(nèi)容作為一個(gè)數(shù)組單元存放在數(shù)組里,數(shù)據(jù)的單元包括有播放時(shí)間和歌詞內(nèi)容。由CMdaAudioPlayerUtility 類的GetPosition( ) 函數(shù)獲得當(dāng)前音頻文件的播放位置,與數(shù)組中記錄的歌詞文件的時(shí)間做對(duì)比,來實(shí)現(xiàn)歌詞同步。若沒有搜索到歌詞文件,則用歌詞下載引擎從服務(wù)器下載并解析。

  4 軟件實(shí)現(xiàn)及效果

  根據(jù)播放器的整體架構(gòu)設(shè)計(jì),在Symbian 平臺(tái)上實(shí)現(xiàn)音樂媒體播放器,并在實(shí)際的移動(dòng)通信網(wǎng)絡(luò)中進(jìn)行了測(cè)試。測(cè)試環(huán)境是中國(guó)移動(dòng)GPRS /EDGE網(wǎng)絡(luò)。測(cè)試手機(jī)為Nokia N95,操作系統(tǒng)為V9. 2,用戶界面為S60 第三版。其ARM 主頻11 332MHz,內(nèi)存160MB。在真機(jī)上進(jìn)行測(cè)試時(shí),本地音頻文件播放流暢。而播放在線電臺(tái)的內(nèi)容時(shí)( 即流式播放) ,其效果會(huì)受到網(wǎng)絡(luò)狀況的制約,但整體比較流暢。

  播放器在真機(jī)上的效果如圖4 所示。其中( a) 顯示的是播放器的功能菜單,( b) 為本地播放和歌詞同步的效果,( c) 顯示流式播放時(shí)連接服務(wù)器的狀態(tài),( d) 為連接服務(wù)器成功后流式播放的效果,界面上可以顯示當(dāng)前的連接速度、音頻文件的格式、流量等。



( a) 播放器功能菜單( b) 本地播放和歌詞同步的效果( c) 流式播放時(shí)連接服務(wù)器的狀態(tài)( d) 連接服務(wù)器成功后流式播放的效果

圖4 軟件效果圖

  5 結(jié)束語

  MMusic 音樂播放器很好的實(shí)現(xiàn)了音頻播放、音樂下載、歌詞同步等功能。在此基礎(chǔ)上,還可以增加一些音頻的效果,使用戶有更好的視聽感受。同時(shí)在歌詞同步方面,程序還可以增加調(diào)整歌詞的功能,當(dāng)出現(xiàn)歌詞不同步時(shí),用戶可以根據(jù)實(shí)際情況進(jìn)行調(diào)整。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉