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

          新聞中心

          EEPW首頁 > 消費電子 > 設(shè)計應(yīng)用 > 基于Directshow的H.264流媒體播放器設(shè)計

          基于Directshow的H.264流媒體播放器設(shè)計

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

          在服務(wù)器端首先將連續(xù)的H.264流分成一塊一塊小包的負載數(shù)據(jù),并且加上一個信息頭一起使用TCP協(xié)議發(fā)送;在客戶端根據(jù)信息頭描述,將小包的負載數(shù)據(jù)進行拼裝,然后進行H.264的解碼播放。Socket數(shù)據(jù)傳送結(jié)構(gòu)為:負載類型(8 bit)、負載數(shù)據(jù)長度(16 bit)和負載數(shù)據(jù)包(2324Byte)。
          客戶端的實現(xiàn)可以參考SDK中的MEMFile Filter,直接從SDK例子將asyncrdr.cpp、asyncrdr.h、asyncio.cpp、asyneio.h四個文件拷貝過來,然后在MemFilter.h文件中從CAsyncStream派生流處理類CMemStream,定制數(shù)據(jù)源并進行數(shù)據(jù)的讀取操作;從CAsyncReader派生濾波器類CMemReader,實現(xiàn)含1個輸出PIN的Source Filter框架,完成與Splitter Filter的連接。
          網(wǎng)絡(luò)源濾波器類間數(shù)據(jù)流程如圖2,下一級Filter“拉”線程數(shù)據(jù)流程如圖3。其中:CAsyneStream用以標示數(shù)據(jù)流;CAsyneRequest標示輸入與輸出請求;CAsyncIo實現(xiàn)數(shù)據(jù)輸入和輸出的控制。編程主要實現(xiàn)CMemStream:Read()函數(shù)以實現(xiàn)從特定的數(shù)據(jù)源讀取數(shù)據(jù)到下一級Filter的Sample中。

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

          b.JPG
          3.3 H.264解碼Filter的設(shè)計
          該濾波器工作于Splitter和Renderer filter之間,包含一個輸入和一個輸出,且輸入和輸出pin上的媒體類型不一致,故選擇CTrans-form Filter作為基類,派生子類CX264Decode。
          ffmpeg是一個集錄制、轉(zhuǎn)換、音/視頻編碼解碼功能為一體的完整的開源解決方案。利用ffmpeg中的Libavformat和libavcodec庫訪問大多數(shù)視頻文件格式是一個很好的方法。將ffmpeg中關(guān)于h.264解碼的操作封裝為C++類,供H.264解碼Filter調(diào)用以實現(xiàn)解碼功能。
          子類CX264Decode必須要實現(xiàn)的純虛函數(shù)有:CheckInputType()實現(xiàn)輸入Pin上的媒體類型檢查;CheckTransform()檢查是否支持從該輸入pin到輸出pin的變換操作;DecideBufferSize()決定Samlple內(nèi)存的大小;GetMediaType():提供輸出Pin上的首選媒體類型;Transform():實現(xiàn)解碼變換。
          子類CX264Decode可選的重寫虛函數(shù)有:初始化和反初始化流:StartStreaming()和StopStreaming();響應(yīng)質(zhì)量通告消息:AlterQuali-ty();獲取媒體類型被實際設(shè)置的時間:SetMediaType();連接時獲取額外的接口:CheckConnect()、BreakConnect()和CompleteConneet();定制變換過程:Receive();標準化設(shè)置輸出Sample:InitializeOutputSample()。



          關(guān)鍵詞: 播放器

          評論


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