a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 消費電子 > 設計應用 > 基于Directshow的H.264流媒體播放器設計

基于Directshow的H.264流媒體播放器設計

作者: 時間:2011-03-04 來源:網絡 收藏

播放本地基于H.264編碼的AVI文件的Filter Graph如圖1。只需將本地File Source Filter替換為網絡源Filter,將CoreAVC Video De-coder替換為h.264解碼Filter,即可實現網絡H.264視頻

本文引用地址:http://www.j9360.com/article/166218.htm

a.JPG

3 系統的設計與實現
3.1 Filter設計流程
Filter的編碼實現包括Filter的注冊信息、Filter上的框架函數實現、邏輯控制類實現、自定義接口實現、屬性頁實現、產權保護等。
首先,要對Filter所要完成的功能和它在Filter Graph中的位置進行分析,以確定filter模型,選擇一個合適的基類;然后,再定義輸入輸出PIN以及自定義接口,注冊Filter信息;最后實現基類的全部純虛函數和自定義接口函數,并重寫基類的相關函數以定制filter功能。
3.2 網絡源Filter的設計
源Filter主要功能是接收服務器發來的流媒體數據,并提供給Filter Graph中其它Filter使用。
由于directshow自帶的AVI splitter工作于拉模式,故該源Filter也工作于拉模式。
本源Filter采用雙緩沖循環隊列技術來實現數據的接收和向下一級Filter傳遞數據。采用該技術有如下理由:
(1)在Source Filter與SpliRer連接的過程中,會從Source Filter中讀取一部分數據,以獲得數據的格式描述,否則Filter Graph無法完成連接。源Filter與Splitter Filter進行連接前,應啟動一個等待線程,當Source Filter的數據緩存預先接收到足夠的數據后,再構建完整的Filter Graph。
(2)當完整的Filter Graph構建完成,并且處于運行狀態后,Source Filter必須動態地接收數據,并持續地把新數據提供給Splitter Filter,雙緩沖循環隊列既充分利用內存空間,又能為Splitter Filter提供穩定的數據源。
(3)緩沖隊列可以穩定碼率,有效減小網絡延時、阻塞和抖動的影響。
源Filter的工作過程如下:建立一個循環緩沖隊列,隊列尾指針用于緩沖從網絡接收的數據,隊列頭指針供Splitter讀取數據,進行音視頻分離,并傳給下一級Decoder處理;當Socket接收到網絡數據后,將數據插入隊列尾部,并使尾指針后移;當Splitter需要讀取數據時,從隊列頭讀取數據,并使頭指針后移。
流媒體傳輸采用客戶端/服務器的架構,服務器與客戶端之間還有一個Socket通信協議問題,由于流媒體是連續的,它的同步點不能隨意選擇,因此,為了傳送流媒體數據,必須使用面向連接的可靠的傳輸協議(TCP)。客戶端與服務器端的控制與反饋消息,則可以使用(UDP)來傳輸。服務器端首先創建一個偵聽Socket,偵聽來自客戶端的連接請求。一旦偵聽到客戶端的請求,服務器端就創建一個用于數據傳送的Socket,并綁定到請求連接的客戶端,此時,服務器處于數據傳送的就緒狀態。當客戶端發出命令,服務器再根據命令的類型執行相應的操作,如數據發送、停止、斷開連接等。



關鍵詞: 播放器

評論


相關推薦

技術專區

關閉