<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Mobile的手機(jī)流媒體實(shí)時(shí)圖像瀏覽客戶端設(shè)計(jì)

          基于Mobile的手機(jī)流媒體實(shí)時(shí)圖像瀏覽客戶端設(shè)計(jì)

          作者: 時(shí)間:2011-09-26 來源:網(wǎng)絡(luò) 收藏

            1 引言

          本文引用地址:http://www.ex-cimer.com/article/150164.htm

            當(dāng)今社會(huì),僅僅傳輸文字和信息已經(jīng)不能滿足現(xiàn)代社會(huì)發(fā)展的需要,音頻和視頻的多媒體信息成為網(wǎng)絡(luò)上重要的傳輸內(nèi)容。同時(shí)微軟憑借其強(qiáng)大的研發(fā)實(shí)力和市場推廣能力,使得Windows 操作系統(tǒng)及其開發(fā)工具成為了主流的智能軟件開發(fā)平臺(tái)。

            2 系統(tǒng)的功能及總體結(jié)構(gòu)

            本文主要闡述的軟件,此軟件是通過軟件仿真實(shí)現(xiàn)的一個(gè)Windows 系統(tǒng)。要求能夠一邊收取網(wǎng)絡(luò)上的大量音視頻數(shù)據(jù),將數(shù)據(jù)解碼,一邊還要進(jìn)行顯示。因此多媒體系統(tǒng)中的流媒體的功能包括:

           ?。?) 從網(wǎng)絡(luò)上接收數(shù)據(jù)包,收集傳來的各種數(shù)據(jù)和指令。

           ?。?) 對(duì)其進(jìn)行分析、處理,將數(shù)據(jù)進(jìn)行解碼以便交給設(shè)備進(jìn)行輸出。

           ?。?) 將從解碼模塊傳過來的處理后的數(shù)據(jù)通過播放器進(jìn)行顯示。

            3 主要模塊的與實(shí)現(xiàn)

            本文應(yīng)用流媒體技術(shù)、網(wǎng)絡(luò)通信技術(shù)了一個(gè)智能流媒體傳輸系統(tǒng)框架,并針對(duì)組成該系統(tǒng)的重要模塊進(jìn)行探討和研究。基于RTP/RTCP 協(xié)議的流媒體傳輸組件,實(shí)現(xiàn)了的網(wǎng)絡(luò)數(shù)據(jù)傳輸、解碼和顯示等功能,為以后開發(fā)出有完善功能的應(yīng)用系統(tǒng)作了鋪墊。

            本系統(tǒng)中的流媒體圖像需要包括如下模塊:網(wǎng)絡(luò)接收模塊、解碼模塊、顯示模塊、操作控制模塊,根據(jù)平臺(tái)的結(jié)構(gòu)和工作原理,系統(tǒng)的工作流程如圖1 所示。

            

            3.1 網(wǎng)絡(luò)接收模塊

            本系統(tǒng)中設(shè)計(jì)了智能手機(jī)上的RTP 接收,針對(duì)智能手機(jī)處理速度的限制,在該模塊中設(shè)計(jì)了一個(gè)緩沖區(qū)用于平滑網(wǎng)絡(luò)上所接收的數(shù)據(jù)和智能手機(jī)處理速度之間的瓶頸。同時(shí)Mobile操作系統(tǒng)支持TCP/IP 協(xié)議,因此可以使用TCP/IP 協(xié)議進(jìn)行網(wǎng)絡(luò)方面的通信和圖像數(shù)據(jù)的傳輸。RTP 接收數(shù)據(jù)流程圖如圖2 所示。

            

            3.2 解碼模塊

            音/ 視頻以大量的數(shù)據(jù)進(jìn)行傳輸,可能會(huì)造成網(wǎng)絡(luò)堵塞。為了減少網(wǎng)絡(luò)傳輸量,那么在不會(huì)影響音視頻顯示效果的前提下,對(duì)數(shù)據(jù)進(jìn)行了壓縮和編碼處理,可以大大的減少數(shù)據(jù)量。因此,在接收到數(shù)據(jù)以后,對(duì)完整的音/ 視頻數(shù)據(jù)要進(jìn)行對(duì)應(yīng)的解碼,才能使圖像正確無誤的顯示出來。

            3.3 顯示模塊

            本系統(tǒng)中采用Direct-Show技術(shù)來提供多媒體流高質(zhì)量的捕捉與回放。下面就本系統(tǒng)中終端播放器的具體功能和實(shí)現(xiàn),設(shè)計(jì)如下:

            3.3.1 建立項(xiàng)目

            使用Visual STudio 2008 的開發(fā)環(huán)境創(chuàng)建一個(gè)新項(xiàng)目,利用智能設(shè)備應(yīng)用程序向?qū)?chuàng)建一個(gè)基于對(duì)話框的應(yīng)用程序, 編譯環(huán)境設(shè)置為Windows Mobile 6 ProfessiONalSDK,設(shè)備選擇CHSWindows Mobile 6 ClassicEmulator 為智能設(shè)備的模擬環(huán)境。

            3.3.2 新建一個(gè)CEric-MediaControl 類,用于封閉媒體文件播放等功能

            CEricMediaControl 類是一個(gè)通用的C++ 類,無基類。

            下面就來具體實(shí)現(xiàn)CEricMediaControl 類。

            a.為CEricMediaControl 類添加私有變量,用于定義播放媒體文件播放所需的DSHOW接口。

            b.定義媒體播放事件對(duì)應(yīng)的WINDOWS 消息常量WM_GRAPHNOTIFY,定義如下:#define WM_GRAPHNOTIFYWM_USER + 101。

            c.實(shí)現(xiàn)CEricMediaControl 類的構(gòu)造函數(shù)和析構(gòu)函數(shù)。在構(gòu)造函數(shù)里,將DSHOW相關(guān)的接口初始化為NULL,并初始化COM環(huán)境;在析構(gòu)函數(shù)里,釋放DSHOW 接口并釋放COM環(huán)境。

            d.為CEricMediaControl 類添加InitDShow和UnInitDShow兩個(gè)私有方法。

            e.為CEricMediaControl 類添加4 個(gè)共有方法,供外部調(diào)用。這4 個(gè)方法分別為OpenFile、VideoRun、VideoPause、VideoStop。f. 為類CEricMediaControl類添加7 個(gè)共有的方法,用于設(shè)置媒體播放屬性以及得到媒體播放器的屬性。這7個(gè)方法分別為FitVideoWindow、FullScreen、Get-FullScreenStatus、GetMediaEvent、SetPositions、GetDuration。

            3.3.3 設(shè)計(jì)媒體播放器的主窗口

            根據(jù)媒體播放器上的樣式,對(duì)話框上的控件及其屬性設(shè)置如表1 所示。

            

            至此,媒體播放器就編寫完成了,編譯并部署到模擬器中,即可實(shí)現(xiàn)流媒體實(shí)時(shí)圖像的瀏覽了,同時(shí)可以作為本地媒體播放器使用,通過“打開”按鈕選擇播放本地媒體文件。

            4 結(jié)語

            隨著手機(jī)市場的不斷增長和3G 網(wǎng)絡(luò)業(yè)務(wù)的快速發(fā)展,針對(duì)智能手機(jī)音/ 視頻圖像的傳輸,本文通過流媒體技術(shù)以及網(wǎng)絡(luò)編程的研究,實(shí)現(xiàn)了在Mobile 操作系統(tǒng)下實(shí)時(shí)圖像的傳輸及瀏覽。這個(gè)實(shí)時(shí)流媒體傳輸系統(tǒng)經(jīng)過進(jìn)一步完善后,將可以推廣到更多場合中,得到更多的應(yīng)用,例如:視頻會(huì)議、遠(yuǎn)程教學(xué)等,具有實(shí)際應(yīng)用價(jià)值。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();