播放鏈路的建立方法、裝置及播放器的製作方法
2023-12-01 09:47:16 1
專利名稱:播放鏈路的建立方法、裝置及播放器的製作方法
技術領域:
本發明涉及通信領域,具體地,涉及一種播放鏈路的建立方法、裝置及播放器。
背景技術:
對於基於DirectShow技術的播放器,其播放核心是通過枚舉系統安裝的過濾器來實現播放鏈路(解析器_>解碼器_>渲染器)的建立,其中,過濾器包括解析器(filter)、解碼器(decoder)以及渲染器(render),解析器、解碼器以及渲染器可以看作渲染鏈路。這種採用過濾器之間握手原理的連接方法,不但效率低,而且即使鏈路建立成功,也有可能會出現無法播放或播放效率低等情況的出現。
發明內容
本發明實施例的主要目的在於提供一種播放鏈路的建立方法、裝置及播放器,以解決現有技術中的播放器存在的建立連接和播放文件的效率都較低的問題。為了實現上述目的,本發明實施例提供一種播放鏈路的建立方法,該方法包括根據接收到的文件路徑獲取音視頻文件;根據所述的音視頻文件獲取所述音視頻文件的格式類型、編碼類型;根據所述音視頻文件的格式類型、編碼類型選擇解析器、解碼器和渲染器;根據選擇的解析器、解碼器和渲染器建立播放鏈路,以播放所述的音視頻文件。具體地,所述根據所述音視頻文件的格式類型、編碼類型選擇解析器、解碼器和渲染器包括如果預先設置了最優解析器、解碼器和渲染器,則選擇所述最優解析器、解碼器和渲染器;如果未預先設置最優解析器 、解碼器和渲染器,則根據所述音視頻文件的格式類型、編碼類型選擇優先級高的解析器、解碼器和渲染器。其中,根據所述音視頻文件的格式類型、編碼類型選擇優先級高的解析器、解碼器和渲染器包括根據所述音視頻文件的格式類型選擇優先級高的解析器;根據所述音視頻文件的編碼類型選擇優先級高的解碼器;根據所述音視頻文件的播放平臺選擇優先級高的渲染器。本發明實施例還提供一種播放鏈路的建立裝置,所述裝置包括音視頻文件獲取單元,用於根據接收到的文件路徑獲取音視頻文件;音視頻文件類型獲取單元,用於根據所述的音視頻文件獲取所述音視頻文件的格式類型、編碼類型;過濾器選擇單元,用於根據所述音視頻文件的格式類型、編碼類型選擇解析器、解碼器和渲染器;鏈路建立單元,用於根據選擇的解析器、解碼器和渲染器建立播放鏈路,以播放所述的音視頻文件。具體地,所述過濾器選擇單元包括預定過濾器選擇模塊,用於在預先設置了最優解析器、解碼器和渲染器時,選擇所述最優解析器、解碼器和渲染器;優先級過濾器選擇模塊,用於在未預先設置最優解析器、解碼器和渲染器是,根據所述音視頻文件的格式類型、編碼類型選擇優先級高的解析器、解碼器和渲染器。其中,所述優先級過濾器選擇模塊包括解析器選擇子模塊,用於根據所述音視頻文件的格式類型選擇優先級高的解析器;解碼器選擇子模塊,用於根據所述音視頻文件的編碼類型選擇優先級高的解碼器;渲染器選擇子模塊,用於根據所述音視頻文件的播放平臺選擇優先級高的渲染器。本發明實施例還提供一種播放器,包括上述的播放鏈路建立裝置。藉助於上述技術方案至少之一,可以克服現有技術中的採用枚舉媒體類型建立的鏈路出現的效率較低的問題,從而可以實現建立連結和播放效果的最優化。
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖1是根據本發明實施例的播放鏈路建立方法的流程圖;圖2是根據本發明實施例的選擇預先配置好的最優鏈路的流程圖;圖3是根據本發明實施例的未預先設計最優鏈路時建立最優鏈路的流程圖;圖4是根據本發明實施例的播放鏈路建立裝置的結構框圖;圖5是根據本發明實施例的過濾器選擇單元403的結構框圖;圖6是根據本發明實施例的優先級過濾器選擇模塊4032的結構框圖;圖7是根據本發明實施例的播放器的結構示意圖;圖8是根據本發明實施 例的播放器鏈路最優匹配模塊10的結構框圖;圖9是根據本發明實施例的過濾器管理模塊讀入XML文件的結構示意圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。如上所述,由於採用枚舉媒體類型而建立起來的鏈路,往往存在無法正常播放,例如無圖像、無聲音、或圖像聲音不同步等問題。這些問題產生的原因,是因為過濾器的實現機制不同,效率也不一樣。並且,採用枚舉媒體類型建立連接時,需要兩個過濾器之間相互查詢是否支持對方,即查詢對方是否支持某種類型,這樣的查詢本身比較耗時。基於此,本發明實施例提供一種播放鏈路的建立方法、裝置及播放器,旨在簡化建立鏈路的過程,同時實現媒體類型的自動匹配,實現播放的最優化。以下結合附圖對本發明進行詳細說明。本發明實施例提供一種播放鏈路的建立方法,如圖1所示,該方法包括步驟101,根據接收到的文件路徑獲取音視頻文件;步驟102,根據音視頻文件獲取音視頻文件的格式類型、編碼類型;步驟103,根據音視頻文件的格式類型、編碼類型選擇解析器、解碼器和渲染器;步驟104,根據選擇的解析器、解碼器和渲染器建立播放鏈路,以播放音視頻文件。由以上描述可知,通過根據文件的格式類型、編碼類型選擇解析器、解碼器和渲染器、並由此建立播放鏈路,克服了現有技術中的採用枚舉媒體類型建立的鏈路出現的效率較低的問題,從而可以實現建立連結和播放效果的最優化。具體地,上述根據音視頻文件的格式類型、編碼類型選擇解析器、解碼器和渲染器包括如果預先設置了最優解析器、解碼器和渲染器,則選擇最優解析器、解碼器和渲染器;如果未預先設置最優解析器、解碼器和渲染器,則根據音視頻文件的格式類型、編碼類型選擇優先級高的解析器、解碼器和渲染器。其中,音視頻文件的格式類型用於選擇優先級高的解析器;音視頻文件的編碼類型用於選擇優先級高的解碼器;音視頻文件的播放平臺用於選擇優先級高的渲染器。也就是說,系統可以預先配置好最優鏈路對(解析器+解碼器+渲染器),以建立最優鏈路。如果沒有預先設計的最優鏈路對,則還可以根據音視頻文件的格式類型、編碼類型選擇優先級高的解析器、解碼器和渲染器建立最優鏈路。這就避免了現有技術中的握手過程,不需要查詢輸入輸出PIN(引腳)所支持的媒體類型,而是直接指定連接類型建立連接。這樣,就可以簡化建立鏈路的過程,並且,由於建立的連接優先級較高,也可以實現播放效率的優化。圖2是選擇預先配置好的最優鏈路的流程圖,如圖2所示,該流程包括步驟201,查詢預先配置的最優鏈路表;步驟202,如果找到最優鏈路,則進行步驟203,否則返回錯誤信息;
步驟203,判斷是否進行本地播放,如果是,進行步驟204,否則進行步驟205 ;步驟204,用FileReader(Asyn)讀取過濾器?如果是,進行步驟206,否則進行步驟 207 ;步驟205,加載QvodSource,並進行步驟208 ;步驟206,加載 FileReader(Asyn),並進行步驟 208 ;步驟207,加載指定Source,並進行步驟209 ;步驟208,加載最優鏈路中的Splitter,並進行步驟209 ;步驟2O9,加載 Decoder ;步驟210,加載Render,並返回正確信息。圖3是未預先設計最優鏈路時建立最優鏈路的流程圖,如圖3所示,該流程包括步驟301,根據格式類型查詢最優解析器,如果是多個解析器,則按優先級排序;步驟302,加載最優解析器,如果不成功,則嘗試下一個解析器,並返回步驟301 ;步驟303,根據視頻、音頻編碼類型查詢最優解碼器,如果有多個解碼器,則按優先級排序;步驟304,加載最優解碼器,如果不成功,則嘗試下一個解碼器,並返回步驟303 ;步驟305,加載最優渲染器。本發明實施例還提供一種播放鏈路的建立裝置,優選地用於實現上述實施例中的方法。如圖4所示,該裝置包括音視頻文件獲取單元401,用於根據接收到的文件路徑獲取音視頻文件;音視頻文件類型獲取單元402,用於根據音視頻文件獲取音視頻文件的格式類型、編碼類型;過濾器選擇單元403,用於根據音視頻文件的格式類型、編碼類型選擇解析器、解碼器和渲染器;
鏈路建立單元404,用於根據選擇的解析器、解碼器和渲染器建立播放鏈路,以播放音視頻文件。由以上描述可以看出,鏈路建立單元404通過過濾器選擇單元403根據文件的格式類型、編碼類型選擇解析器、解碼器和渲染器、並由此建立播放鏈路,克服了現有技術中的採用枚舉媒體類型建立的鏈路出現的效率較低的問題,從而可以實現建立連結和播放效果的最優化。具體地,如圖5所示,上述過濾器選擇單元403包括預定過濾器選擇模塊4031,用於在預先設置了最優解析器、解碼器和渲染器時,選擇最優解析器、解碼器和渲染器;優先級過濾器選擇模塊4032,用於在未預先設置最優解析器、解碼器和渲染器是,根據音視頻文件的格式類型、編碼類型選擇優先級高的解析器、解碼器和渲染器。其中,如圖6所示,優先級過濾器選擇模塊4032包括解析器選擇子模塊40321,用於根據音視頻文件的格式類型選擇優先級高的解析器;解碼器選擇子 模塊40322,用於根據音視頻文件的編碼類型選擇優先級高的解碼器;渲染器選擇子模塊40323,用於根據音視頻文件的播放平臺選擇優先級高的渲染器。上述各單元、各模塊的具體的執行過程可以參考上述實施例一中的描述,此處不再贅述。本發明實施例還提供一種播放器,包括上述實施例中的播放鏈路建立裝置。具體地,該播放器的結構示意圖如圖7所示,該播放器包括數據通訊接口1、文件讀取模塊2、分離模塊3,音頻解碼模塊4、視頻解碼模塊5、音頻渲染模塊6、視頻渲染模塊7、後處理模塊
8、播放控制器9、播放器鏈路最優匹配模塊10 (即播放鏈路建立裝置)、播放接口 11、以及用戶交互界面(圖中未顯示)。其中,數據通訊接口用於接收音視頻文件;文件讀取模塊通過數據通訊接口獲取資源數據;分離模塊用於產生數據請求以及將資源數據分類成音頻數據和視頻數據,之後將音頻數據發送給音頻解碼模塊,將視頻數據發送給視頻解碼模塊;音頻解碼模塊將解碼的音頻數據經由音頻渲染模塊處理後輸出至音頻播放裝置;視頻解碼模塊解碼的視頻幀數據經由視頻渲染模塊送至用戶交互界面的播放控制模塊,並由用戶交互界面的播放窗口呈現給用戶。後處理模塊主要用於顏色校正、2維視頻等處理。播放音視頻文件時,資源數據保存或者臨時保存在一個磁碟位置或者內存位置,分離模塊通過文件讀取模塊和數據通訊模塊不斷以請求/應答的方式從保存位置讀取資源數據。在具體實施過程中,如圖8所示,播放器鏈路最優匹配模塊10包括過濾器管理模塊101和鏈路建立模塊102。其中過濾器管理模塊管理所有可用的過濾器,包括解析器、解碼器、顏色轉換過濾器、視頻渲染器、音頻渲染器。過濾器管理模塊在初始化時讀入外部的XML文件,如圖9所示,XML 文件包括 filters, xml、best, xml、filter_map. xml,其中,filters, xml 用於記錄每個過濾器的屬性(⑶ID、DLL路徑、優先級等);best. xml用於記錄大量實驗找到的若干最優鏈路組合;filter_map. xml用於記錄文件格式(文件容器)、編碼類型和解析器的對應關係。另外,此XML文件包含了播放器用到的所有過濾器的名稱,GUID唯一標識符、不同格式不同壓縮方式所用到的解析器、解碼器、渲染器的組合。外部通過修改XML,就可以實現鏈路的最優匹配。鏈路建立模塊根據播放控制器傳入的文件路徑,分析出文件的格式類型、視頻編碼類型、音頻編碼類型,從過濾器管理模塊匹配出預先設計好的最優鏈路對(解析器+解碼器+渲染器),建立最優鏈路。如果沒有預先設計的最優鏈路對,則根據文件的格式類型、編碼類型,選取優先級高的解析器、解碼器,建立鏈路。也就是說,建立鏈路的過程可以分為兩步第一步是匹配最優鏈路,如果成功,則鏈路建立完成,否則,執行第二步自動匹配建立鏈路。根據格式類型,確定文件解析器,再根據視頻編碼類型,確定視頻解碼器,音頻編碼類型確定音頻解碼器,最後根據運行的平臺(WIN7.XP)確定視頻渲染器、音頻渲染器。在第二步的過濾器的連接過程中,為了避免採用現有技術中的握手過程,不查詢輸入輸出PIN(引腳)所支持的媒體類型,而是直接指定連接類型(包括主媒體類型及次媒體類型)連接。每個過濾器的輸入媒體類型都事先記錄在Filters, xml中了,不需要在程序運行過程中枚舉查詢,這樣做可以提高連接的效率。上述主媒體類型是指音頻、視頻和字幕的初步分類,次媒體類型是指主媒體類型下的細分,如視頻Η· 264,MPEG-1, MPEG-4, ffshow ;音頻AAV,AMR-NB, PCM-LE。以下是最優鏈路示例1、文件容器(文件類型)MP4
視頻解碼器AVC音頻解碼器AAC2、文件容器(文件類型)3GP視頻解碼器H263音頻解碼器AMR_NB3、文件容器(文件類型)MKV視頻解碼器-MC音頻解碼器AAC4、文件容器(文件類型)MP4視頻解碼器AVC音頻解碼器PCM-LE5、文件容器(文件類型)MKV視頻解碼器VC_1音頻解碼器AC_36、文件容器(文件類型)MKV視頻解碼器RV40音頻解碼器COOKER7、文件容器(文件類型)FLV視頻解碼器AVC音頻解碼器AAC 宣染器的選擇windows XP vmr7 video render
WIN7、VISTA 下就用 EVR Video Render在實際操作中該,VMR 9 VIDEO RENDER也是一種選擇,但因為它問題較多,稱其為鏈路而不算最優鏈路。由以上描述可以看出,通過播放器鏈路最優匹配模塊10自動根據文件格式、編碼類型匹配最佳鏈路,可以避免採用現有技術中的握手過程,克服現有技術中的建立鏈路複雜的問題。綜上所述,本發明實施例針對不同的文件類型、媒體編碼類型(視頻和音頻)匹配最優化的過濾器,實現播放鏈路的最優化,克服了現有技術中的採用枚舉媒體類型建立的鏈路出現的效率較低的問題,從而可以實現建立連結和播放效果的最優化。本領域普通技術人員可以理解實現上述實施例方法中的全部或部分步驟可以通過程序來指令相關的硬體來完成,該程序可以存儲於一計算機可讀取存儲介質中,比如R0M/RAM、磁碟、光碟等。 以上所述的具體實施例,對本發明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發明的具體實施例而已,並不用於限定本發明的保護範圍,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。
權利要求
1.一種播放鏈路的建立方法,其特徵在於,所述的方法包括 根據接收到的文件路徑獲取音視頻文件; 根據所述的音視頻文件獲取所述音視頻文件的格式類型、編碼類型; 根據所述音視頻文件的格式類型、編碼類型選擇解析器、解碼器和渲染器; 根據選擇的解析器、解碼器和渲染器建立播放鏈路,以播放所述的音視頻文件。
2.根據權利要求1所述的方法,其特徵在於,所述根據所述音視頻文件的格式類型、編碼類型選擇解析器、解碼器和渲染器包括 如果預先設置了最優解析器、解碼器和渲染器,則選擇所述最優解析器、解碼器和渲染器; 如果未預先設置最優解析器、解碼器和渲染器,則根據所述音視頻文件的格式類型、編碼類型選擇優先級高的解析器、解碼器和渲染器。
3.根據權利要求2所述的方法,其特徵在於,根據所述音視頻文件的格式類型、編碼類型選擇優先級高的解析器、解碼器和渲染器包括 根據所述音視頻文件的格式類型選擇優先級高的解析器; 根據所述音視頻文件的編碼類型選擇優先級高的解碼器; 根據所述音視頻文件的播放平臺選擇優先級高的渲染器。
4.一種播放鏈路的建立裝置,其特徵在於,所述的裝置包括 音視頻文件獲取單元,用於根據接收到的文件路徑獲取音視頻文件; 音視頻文件類型獲取單元,用於根據所述的音視頻文件獲取所述音視頻文件的格式類型、編碼類型; 過濾器選擇單元,用於根據所述音視頻文件的格式類型、編碼類型選擇解析器、解碼器和渲染器; 鏈路建立單元,用於根據選擇的解析器、解碼器和渲染器建立播放鏈路,以播放所述的音視頻文件。
5.根據權利要求4所述的裝置,其特徵在於,所述過濾器選擇單元包括 預定過濾器選擇模塊,用於在預先設置了最優解析器、解碼器和渲染器時,選擇所述最優解析器、解碼器和渲染器; 優先級過濾器選擇模塊,用於在未預先設置最優解析器、解碼器和渲染器是,根據所述音視頻文件的格式類型、編碼類型選擇優先級高的解析器、解碼器和渲染器。
6.根據權利要求5所述的裝置,其特徵在於,所述優先級過濾器選擇模塊包括 解析器選擇子模塊,用於根據所述音視頻文件的格式類型選擇優先級高的解析器; 解碼器選擇子模塊,用於根據所述音視頻文件的編碼類型選擇優先級高的解碼器; 渲染器選擇子模塊,用於根據所述音視頻文件的播放平臺選擇優先級高的渲染器。
7.一種播放器,其特徵在於,所述的播放器包含如權利要求4至6中任一項所述的播放鏈路建立裝置。
全文摘要
本發明提供一種播放鏈路的建立方法、裝置及播放器,其中,該方法包括根據接收到的文件路徑獲取音視頻文件;根據音視頻文件獲取音視頻文件的格式類型、編碼類型;根據音視頻文件的格式類型、編碼類型選擇解析器、解碼器和渲染器;根據選擇的解析器、解碼器和渲染器建立播放鏈路,以播放音視頻文件。通過本發明實施例,可以實現建立連結和播放效果的最優化。
文檔編號H04N21/858GK103067759SQ20111031804
公開日2013年4月24日 申請日期2011年10月19日 優先權日2011年10月19日
發明者鍾惟淵, 劉大衛 申請人:深圳市快播科技有限公司