專利名稱:視頻播放方法及視頻播放器的制作方法
視頻播放方法及視頻播放器
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其是計(jì)算機(jī)技術(shù)中的視頻播放方法及視頻 播放器。
背景技術(shù):
當(dāng)十年前MPEG標(biāo)準(zhǔn)的產(chǎn)物——VCD尚未完全退出消費(fèi)市場(chǎng)時(shí),當(dāng)很多人 還在贊嘆DVD所帶來(lái)的高品質(zhì)圖像畫質(zhì)時(shí),伴隨著MPEG-4 PartlO、 AVC/H.264 和Windows Media VC-1等^L頻編碼標(biāo)準(zhǔn)的成熟及其產(chǎn)業(yè)鏈的形成,高清影片已 經(jīng)開始為追求生活品質(zhì)的人們所追捧。
高清影片要求分辨率達(dá)到1280x720或者1920x1080,相應(yīng)地,普通高清影 片的碼率高達(dá)30Mbps 。顯然,對(duì)比DVD所定義的標(biāo)準(zhǔn)清晰度影片(Standard Definition, SD),高清影片在分辨率和碼率方面都有顯著提高。海量的圖像/聲音 數(shù)據(jù)給用戶帶來(lái)了細(xì)膩、逼真的畫質(zhì)和抑揚(yáng)分明的音質(zhì),讓影片觀賞者身臨其 境,充分感受到影片所帶來(lái)的視覺(jué)和聽(tīng)覺(jué)沖擊力。
然而,播放高清影片將極大增加CPU的負(fù)荷。這是因?yàn)椋瑐鹘y(tǒng)視頻播放器 將全部視頻解碼工作放在CPU中進(jìn)行。對(duì)于高清影片, 一方面其采用了高計(jì)算 復(fù)雜度的視頻編碼算法;另一方面,相對(duì)于低分辨率的影片,播放高清影片需 要處理的圖像像素?cái)?shù)量急劇增加。于是,普通配置的CPU在解碼高清視頻時(shí)往 往會(huì)滿負(fù)荷工作,造成PC響應(yīng)其他用戶命令緩慢而出現(xiàn)畫面顯示不連續(xù)、聲音 播放斷斷續(xù)續(xù)的現(xiàn)象,更有甚者出現(xiàn)操作系統(tǒng)無(wú)響應(yīng)(系統(tǒng)死機(jī))的情況。
為了降低CPU解碼高清視頻時(shí)的工作負(fù)荷,近年來(lái),各大GPU生產(chǎn)廠商 紛紛研發(fā)了支持高清視頻硬件解碼的GPU產(chǎn)品,如NVIDIA出品的NVIDIA GeForce 8/9系列產(chǎn)品和ATI產(chǎn)品的ATI HD 2000系列及其以上的產(chǎn)品。 一般地, 視頻解碼包括熵解碼、反整數(shù)變換、運(yùn)動(dòng)補(bǔ)償和圖像后處理(或者"環(huán)路濾波") 等4個(gè)環(huán)節(jié),支持高清視頻硬件解碼的GPU即能夠完成上述4個(gè)環(huán)節(jié)中的部分 甚至全部,于是由CPU岸義擔(dān)的部分或者全部解碼工作轉(zhuǎn)為GPU來(lái)承擔(dān),,人而
5降低了系統(tǒng)播放高清^L頻時(shí)的CPU資源占用率,使得其能及時(shí)響應(yīng)其他的用戶
命令。對(duì)應(yīng)于GPU在視頻解碼過(guò)程中的參與程度,Microsoft定義了 DXVA標(biāo) 準(zhǔn)(DirectX Video Acceleration),以表明GPU的^見(jiàn)頻硬j牛解碼能力檔次。
基于DirectShow架構(gòu)的傳統(tǒng)視頻播放器,在渲染一見(jiàn)頻文件時(shí)首先枚舉系統(tǒng) 中注冊(cè)的分離器濾鏡,然后根據(jù)濾鏡生成的輸出端(outputpin)上的文件類型 以遞歸的方式枚舉并連接合適的解碼濾鏡直至連接到渲染器濾鏡。更具體地, 對(duì)視頻文件的渲染可以分為下面幾個(gè)步驟
首先,根據(jù)視頻文件特征碼或者后綴名,枚舉系統(tǒng)中所有合適的分離器, 并根據(jù)Merit值從高到低的順序,依次嘗試。當(dāng)找到某個(gè)能成功解析視頻文件的 分離器時(shí),進(jìn)入下一步;否則,將該分離器從渲染圖表中剔除,繼續(xù)嘗試下一 分離器,直至所有分離器都被遍歷一次。
然后,在上一級(jí)(Upstream)濾鏡的輸出端上,根據(jù)視頻信息(Media Type) 枚舉系統(tǒng)中所有合適的解碼濾鏡,并根據(jù)優(yōu)先級(jí)(Merit)值從高到低的順序, 依次嘗試。若上級(jí)濾鏡輸出端能和被嘗試濾鏡的輸入端相連接(Connect)的時(shí) 候,則繼續(xù)連接下一級(jí)濾鏡;直至遞歸連接到渲染器,整個(gè)渲染圖表建立完成。
如果視頻播放器能夠搜索到所有在系統(tǒng)中業(yè)已注冊(cè)的DirectShow濾鏡,那 么這種視頻播放器就能夠支持高清影片硬件加速功能。然而,4見(jiàn)頻播放器在視 頻文件的渲染過(guò)程中,是以遞歸搜索的方式優(yōu)先嘗試Merit值較高的DirectShow 濾鏡,而沒(méi)有考慮并利用高清影片自身的特點(diǎn),故造成渲染效率低下;如果支 持硬件加速的濾鏡Merit值較低,甚至?xí)霈F(xiàn)無(wú)法實(shí)現(xiàn)硬件加速的情況。另一方 面,由于開啟顯卡視頻解碼加速功能后,使得常見(jiàn)的視頻解碼后處理等過(guò)程無(wú) 法實(shí)施,使得硬件加速開啟后的畫面質(zhì)量有一定損失,所以若對(duì)小分辨率視頻 也一律開啟加速,則會(huì)帶來(lái)視覺(jué)效果削弱而又沒(méi)能明顯改善系統(tǒng)負(fù)載,因?yàn)镃PU
對(duì)小分辨率視頻進(jìn)行處理所占用的資源本來(lái)就很小。
上述過(guò)程由于沒(méi)有考慮高清文件自身的特點(diǎn),也沒(méi)有挖掘系統(tǒng)顯卡的DXVA 能力,故無(wú)法最大化地利用顯卡DXVA能力,造成GPU資源的浪費(fèi),進(jìn)而可能 影響到高清影片的播放體驗(yàn)。
發(fā)明內(nèi)容
有鑒于此,有必要提供一種根據(jù)視頻文件自身的特點(diǎn)及系統(tǒng)硬件能力進(jìn)行 播放的纟見(jiàn)頻播Jt方法。
此外,還有必要提供一種根據(jù)視頻文件自身的特點(diǎn)及系統(tǒng)硬件能力進(jìn)行播放 的視頻播放器。
一種視頻播放方法,包括以下步驟讀取視頻文件信息;獲取硬件系統(tǒng)信息; 根據(jù)所述視頻文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系選擇濾鏡。
優(yōu)選地,所述讀取視頻文件信息的步驟包括如下步驟中的 一種以上解析視 頻文件的分辨率或碼率;解析容器格式;解析視頻編碼格式;讀取字幕存在方 式、顯示方式。
優(yōu)選地,所述獲取硬件系統(tǒng)信息的步驟包括如下步驟判斷硬件系統(tǒng)是否支 持硬件加速;如果支持硬件加速則獲取硬件加速能力信息。
優(yōu)選地,所述根據(jù)所述視頻文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系選擇 濾鏡的步驟包括選擇與所述容器格式對(duì)應(yīng)的分離器濾鏡的步驟。
優(yōu)選地,所述根據(jù)所述視頻文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系選擇 濾鏡的步驟包括判斷所述編碼格式是否與硬件加速能力信息對(duì)應(yīng);如果不對(duì) 應(yīng),選擇與編碼格式對(duì)應(yīng)的解碼器濾鏡;如果對(duì)應(yīng),則選擇與編碼格式對(duì)應(yīng)且 支持硬件加速的解碼器濾鏡。
優(yōu)選地,在判斷所述編碼格式是否與硬件加速能力信息對(duì)應(yīng)之前還包括判斷
所述預(yù)定分辨率或碼率,則直接進(jìn)行所述選擇與所述編碼才各式對(duì)應(yīng)的解碼器濾 鏡的步驟;如果達(dá)到所述預(yù)定分辨率或碼率,則進(jìn)行所述判斷所述編碼格式是 否與硬件加速能力信息對(duì)應(yīng)的步驟。
優(yōu)選地,所述根據(jù)所述視頻文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系選擇 濾鏡的步驟還包括依次根據(jù)操作系統(tǒng)的類型、是否啟用了硬件加速、視頻文 件的顯示方式或字幕存在方式選擇渲染器濾鏡。
一種視頻播放器,包括文件信息解析模塊,用于讀取視頻文件信息;硬件 檢測(cè)模塊,用于獲取硬件系統(tǒng)信息;濾鏡管理模塊,用于存儲(chǔ)視頻文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系;濾鏡連接策略模塊,分別與所述文件信息解 析模塊、硬件檢測(cè)模塊、濾鏡管理模塊相連以獲取所述視頻文件信息、硬件系 統(tǒng)信息、視頻文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系,并根據(jù)所述對(duì)應(yīng)關(guān) 系選擇濾鏡。
優(yōu)選地,所述濾鏡管理模塊包括分離器濾鏡管理單元,所述分離器濾鏡管理 單元用于存儲(chǔ)視頻文件的容器格式對(duì)應(yīng)的分離器濾鏡優(yōu)先級(jí)順序。
優(yōu)選地,所述濾鏡管理模塊包括解碼器濾鏡管理單元,所述解碼器濾鏡管理 單元用于存儲(chǔ)視頻文件的編碼格式對(duì)應(yīng)的解碼器濾鏡分別在是否支持硬件加速 的條件下的優(yōu)先級(jí)順序。
優(yōu)選地,所述濾鏡連接策略模塊用于根據(jù)所述硬件系統(tǒng)信息判斷硬件系統(tǒng)能 否對(duì)^見(jiàn)頻文件的播放執(zhí)行硬件加速,如果能執(zhí)行硬件加速,則選擇支持硬件加 速的條件下的優(yōu)先級(jí)高的解碼器濾鏡并啟用硬件加速。
優(yōu)選地,所述濾鏡連接策略模塊還用于根據(jù)所述^L頻文件信息中的分辨率或
碼率判斷所述視頻文件的分辨率或碼率是否達(dá)到預(yù)定分辨率或碼率,如果所述 視頻文件的分辨率或碼率未達(dá)到預(yù)定分辨率或碼率,則不啟用硬件加速。
優(yōu)選地,所述濾鏡管理模塊包括渲染器濾鏡管理單元,所述渲染器濾鏡管理 單元用于依次根據(jù)操作系統(tǒng)的類型、是否啟用了硬件加速、視頻文件的顯示方 式或字幕存在方式選擇渲染器濾鏡。
優(yōu)選地,所述濾鏡管理模塊是基于開放式xml文件的。
上述視頻播放方法和播放系統(tǒng)中,根據(jù)視頻文件信息及硬件系統(tǒng)信息與濾鏡 的對(duì)應(yīng)關(guān)系選擇濾鏡,在硬件系統(tǒng)能夠?qū)σ曨l文件的播放實(shí)現(xiàn)硬件加速時(shí),選 擇支持硬件加速的濾鏡,可以有效降低CPU的占用率。
利用視頻分辨率和碼率信息來(lái)識(shí)別高清影片,使得在恰當(dāng)?shù)臅r(shí)候才會(huì)開啟高 清硬件加速,避免小分辨率^L頻采用硬件加速造成的負(fù)面影響。
根據(jù)操作系統(tǒng)的類型、是否啟用了硬件加速、視頻文件的顯示方式或字幕存 在方式選擇渲染器濾鏡,可以避免出現(xiàn)兼容性問(wèn)題。
相對(duì)于基于系統(tǒng)注冊(cè)表方式的需要借助操作系統(tǒng)管理濾鏡的濾鏡管理模塊, 基于開放式xml文件的濾鏡管理模塊可以不依賴于操作系統(tǒng)。
8
圖1為視頻播放方法的流程圖2為讀取3見(jiàn)頻文件信息的詳細(xì)流程圖3為獲取硬件系統(tǒng)信息的詳細(xì)流程圖4為根據(jù)所述視頻文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系選擇濾鏡 的詳細(xì)流程圖5為容器格式和分離器濾鏡對(duì)應(yīng)關(guān)系示意圖; 圖6為編碼才各式和解碼器濾鏡對(duì)應(yīng)關(guān)系示意圖; 圖7為視頻播放器的模塊圖; 圖8為濾鏡管理模塊的模塊圖。
具體實(shí)施方式
在以下實(shí)施方式中,充分利用高清影片自身的特點(diǎn),并挖掘和利用系統(tǒng)硬件 功能,提高播放器渲染高清影片時(shí)的效率,并大大提高高清硬件加速的成功率, 改善用戶高清影片播放體驗(yàn)。
如圖l所示,其為視頻播放方法的流程圖。首先,步驟S110,讀取視頻文 件信息。在用戶打開視頻文件進(jìn)行播放時(shí),首先讀取視頻文件的信息,這些信 息可以是文件容器格式、音頻編碼格式、視頻編碼格式、分辨率、碼率、字幕 存在方式、顯示方式等。其中,容器格式是指設(shè)定的不同的視頻文件格式把視 頻和音頻放在一個(gè)文件中,以方便同時(shí)回放,高清影片使用的容器格式有 MPEG(包括Mpeg-TS 、 Mpeg匿PS等)、AVI(Audio Video Interleave)、 MKV(Matroska)和MP4等;音頻編碼才各式有AC3、 DTS、 LPCM和EAC3(AC3-Plus)等;視頻編碼格式有MPEG2、 H.264、 VC-1等,其中,H.264和VC-1為 藍(lán)光碟片和HD DVD碟片所定義的高清視頻格式,占據(jù)了高清影片的絕大部分; 高清影片的分辨率通常為1280x720或者1920x1080;碼率是指單位時(shí)間內(nèi)需要 處理的數(shù)據(jù)數(shù)量,以比特每秒計(jì)算,例如高清影片的碼率通常在20Mbps以上; 字幕存在方式有內(nèi)嵌字幕和外掛字幕,內(nèi)嵌字幕通過(guò)視頻編碼直接嵌入在圖像 中,而外掛字幕有單獨(dú)的字幕文件,在視頻解碼后通過(guò)渲染器濾鏡添加到圖像
9中;顯示方式分為逐行掃描和隔行掃描。
步驟S120,獲取硬件系統(tǒng)信息。通過(guò)讀取硬件配置獲取圖形處理單元
(Graphic Processing Unit, GPU )的DXVA ( DirectX Video Acceleration,石更4牛 視頻加速)能力。其中,GPU可以位于獨(dú)立顯卡中,也可以整合在北橋芯片或 中央處理器芯片中。DXVA是一個(gè)由微軟和圖形芯片廠商聯(lián)合定義的一個(gè)硬件 接口規(guī)范。如果一種GPU在硬件上支持DXVA規(guī)范,并不代表它就實(shí)現(xiàn)了 DXVA 里面定義的所有功能,也就是說(shuō),不同的GPU具有不同的DXVA能力。獲取硬 件系統(tǒng)信息可以了解GPU的DXVA能力,如果GPU的DXVA能力與-見(jiàn)頻文件 的視頻編碼格式對(duì)應(yīng),即GPU可以實(shí)現(xiàn)對(duì)該編碼格式的硬件解碼的話,則可以 對(duì)該視頻文件的播放過(guò)程進(jìn)行硬件加速。
步驟S130,根據(jù)所述視頻文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系選擇 濾鏡。視頻播放的過(guò)程中需要用到多種濾鏡,例如分離器濾鏡、解碼器濾鏡和 渲染器濾鏡等,每一種濾鏡又有多家廠商開發(fā)的不同產(chǎn)品。只有這些濾鏡與視 頻文件能夠很好的匹配,才能得到較好的視頻播放效果。同時(shí),為了降低^L頻 播放過(guò)程中CPU的占用率,最有效的辦法為啟用GPU的石更件加速功能。然而, 傳統(tǒng)的視頻播放都是根據(jù)濾鏡的優(yōu)先(Merit)值選擇濾鏡,如果支持硬件加速 的解碼器濾鏡Merit值較低,則無(wú)法自動(dòng)實(shí)現(xiàn)硬件加速,需要用戶手動(dòng)設(shè)置解碼 器濾鏡,對(duì)于不熟悉視頻技術(shù)的用戶來(lái)說(shuō),手動(dòng)設(shè)置甚至可能導(dǎo)致視頻無(wú)法播 放。因此,根據(jù)所述視頻文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系選擇濾鏡, 在硬件系統(tǒng)能夠?qū)σ曨l文件的播放實(shí)現(xiàn)硬件加速時(shí),選擇支持硬件加速的濾鏡, 可以有效降低CPU的占用率,同時(shí)免去用戶手動(dòng)設(shè)置的麻煩。
更具體地,步驟SI 10的詳細(xì)流程如圖2所示。
步驟S112,解析;f見(jiàn)頻文件的分辨率或碼率。由于開啟^ 更件加速后無(wú)法進(jìn)行 視頻后處理過(guò)程(如畫面直方圖均衡處理、模糊圖像銳化處理等),所以開啟 硬件加速后畫面效果可能較純軟件解碼方式時(shí)有一定下降。另外,顯卡型號(hào)較 多、產(chǎn)品更新周期較快,很多用戶使用的視頻驅(qū)動(dòng)或者解碼器版本更新不及時(shí), 造成開啟硬件加速后出現(xiàn)系統(tǒng)異常情況,如藍(lán)屏錯(cuò)誤等。當(dāng)視頻畫面分辨率較小或者視頻碼率較低,如lMbps左右時(shí),全部解碼流程由CPU來(lái)承擔(dān)亦可輕 松完成,啟用硬件加速對(duì)減少CPU的占用率并不明顯,反而會(huì)造成負(fù)面的影響。 所以,利用視頻分辨率和碼率信息來(lái)識(shí)別高清影片,使得在恰當(dāng)?shù)臅r(shí)候才會(huì)開 啟高清硬件加速。
步驟S114,解析容器格式。容器格式也稱封裝格式,就是將已經(jīng)編碼壓縮 好的視頻軌和音頻軌按照一定的格式放到一個(gè)文件中。在獲得視頻文件的容器 格式之后,通過(guò)分離器濾鏡可以把封裝在一起的視頻以及音頻分離出來(lái)以供解 碼器解碼。
步驟S116,解析視頻編碼格式。視頻編碼格式有MPEG2、 H.264、 VC-1等。 步驟S118,讀取一見(jiàn)頻的顯示方式和字幕存在方式。顯示方式分為逐4于掃4笛 和隔行掃描。字幕存在方式有外掛字幕和內(nèi)嵌字幕,內(nèi)嵌字幕通過(guò)視頻編碼直 接嵌入在圖像中作為圖像的一部分,因此,對(duì)于渲染器濾鏡來(lái)說(shuō),可以認(rèn)為內(nèi) 嵌字幕相當(dāng)于沒(méi)有字幕;而外掛字幕有單獨(dú)的字幕文件,在視頻解碼后通過(guò)渲 染器濾鏡添加到最終顯示的圖像中。
步驟S112至S118中的步驟可以根據(jù)需要調(diào)換順序或者省略其中的部分步 驟,例如省略步驟S112和S118。
更具體地,步驟S120的詳細(xì)流程如圖3所示。
步驟S122,判斷硬件系統(tǒng)是否支持硬件加速。也就是判斷GPU是否滿足 DXVA規(guī)范。如果不滿足,則表示無(wú)法進(jìn)行硬件加速,流程結(jié)束;如果滿足, 則進(jìn)入步驟S124。
步驟S124 ,獲取硬件加速能力信息。相應(yīng)于視頻編碼方法所采用的多種技 術(shù),GPU在視頻解碼過(guò)程中要實(shí)現(xiàn)硬件加速,需要相應(yīng)的硬件技術(shù)支持。而不 同的GPU因?yàn)樯鲜袝r(shí)間、市場(chǎng)定位等原因,所采用的硬件技術(shù)也不同。通過(guò)利 用Microsoft定義的DXVA編碼接口獲取當(dāng)前系統(tǒng)支持的硬件加速能力信息,其 主要內(nèi)容是當(dāng)前顯卡支持哪些類型的視頻解碼加速功能,比如支持MPEG-2、 H.264、 VC-1等視頻解碼加速功能中的一種或多種。更具體地,步驟S130的詳細(xì)流程如圖4所示。
步驟S132,選擇與容器格式對(duì)應(yīng)的分離器濾鏡。通過(guò)在步驟S114中解析獲 得的視頻文件的容器格式查找對(duì)應(yīng)的分離器濾鏡。本實(shí)施方式中,分離器濾鏡 的選擇不依賴于各分離器濾鏡自己所定義的Merit值,而是將某一容器格式能使 用的分離器濾鏡根據(jù)其兼容性等性能賦予優(yōu)先級(jí)(如圖5所示),在分離該容器 格式(例如容器格式為A)的視頻文件的過(guò)程中優(yōu)先采用優(yōu)先級(jí)高(例如優(yōu)先 級(jí)為1)的分離器濾鏡(例如分離器濾鏡A1)。對(duì)于目前常用的容器格式和分離 器濾鏡,舉例如下容器格式AVI優(yōu)先選用GabestAVI Splitter;容器格式MEPG-TS/PS優(yōu)先選用CyberLink MPEG-2 Demuxer;容器格式MKV優(yōu)先選用Haali Media Splitter 。
步驟S133,判斷視頻文件的分辨率或碼率是否達(dá)到預(yù)定分辨率或碼率。如 上所述,當(dāng)視頻畫面分辨率較小或者^(guò)L頻碼率IK氐時(shí),全部解碼流程由CPU來(lái) 承擔(dān)亦可輕松完成,啟用硬件加速對(duì)減少CPU的占用率并不明顯,反而會(huì)造成 負(fù)面的影響。因此,如果視頻文件的分辨率或碼率未達(dá)到預(yù)定分辨率或碼率, 則直接選擇與編碼才各式對(duì)應(yīng)的解碼器濾4竟(步驟S135 ),不需要考慮該解碼器濾 鏡是否支持硬件加速,選擇的原則類似于分離器濾鏡的選擇;如果達(dá)到預(yù)定分 辨率或碼率,則進(jìn)入步驟S135。例如,對(duì)S見(jiàn)頻分辨率達(dá)到1280x720以上、#見(jiàn)頻 碼率達(dá)到20Mbps以上的影片,可以考慮開啟硬件加速。上述分辨率和碼率可以 視CPU的處理能力、當(dāng)前系統(tǒng)運(yùn)行的任務(wù)數(shù)所占CPU資源的比率進(jìn)行自動(dòng)或手 動(dòng)調(diào)節(jié)設(shè)置。
步驟S134,判斷編碼格式是否與硬件加速能力信息對(duì)應(yīng)。即根據(jù)硬件加速 能力信息判斷硬件系統(tǒng)能否對(duì)當(dāng)前編碼格式的視頻文件的播放執(zhí)行硬件加速。 如果不對(duì)應(yīng),選擇與編碼格式對(duì)應(yīng)的解碼器濾鏡(步驟S135)。
如果硬件系統(tǒng)信息表明GPU的硬件加速能力可以對(duì)當(dāng)前^見(jiàn)頻編碼4各式的—見(jiàn) 頻文件進(jìn)行硬解碼,則選擇與編碼格式對(duì)應(yīng)且支持硬件加速的解碼器濾鏡(步 驟S136)。本實(shí)施方式中,解碼器濾鏡的選擇不依賴于各解碼器濾鏡自己所定義 的Merit值,而是將某一編碼格式能使用的解碼器濾鏡根據(jù)其兼容性等性能賦予 優(yōu)先級(jí)(如圖6所示),在解碼該編碼格式(例如編碼格式為D )的纟見(jiàn)頻文件的過(guò)程中優(yōu)先采用支持硬件加速且優(yōu)先級(jí)高(例如優(yōu)先級(jí)為1 )的解碼器濾鏡(例
如解碼器濾鏡Dl )。對(duì)于目前常用的編碼格式和解碼器濾鏡,舉例如下在GPU 支持H.264硬解碼的情況下,編碼格式H.264優(yōu)先選用CyberLink H.264 Video Decoder;在GPU支持VC-1硬解碼的情況下,編碼格式VC-1優(yōu)先選用CyberLink VC-1 Video Decoder;在GPU支持MPEG-2硬解碼的情況下,編碼格式MPEG-2 優(yōu)先選用NVIDIA MPEG-2 Video Decoder。
步驟S137,依次根據(jù)操作系統(tǒng)的類型、是否啟用了硬件加速、視頻文件的 顯示方式或字幕存在方式選擇渲染器濾鏡。由于渲染器作為圖像的輸出設(shè)備, 在很大程度上決定了視頻回放的實(shí)際效果。渲染器的選擇首先要與操作系統(tǒng)兼 容;然后需要考慮視頻解碼是否啟用了硬件加速,如果啟用了硬件加速,則需 要選擇支持硬件加速的渲染器濾鏡;最后需要考慮視頻文件的顯示方式或字幕 的存在方式。通過(guò)上面的順序來(lái)選擇渲染器濾鏡,相對(duì)于僅依賴渲染器濾鏡優(yōu) 先級(jí)來(lái)定義使用順序,可以實(shí)現(xiàn)良好的兼容性并達(dá)成較佳的視頻回放效果。例 如在Windows Vista的操作系統(tǒng)下,采用了硬件加速,顯示方式為逐行掃描,字 幕為外掛字幕的情況下可以選用Enhanced Video Renderer (C/A)渲染器濾4竟。
上述步驟S132到S137中,步驟S133可以省略,即可以不考慮視頻的分辨 率或碼率,直接進(jìn)入步驟S134。
如圖7所示,還提供了一種視頻播放器,包括存儲(chǔ)模塊710、文件信息解析 模塊720、硬件檢測(cè)模塊730、濾鏡管理模塊740及濾鏡連接策略模塊750。
存儲(chǔ)模塊710用于存儲(chǔ)視頻文件,存儲(chǔ)模塊710可以是磁盤、閃存等。存儲(chǔ) 模塊710也可以由網(wǎng)絡(luò)模塊等輸入視頻文件的模塊所替代。
文件信息解析模塊720與存儲(chǔ)模塊710相連,用于讀取視頻文件信息。文件 信息解析模塊720通過(guò)解析視頻文件的屬性,獲得視頻文件的容器格式、視頻 編碼^各式、分辨率、碼率、字幕存在方式、顯示方式等。
硬件檢測(cè)模塊730用于獲取硬件系統(tǒng)信息。硬件檢測(cè)模塊730通過(guò)讀取硬件 配置獲取GPU的DXVA能力。
濾鏡管理模塊740用于存儲(chǔ)視頻文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)
13系。根據(jù)這種對(duì)應(yīng)關(guān)系,在確定視頻文件信息及硬件系統(tǒng)信息后,就可以確定 最合適的濾鏡渲染圖表。經(jīng)驗(yàn)表明,建立高清影片的渲染圖表時(shí),需要考慮濾 鏡之間的配合問(wèn)題,否則雖然能成功建立渲染圖表,然而由于各個(gè)廠家解碼器 之間的兼容性問(wèn)題會(huì)造成高清影片播放時(shí)的音視頻不同步現(xiàn)象或硬件加速失 敗。采用濾鏡管理模塊740來(lái)管理濾鏡,可以有效消除這這不匹配或兼容性欠
佳的問(wèn)題。另外,濾鏡管理模塊740還可以自動(dòng)升級(jí)這種對(duì)應(yīng)關(guān)系,及時(shí)獲得
視頻文件最合適的濾鏡類型。在計(jì)算機(jī)系統(tǒng)中不存在這種濾鏡時(shí),還可以通過(guò)
后臺(tái)自動(dòng)下載或者提示用戶去下載。優(yōu)選的實(shí)施方式中,濾鏡管理模塊740是 基于開放式xml文件的,相對(duì)于基于系統(tǒng)注冊(cè)表方式的需要借助操作系統(tǒng)(例 如windows )管理濾鏡的濾鏡管理模塊,基于開放式xml文件的濾鏡管理模塊740 可以不依賴于操作系統(tǒng)。
更具體地,濾鏡管理模塊740包括分離器濾鏡管理單元742、解碼器濾鏡管 理單元744及渲染器濾鏡管理單元746。分離器濾鏡管理單元7"用于存儲(chǔ)視頻 文件的容器格式對(duì)應(yīng)的分離器濾鏡優(yōu)先級(jí)順序,例如如圖5所示,將某一容器 格式能使用的分離器濾鏡根據(jù)其兼容性等性能賦予優(yōu)先級(jí)。解碼器濾鏡管理單 元744用于存儲(chǔ)視頻文件的編碼格式對(duì)應(yīng)的解碼器濾鏡分別在是否支持硬件加 速的條件下的優(yōu)先級(jí)順序,例如如圖6所示。渲染器濾鏡管理單元746依次根 據(jù)操作系統(tǒng)的類型、是否啟用了硬件加速、視頻文件的顯示方式或字幕存在方 式選擇渲染器濾鏡。
濾鏡連接策略模塊750分別與所述文件信息解析模塊720、硬件檢測(cè)模塊 730、濾鏡管理模塊740相連以獲取視頻文件信息、硬件系統(tǒng)信息、視頻文件信 息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系,并根據(jù)該對(duì)應(yīng)關(guān)系選擇濾鏡。濾鏡連接 策略模塊750用于根據(jù)硬件系統(tǒng)信息判斷硬件系統(tǒng)能否對(duì)視頻文件的播放執(zhí)行 硬件加速,如果能執(zhí)行硬件加速,則選擇支持硬件加速的條件下的優(yōu)先級(jí)高的 解碼器濾鏡并啟用硬件加速。
進(jìn)一步地,濾鏡連接策略模塊750還用于根據(jù)視頻文件信息中的分辨率或碼
分辨率或碼率未達(dá)到預(yù)定分辨率或碼率,則不啟用硬件加速,如此可以避免在低分辨率或碼率的情況下啟用硬件加速對(duì)減少CPU的占用率并不明顯,反而會(huì) 造成負(fù)面影響的情形。利用上述特點(diǎn),可以對(duì)當(dāng)前播放器打開的媒體文件進(jìn)行
分類,并識(shí)別出高清影片,從而改善其渲染過(guò)程,提高效率。由于MPEG-2/H.264/VC-1已經(jīng)是廣泛使用的視頻編碼算法,故當(dāng)顯卡支持硬件加速的時(shí)候 對(duì)任意以上述格式編碼的影片都是可以開啟硬件加速的。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì), 但并不能因此而理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域 的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和 改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附 權(quán)利要求為準(zhǔn)。
權(quán)利要求
1、一種視頻播放方法,其特征在于,包括以下步驟讀取視頻文件信息;獲取硬件系統(tǒng)信息;根據(jù)所述視頻文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系選擇濾鏡。
2、 根據(jù)權(quán)利要求1所述的視頻播放方法,其特征在于,所述讀取纟見(jiàn)頻文件 信息的步驟包括如下步驟中的一種以上解析視頻文件的分辨率或碼率; 解析容器格式;解析視頻編碼一各式; 讀取字幕存在方式、顯示方式。
3、 根據(jù)權(quán)利要求2所述的視頻播放方法,其特征在于,所述獲取硬件系統(tǒng) 信息的步驟包括如下步驟判斷硬件系統(tǒng)是否支持硬件加速; 如果支持硬件加速則獲取硬件加速能力信息。
4、 根據(jù)權(quán)利要求2所述的視頻播放方法,其特征在于,所述根據(jù)所述視頻 文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系選擇濾鏡的步驟包括選擇與所述容 器格式對(duì)應(yīng)的分離器濾鏡的步驟。
5、 根據(jù)權(quán)利要求3所述的視頻播放方法,其特征在于,所述根據(jù)所述視頻 文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系選擇濾鏡的步驟包括判斷所述編碼4各式是否與硬件加速能力信息對(duì)應(yīng); 如果不對(duì)應(yīng),選擇與編碼才各式對(duì)應(yīng)的解碼器濾鏡; 如果對(duì)應(yīng),則選擇與編碼格式對(duì)應(yīng)且支持硬件加速的解碼器濾鏡。
6、 根據(jù)權(quán)利要求5所述的視頻播放方法,其特征在于,在判斷所述編碼格 式是否與硬件加速能力信息對(duì)應(yīng)之前還包括判斷所述^L頻文件的分辨率或碼率 是否達(dá)到預(yù)定分辨率或碼率的步驟;如果未達(dá)到所述預(yù)定分辨率或碼率,則直接進(jìn)行所述選擇與所述編碼格式對(duì) 應(yīng)的解碼器濾鏡的步驟;如果達(dá)到所述預(yù)定分辨率或碼率,則進(jìn)行所述判斷所述編碼才各式是否與硬件 加速能力信息對(duì)應(yīng)的步驟。
7、 根據(jù)權(quán)利要求5所述的視頻播放方法,其特征在于,所述根據(jù)所述視頻 文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系選擇濾鏡的步驟還包括依次根據(jù) 操作系統(tǒng)的類型、是否啟用了硬件加速、視頻文件的顯示方式或字幕存在方式 選擇渲染器濾鏡。
8、 一種視頻播放器,其特征在于,包括 文件信息解析模塊,用于讀取視頻文件信息; 硬件檢測(cè)模塊,用于獲取硬件系統(tǒng)信息;濾鏡管理模塊,用于存儲(chǔ)視頻文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系; 濾鏡連接策略模塊,分別與所述文件信息解析模塊、硬件檢測(cè)模塊、濾鏡管理模塊相連以獲取所述視頻文件信息、硬件系統(tǒng)信息、視頻文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系,并根據(jù)所述對(duì)應(yīng)關(guān)系選擇濾鏡。
9、 根據(jù)權(quán)利要求8所述的視頻播放器,其特征在于,所述濾鏡管理模塊包 括分離器濾鏡管理單元,所述分離器濾鏡管理單元用于存儲(chǔ)視頻文件的容器格 式對(duì)應(yīng)的分離器濾鏡優(yōu)先級(jí)順序。
10、 根據(jù)權(quán)利要求8所述的視頻播放器,其特征在于,所述濾鏡管理模塊包 括解碼器濾鏡管理單元,所述解碼器濾鏡管理單元用于存儲(chǔ)視頻文件的編碼格 式對(duì)應(yīng)的解碼器濾鏡分別在是否支持硬件加速的條件下的優(yōu)先級(jí)順序。
11、 根據(jù)權(quán)利要求IO所述的視頻播放器,其特征在于,所述濾鏡連接策略 模塊用于根據(jù)所述硬件系統(tǒng)信息判斷硬件系統(tǒng)能否對(duì)^L頻文件的播放執(zhí)行硬件 加速,如果能執(zhí)行硬件加速,則選擇支持硬件加速的條件下的優(yōu)先級(jí)高的解碼 器濾鏡并啟用硬件加速。
12、 根據(jù)權(quán)利要求IO所述的視頻播放器,其特征在于,所述濾鏡連接策略 模塊還用于根據(jù)所述視頻文件信息中的分辨率或碼率判斷所述視頻文件的分辨 率或碼率是否達(dá)到預(yù)定分辨率或碼率,如果所述^L頻文件的分辨率或碼率未達(dá) 到預(yù)定分辨率或碼率,則不啟用硬件加速。
13、 根據(jù)權(quán)利要求8所述的視頻播放器,其特征在于,所述濾鏡管理模塊包括渲染器濾鏡管理單元,所述渲染器濾鏡管理單元用于依次根據(jù)操作系統(tǒng)的類 型、是否啟用了硬件加速、視頻文件的顯示方式或字幕存在方式選擇渲染器濾鏡。
14、根據(jù)權(quán)利要求8所述的視頻播放器,其特征在于,所述濾鏡管理模塊是 基于開放式xml文件的。
全文摘要
一種視頻播放方法,包括以下步驟讀取視頻文件信息;獲取硬件系統(tǒng)信息;根據(jù)所述視頻文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系選擇濾鏡。根據(jù)視頻文件信息及硬件系統(tǒng)信息與濾鏡的對(duì)應(yīng)關(guān)系選擇濾鏡,在硬件系統(tǒng)能夠?qū)σ曨l文件的播放實(shí)現(xiàn)硬件加速時(shí),選擇支持硬件加速的濾鏡,可以有效降低CPU的占用率。此外,還提供了一種視頻播放器。
文檔編號(hào)G09G5/36GK101577110SQ20091003986
公開日2009年11月11日 申請(qǐng)日期2009年5月31日 優(yōu)先權(quán)日2009年5月31日
發(fā)明者李大龍 申請(qǐng)人:騰訊科技(深圳)有限公司