chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>數(shù)碼產(chǎn)品>MD播放器>

流式播放引擎 - Symbian平臺上實(shí)現(xiàn)流媒體播放器

2011年09月29日 15:56 本站整理 作者:羅明珊,武茜,袁夢 用戶評論(0
3. 1. 2 流式播放引擎

  對于流式音頻播放,則使用多媒體框架的CMdaAudioOutputStreamAPI。CPluginAdaper 為封裝好的流式播放引擎,由它來調(diào)用流媒體播放的相關(guān)接口。本地內(nèi)容播放和流式播放的主要不同在于文件打開方式、初始化方法及對音頻數(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ā)送請求。等服務(wù)器作出響應(yīng)后,讀取響應(yīng)的數(shù)據(jù)并進(jìn)行分析,用來初始化播放引擎??蛻舳死^續(xù)對服務(wù)端請求播放的音頻數(shù)據(jù)。

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

  其播放流程如圖3 所示。首先初始化CMdaAudioOutputStream類。初始化完成后,Multimedia 框架會調(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 版本中,提供了對HTTP 客戶端的API 支持。

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

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

  

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

( 發(fā)表人:小蘭 )

      發(fā)表評論

      用戶評論
      評價(jià):好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?