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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于IntelPXA270平臺的嵌入式流媒體播放器設(shè)計

          基于IntelPXA270平臺的嵌入式流媒體播放器設(shè)計

          作者: 時間:2012-04-05 來源:網(wǎng)絡(luò) 收藏


          解碼格式的可擴展性

          播放器支持的文件格式越多,其生命力也就越強大, 嵌入式處理器加上2700G 多媒體加速芯片的搭配方案為媒體播放提供了強大的硬件支持,通過軟件升級,理論上可以支持任何媒體格式。本方案的做法是:在播放器中實現(xiàn)一個索引表類,將來根據(jù)需要新添加的編碼格式作為獨立的類注冊到索引表中?;趌inux 的c++解碼類源代碼可以由網(wǎng)上開放源碼的解碼器網(wǎng)站下載,系統(tǒng)中的MP1,MP2,MP3 和WAV 的解碼就是采用這種方法實現(xiàn)的。

          播放模塊實現(xiàn)

          文件的輸入

          在播放器系統(tǒng)中,文件的來源有兩種:由網(wǎng)卡讀入存儲器后播放或通過其它數(shù)據(jù)傳輸途徑寫入存儲器,在存儲器中直接播放。sophia 板提供了網(wǎng)卡的驅(qū)動模塊,可以使用命令modprobe usbcore 和modprobe usbwlnc動態(tài)加載,為數(shù)據(jù)從網(wǎng)卡經(jīng)由操作系統(tǒng)到達(dá)播放進(jìn)程提供一個全雙工的通道。數(shù)據(jù)的處理由播放器中的stream input 類來實現(xiàn)。

          協(xié)議

          實現(xiàn)流式傳輸有兩種方法:實時流式傳輸和順序流式傳輸,系統(tǒng)使用的是實時流式傳輸,需要標(biāo)準(zhǔn)化的協(xié)議來保證客戶機和專用的服務(wù)器之間進(jìn)行通信。根據(jù)流媒體協(xié)議的功能可以分為兩類:

          基本網(wǎng)絡(luò)協(xié)議

          為媒體傳輸提供基本的網(wǎng)絡(luò)服務(wù)支持,由于TCP需要較多的開銷,不太適合傳輸實時數(shù)據(jù)。在流式傳輸?shù)膶崿F(xiàn)方案中,采用RTSP/TCP 來傳輸控制信息,而用RTP/UDP 來傳輸實時聲音、圖像數(shù)據(jù)。

          傳輸協(xié)議

          傳輸協(xié)議包括RTP、RTCP、RTSP 和RSVP,RTP和RTCP 控制端到端網(wǎng)絡(luò)數(shù)據(jù)的傳輸,RTSP 提供話路控制的功能,RSVP 是可選的,它為播放進(jìn)程在網(wǎng)上預(yù)先申請一部分網(wǎng)絡(luò)資源( 即帶寬),能在一定程度上為流媒體在Internet 上的傳輸提供特殊服務(wù)質(zhì)量QoS。為流媒體設(shè)計的協(xié)議棧如圖3 所示:從UDP/TCP層得到的數(shù)據(jù)包處理后得到打包的RTP 數(shù)據(jù)流,通過RTP/RTCP/RTSP 層分離出定時和同步信息以及包的序列號,將讀出的流文件交給ASF 和RM解碼模塊。



          關(guān)鍵詞: PXA270 MPEG-4 流媒體

          評論


          相關(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); })();