專利名稱:一種流媒體播放方法及播放設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及流媒體播放技術(shù)領(lǐng)域,更具體地說,涉及一種流媒體播放方法及播放設(shè)備。
背景技術(shù):
DirectX是由微軟公司開發(fā)的用途廣泛的應(yīng)用程序編程接口(API),它包含有 Direct Graphics(Direct 3D+Direct Draw)>Direct Input、Direct Play、Direct Sound、 Direct Show、Direct Setup, Direct Media Objects 等多個組件,它提供了一整套的多媒體接口方案。DirectX而今已發(fā)展成為對整個多媒體系統(tǒng)的各個方面都有決定性影響的接Microsoft DirectDraw支持快速訪問計算機視頻適配器的加速硬件功能。它支持在所有視頻適配器上顯示圖形的標(biāo)準(zhǔn)方法,并且使用加速驅(qū)動程序時可以更快更直接地訪問。Microsoft DirectX 9. 0c DirectSiow為流媒體播放提供了功能完善的框架,但盡管框架這么完善,目前市面上的播放器包括Media Player、暴風(fēng)影映、kmplay等等都無法實現(xiàn) 4k (4096 X 2160)超高分辯率、30幀/秒流媒體的流暢播放,主要有如下兩方面瓶頸使得播放器無法實現(xiàn)超高分辨率流媒體的播放
一、CPU解壓速度跟不上播放速度
由于目前CPU發(fā)展到多核CPU,所以解決CPU解壓速度的問題一般都采用多核同時解壓,從而使得CPU解壓速度跟得上播放速度的,但這樣就會產(chǎn)生一個新的問題對于巨幕電影的播放器,4k分辨率的視頻幀需要整幀輸出,才不至于需要將輸出視頻在巨幕上實現(xiàn)拼接,否則巨幕播放失去了根本意義。而普通的播放器是將整幀解壓后整幀輸出,這導(dǎo)致操作系統(tǒng)無法將整幀解壓負擔(dān)平均分配到CPU內(nèi)部多核同時處理,結(jié)果造成CPU內(nèi)部某個內(nèi)核超負荷運行而其他內(nèi)核無負擔(dān)或很少負擔(dān)的情況,CPU內(nèi)部只要有一個內(nèi)核超負荷運行就會造成播放器丟幀,從而使得播放不流暢;
二、計算機硬盤讀速度跟不上播放速度
解決計算機硬盤讀速度跟不上播放速度的問題,一般采用壓縮率高的壓縮算法,例如 h. 264或MPEG4等,但采用這種方法會碰到新的問題1)視頻幀有點失真,視頻質(zhì)量達不到最佳效果;2)由于壓縮率太高,造成播放時解壓費時,使CPU解壓速度跟不上。如果用當(dāng)今數(shù)字電影界所倡導(dǎo)的MJPEG2000標(biāo)準(zhǔn)進行壓縮,則視頻質(zhì)量可以,并且壓縮率也適中,但由于用了小波變換解壓算法,解壓很費時,需專用的解壓芯片支持,純軟件無法解決CPU解壓速度瓶頸問題。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的上述對于超高分辨率的流媒體, CPU解壓速度和硬盤讀速度都跟不上播放速度的瓶頸問題,提供一種流媒體播放方法,能提高CPU解壓速度,彌補硬盤讀速度偶爾跟不上播放速度的缺陷。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是構(gòu)造一種流媒體播放方法,包括 預(yù)先將流媒體的視頻幀切分成多個小塊幀,并為每個小塊幀分配一幀號,所述小塊幀
的幀號包括原視頻幀的幀序標(biāo)識及該小塊幀在原視頻幀里的位置標(biāo)識,然后分別將該多個小塊幀進行壓縮,并將壓縮的多個小塊幀依序存儲在硬盤同一文件中;
多核CPU多線程根據(jù)每個小塊幀的幀序標(biāo)識和位置標(biāo)識將多個小塊幀解壓到對應(yīng)視頻幀的對應(yīng)位置,以合成待播放的視頻幀。在本發(fā)明所述的流媒體播放方法中,采用TrueMotion壓縮方法對該多個小塊幀進行壓縮。在本發(fā)明所述的流媒體播放方法中,將流媒體的視頻幀切分成3個小塊幀。在本發(fā)明所述的流媒體播放方法中,所述幀序標(biāo)識是所對應(yīng)的原視頻幀的序號的
整數(shù)倍。本發(fā)明還構(gòu)造一種流媒體播放設(shè)備,包括
切分模塊,用于將流媒體的視頻幀切分成多個小塊幀,并為每個小塊幀分配一幀號,所述小塊幀的幀號包括原視頻幀的幀序標(biāo)識及在該小塊幀在原視頻幀里的位置標(biāo)識; 壓縮模塊,用于分別將該多個小塊幀進行壓縮; 存儲模塊,用于分別將壓縮的多個小塊幀存儲在硬盤中; 讀取模塊,用于讀取存儲在硬盤中的多個壓縮的小塊幀;
解壓合并模塊,用于采用多核CPU多線程根據(jù)每個小塊幀的幀序標(biāo)識和位置標(biāo)識將多個小塊幀解壓到對應(yīng)視頻幀的對應(yīng)位置,以合成待播放的視頻幀。在本發(fā)明所述的流媒體播放設(shè)備中,采用TrueMotion壓縮方法對該多個小塊幀進行壓縮。在本發(fā)明所述的流媒體播放設(shè)備中,所述多個小塊幀為3個小塊幀。在本發(fā)明所述的流媒體播放設(shè)備中,采用大緩沖區(qū)技術(shù)讀取硬盤多個小塊幀。在本發(fā)明所述的流媒體播放設(shè)備中,所述幀序標(biāo)識是對應(yīng)的原視頻幀的序號的整數(shù)倍。實施本發(fā)明的技術(shù)方案,具有以下有益效果
1.由于預(yù)先將視頻幀切分成多個小塊幀,并為每個小塊幀分配一幀號,使所編的小塊幀號包括原視頻幀的幀序標(biāo)識及在原視頻幀里的位置標(biāo)識,然后對每個小塊幀進行壓縮和存儲。在播放流媒體時,多核CPU多線程根據(jù)每個小塊幀的位置標(biāo)識(幀號)將多個小塊幀解壓到對應(yīng)視頻幀的對應(yīng)位置,以合成待播放的視頻幀。同時,由于解壓和合并多個小塊幀是同時進行的,所以避免了小塊幀數(shù)據(jù)塊的拷貝,大幅減輕了 CPU的負擔(dān),從而提高了 CPU 的解壓速度,并且避免了畫面的抖動,保證了高分辨率的視頻流的流暢播放。另外,由于合并多個小塊幀是CPU根據(jù)位置標(biāo)識(幀號)以軟件方式來實現(xiàn)的,所以不需要在巨幕上實現(xiàn)視頻拼接;
2.對多個小塊幀壓縮采用TrueMotion壓縮方法,既保證了視頻質(zhì)量,又使得壓縮具有適中的壓縮率。3.由于采用了大緩沖區(qū)技術(shù)讀硬盤,解決了硬盤對小塊幀讀取速度不均勻缺陷, 保證了高分辨率視頻流的流暢播放。
下面將結(jié)合附圖及實施例對本發(fā)明作進一步說明,附圖中 圖1是本發(fā)明流媒體播放方法實施例一的流程圖2是本發(fā)明流媒體播放設(shè)備實施例一的邏輯圖。
具體實施例方式如圖1所示,在本發(fā)明的流媒體播放方法實施例一的流程圖中,該流媒體播放方法包括
步驟S100.預(yù)先將流媒體的視頻幀切分成多個小塊幀,并為每個小塊幀分配一幀號, 所述小塊幀的幀號包括原視頻幀的幀序標(biāo)識及該小塊幀在原視頻幀里的位置標(biāo)識,然后分別將該多個小塊幀進行壓縮,并將壓縮的多個小塊幀依序存儲在硬盤同一文件中;
步驟S200.多核CPU多線程根據(jù)每個小塊幀的幀序標(biāo)識和位置標(biāo)識將多個小塊幀解壓到對應(yīng)視頻幀的對應(yīng)位置,以合成待播放的視頻幀。在該步驟中,由于將同一視頻幀的幾個小塊幀分別用不同的線程進行解壓,也就是將一個視頻幀的整幀的解壓負擔(dān)平均分配給 CPU內(nèi)部的各內(nèi)核。實施該實施例的技術(shù)方案,由于預(yù)先將視頻幀切分成多個小塊幀,并為每個小塊幀分配一幀號,使所編的小塊幀號包括原視頻幀的幀序標(biāo)識及在原視頻幀里的位置標(biāo)識, 然后對每個小塊幀進行壓縮和存儲。在播放流媒體時,多核CPU根據(jù)每個小塊幀的位置標(biāo)識(幀號)將多個小塊幀解壓到對應(yīng)視頻幀的對應(yīng)位置,以合成待播放的視頻幀。由于解壓和合并多個小塊幀是同時進行的,所以避免了小塊幀數(shù)據(jù)塊的拷貝,大幅減輕了 CPU的負擔(dān),從而提高了 CPU的解壓速度,且避免了畫面的抖動,保證了高分辨率的視頻流的流暢播放。另外,由于合并多個小塊幀是CPU根據(jù)位置標(biāo)識(幀號)以軟件方式來實現(xiàn)的,所以不需要在巨幕上實現(xiàn)視頻拼接。優(yōu)選地,對該多個小塊幀進行壓縮時,采用TrueMotion (真實的動感)壓縮方法。 "TrueMotion是Sixense公司在2008年開發(fā)出來的用于3D動感電影的壓縮方法。正因為運用了 3D效果處理,才使得壓縮成的視頻質(zhì)量非常好,但壓縮率并不高,而且每幀的壓縮率大不一樣,因此這種壓縮方法使得硬盤讀取幀的“讀幀率”很不均勻,致使播放時,硬盤讀幀速度有時會大于播放速度,有時可能又會小于播放速度,所以必須同時采用大緩沖區(qū)技術(shù)來緩沖視頻幀的讀取,以適配播放速度。優(yōu)選地,將流媒體的視頻幀切分成3個小塊幀。優(yōu)選地,所述幀序標(biāo)識是對應(yīng)的原視頻幀的序號的整數(shù)倍。例如,設(shè)某視頻幀的原序號是n,將該視頻幀切分成3個小塊,則該幀的三小塊幀序號就是3n、3n+l、3n+2,此小塊幀序號既標(biāo)識了該小塊幀屬于哪一視頻幀(第η幀),又標(biāo)識了該小塊幀在視頻幀中的位置 (第O小塊、第1小塊第、2小塊)。圖2是本發(fā)明流媒體播放設(shè)備實施例一的邏輯圖,該流媒體播放設(shè)備包括依次連接的切分模塊11、壓縮模塊12、存儲模塊13、讀取模塊14和解壓合并模塊15。其中,切分模塊11用于將流媒體的視頻幀切分成多個小塊幀,并為每個小塊幀分配一幀號,,所述小塊幀的幀號包括原視頻幀的幀序標(biāo)識及在該小塊幀在原視頻幀里的位置標(biāo)識;壓縮模塊 12用于分別將該多個小塊幀進行壓縮;存儲模塊13用于分別將壓縮的多個小塊幀存儲在硬盤中;讀取模塊14用于讀取存儲在硬盤中的多個壓縮的小塊幀;解壓合并模塊15用于采用多核CPU多線程根據(jù)每個小塊幀的幀序標(biāo)識和位置標(biāo)識將多個小塊幀解壓到對應(yīng)視頻幀的對應(yīng)位置,以合成待播放的視頻幀。優(yōu)選地,采用TrueMotion壓縮方法對該多個小塊幀進行壓縮。優(yōu)選地,多個小塊幀為3個小塊幀。優(yōu)選地,采用大緩沖區(qū)技術(shù)讀取硬盤小塊幀。優(yōu)選地,所述幀序標(biāo)識是對應(yīng)的原視頻幀的序號的整數(shù)倍。本發(fā)明的流媒體播放方法和播放設(shè)備不僅僅適用于4k分辨率的視頻,隨著計算機硬件技術(shù)的發(fā)展,還可適用于池、化k、3^等分辨率的視頻。以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。
權(quán)利要求
1.一種流媒體播放方法,其特征在于,包括預(yù)先將流媒體的視頻幀切分成多個小塊幀,并為每個小塊幀分配一幀號,所述小塊幀的幀號包括原視頻幀的幀序標(biāo)識及該小塊幀在原視頻幀里的位置標(biāo)識,然后分別將該多個小塊幀進行壓縮,并將壓縮的多個小塊幀依序存儲在硬盤同一文件中;多核CPU多線程根據(jù)每個小塊幀的幀序標(biāo)識和位置標(biāo)識將多個小塊幀解壓到對應(yīng)視頻幀的對應(yīng)位置,以合成待播放的視頻幀。
2.根據(jù)權(quán)利要求1所述的流媒體播放方法,其特征在于,采用TrueMotion壓縮方法對該多個小塊幀進行壓縮。
3.根據(jù)權(quán)利要求1所述的流媒體播放方法,其特征在于,將流媒體的視頻幀切分成3個小塊幀。
4.根據(jù)權(quán)利要求1所述的流媒體播放方法,其特征在于,所述幀序標(biāo)識是所對應(yīng)的原視頻幀的序號的整數(shù)倍。
5.一種流媒體播放設(shè)備,其特征在于,包括切分模塊,用于將流媒體的視頻幀切分成多個小塊幀,并為每個小塊幀分配一幀號,所述小塊幀的幀號包括原視頻幀的幀序標(biāo)識及在該小塊幀在原視頻幀里的位置標(biāo)識; 壓縮模塊,用于分別將該多個小塊幀進行壓縮; 存儲模塊,用于分別將壓縮的多個小塊幀存儲在硬盤中; 讀取模塊,用于讀取存儲在硬盤中的多個壓縮的小塊幀;解壓合并模塊,用于采用多核CPU多線程根據(jù)每個小塊幀的幀序標(biāo)識和位置標(biāo)識將多個小塊幀解壓到對應(yīng)視頻幀的對應(yīng)位置,以合成待播放的視頻幀。
6.根據(jù)權(quán)利要求5所述的流媒體播放設(shè)備,其特征在于,采用TrueMotion壓縮方法對該多個小塊幀進行壓縮。
7.根據(jù)權(quán)利要求5所述的流媒體播放設(shè)備,其特征在于,所述多個小塊幀為3個小塊幀。
8.根據(jù)權(quán)利要求5所述的流媒體播放設(shè)備,其特征在于,采用大緩沖區(qū)技術(shù)讀取硬盤多個小塊幀。
9.根據(jù)權(quán)利要求5所述的流媒體播放設(shè)備,其特征在于,所述幀序標(biāo)識是對應(yīng)的原視頻幀的序號的整數(shù)倍。
全文摘要
本發(fā)明涉及一種流媒體播放方法和播放設(shè)備,該播放方法包括預(yù)先將流媒體的視頻幀切分成多個小塊幀,并為每個小塊幀分配一幀號,使所編的小塊幀號包括原視頻幀的幀序標(biāo)識及在原視頻幀里的位置標(biāo)識,然后分別將該多個小塊幀進行壓縮,并將壓縮的多個小塊幀依序存儲在硬盤同一文件中;多核CPU多線程根據(jù)每個小塊幀的原視頻幀的幀序標(biāo)識和位置標(biāo)識將多個小塊幀解壓到對應(yīng)視頻幀的對應(yīng)位置,以合成待播放的視頻幀。該方法可大幅提高CPU的解壓速度,并且可以避免畫面的抖動。
文檔編號H04L29/06GK102547268SQ201010615908
公開日2012年7月4日 申請日期2010年12月30日 優(yōu)先權(quán)日2010年12月30日
發(fā)明者丁亮, 劉道強, 徐海波, 戎志剛, 李明 申請人:深圳華強數(shù)碼電影有限公司