亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

在渲染器中利用HOOK實現(xiàn)彈幕的方法及裝置與流程

文檔序號:12379252閱讀:294來源:國知局
在渲染器中利用HOOK實現(xiàn)彈幕的方法及裝置與流程

本發(fā)明涉及在視頻中播放彈幕的技術(shù)領(lǐng)域,具體地說,是涉及一種在渲染器中利用HOOK實現(xiàn)彈幕的方法及裝置。



背景技術(shù):

彈幕,在播放視頻畫面中以字幕形式顯示評論的現(xiàn)象稱為彈幕。用戶可以通過彈幕的形式邊看視頻邊與其它用戶進行彈幕討論溝通。現(xiàn)有的視頻彈幕都是通過在線播放的形式,在線播放視頻時從各個用戶端收集彈幕后在視頻對應(yīng)的時間段上進行展現(xiàn)。

現(xiàn)有技術(shù)中是通過在視頻畫面上設(shè)置彈幕浮窗的形式實現(xiàn)對彈幕內(nèi)容的播放,具體地說現(xiàn)有的浮窗顯示彈幕是通過在視頻播放窗口上層創(chuàng)建一個窗口,通過向窗口內(nèi)繪制彈幕信息,然后,通過窗口間alpha透明合成,實現(xiàn)彈幕信息展現(xiàn)在視頻區(qū)域,但是在實際的彈幕視頻播放過程中,會因為網(wǎng)速、用戶硬件條件等問題造成視頻播放卡頓,而彈幕還在繼續(xù)播放導(dǎo)致的視頻畫面與彈幕脫離的問題。

發(fā)明名稱:彈幕顯示方法及裝置,申請?zhí)枺?01510481649.4,在顯示在線視頻時,獲取在線視頻的彈幕信息;獲取當(dāng)前的彈幕顯示模式,彈幕顯示模式包括:曲線彈幕顯示模式或三維彈幕顯示模式;將彈幕信息按照彈幕顯示模式疊加在在線視頻上進行顯示;解決了彈幕顯示方式的形式單一,僅能夠?qū)椖恍畔葱衼磉M行滾動顯示的問題。

發(fā)明名稱:彈幕顯示方法及裝置,申請?zhí)枺?01510920994.3,該申請公開了:接收彈幕信息;確定用戶對所述彈幕信息的目標(biāo)喜好程度值;根據(jù)所述目標(biāo)喜好程度值和預(yù)設(shè)的與喜好程度值對應(yīng)的彈幕顯示方式,確定所述彈幕信息的目標(biāo)彈幕顯示方式;按照所述目標(biāo)彈幕顯示方式,顯示所述彈幕信息。本公開可以根據(jù)用戶的喜好將彈幕信息采用用戶設(shè)定的顯示方式進行顯示,從而提高用戶獲取感興趣的彈幕信息的可能性。

發(fā)明名稱:一種視頻彈幕顯示方法及裝置,申請?zhí)枺?01610009073.6,該申請公開了接收視頻彈幕停止移動指令;根據(jù)所述視頻彈幕停止移動指令停止移動當(dāng)前視頻彈幕。該方法使得用戶在觀看視頻彈幕時,若遇到感興趣的彈幕時,可以發(fā)出視頻彈幕停止移動指令,此時視頻彈幕將會停止移動,用戶即可觀看感興趣的彈幕,從而避免了觀眾還未看清楚感興趣的彈幕時,彈幕已經(jīng)消失在屏幕上的情況,達到提高用戶觀看視頻體驗感的目的。

但是上述現(xiàn)有技術(shù)中,存在彈幕視頻播放時會出現(xiàn)視頻畫面與彈幕相脫離的問題,窗口實現(xiàn)的彈幕形式,由于窗口和彈幕是兩個獨立的窗口,所以在窗口改變位置、大小以及刷新時,無法與彈幕的窗口保持同步,窗口間的消息比較慢,會造成窗口的懸浮感,以及與播放內(nèi)容的同步也需要分別處理,容易出現(xiàn)于視頻內(nèi)容的不一致,特別視頻播放比較卡的時候,會出現(xiàn)不同步。而且,窗口間疊加合成的效率要低于直接渲染器數(shù)據(jù)的合成,有助于提升效率。



技術(shù)實現(xiàn)要素:

本發(fā)明所要解決的技術(shù)問題是提供一種在渲染器中利用HOOK實現(xiàn)彈幕的方法和裝置,通過HOOK技術(shù)攔截本應(yīng)展現(xiàn)在浮層視窗中的彈幕內(nèi)容,再將其展開嵌合到視頻畫面中,避免使用浮窗播放彈幕內(nèi)容造成視頻畫面與彈幕脫離的問題。

為解決上述技術(shù)問題,本發(fā)明提供了一種在渲染器中利用HOOK實現(xiàn)彈幕的方法,包括步驟:

播放線程播放視頻,獲取當(dāng)前視頻播放時的彈幕數(shù)據(jù);

利用HOOK渲染器將所述彈幕數(shù)據(jù)渲染成彈幕圖像,所述HOOK渲染器的渲染函數(shù),采用系統(tǒng)默認(rèn)的渲染器,在不改變渲染連路的情況下,直接植入所述彈幕數(shù)據(jù),渲染過程中根據(jù)當(dāng)前彈幕展示的位置,將所有當(dāng)前位置待展示的彈幕排布到一張內(nèi)存DC上,排列原則是任意兩條彈幕不能重合,優(yōu)先從頂行展示,如當(dāng)前行不能展示則展示下一行,確保不出現(xiàn)文字內(nèi)容重合,然后將所述內(nèi)存DC的數(shù)據(jù)拷貝給所述渲染器,所述渲染器將所述內(nèi)存DC的數(shù)據(jù)渲染成彈幕圖像;

利用HOOK技術(shù)將所述彈幕圖像嵌合到所述視頻的畫面中。

優(yōu)選地,所述彈幕數(shù)據(jù),包括時間信息。

優(yōu)選地,所述利用HOOK技術(shù)將所述彈幕圖像嵌合到所述視頻的畫面中,進一步為,利用HOOK技術(shù)將所述彈幕圖像嵌合到所述視頻播放的屏幕中自上而下1/3至1/2的位置。

優(yōu)選地,所述彈幕數(shù)據(jù),還包括:文字內(nèi)容、字體和顏色。

本申請還公開了在渲染器中利用HOOK實現(xiàn)彈幕的裝置,包括:彈幕數(shù)據(jù)獲取模塊、渲染模塊和嵌合模塊,其中,

所述彈幕數(shù)據(jù)獲取模塊,與所述渲染模塊相耦接,用于播放線程播放視頻,獲取當(dāng)前視頻播放時的彈幕數(shù)據(jù),發(fā)送至所述渲染模塊;

所述渲染模塊,分別與所述彈幕數(shù)據(jù)獲取模塊和嵌合模塊相耦接,用于接收所述彈幕數(shù)據(jù),利用HOOK渲染器將所述彈幕數(shù)據(jù)渲染成彈幕圖像,發(fā)送至所述嵌合模塊,所述HOOK渲染器的渲染函數(shù),采用系統(tǒng)默認(rèn)的渲染器,在不改變渲染連路的情況下,直接植入所述彈幕數(shù)據(jù),渲染過程中根據(jù)當(dāng)前彈幕展示的位置,將所有當(dāng)前位置待展示的彈幕排布到一張內(nèi)存DC上,排列原則是任意兩條彈幕不能重合,優(yōu)先從頂行展示,如果當(dāng)前行不能展示則展示下一行,確保不出現(xiàn)文字內(nèi)容重合,然后將所述內(nèi)存DC的數(shù)據(jù)拷貝給所述渲染器,所述渲染器將所述內(nèi)存DC的數(shù)據(jù)渲染成彈幕圖像;

所述嵌合模塊,與所述渲染模塊相耦接,用于接收所述彈幕圖像,利用HOOK技術(shù)將所述彈幕圖像嵌合到所述視頻的畫面中。

優(yōu)選地,所述彈幕數(shù)據(jù),包括時間信息。

優(yōu)選地,所述嵌合模塊,進一步地,利用HOOK技術(shù)將所述彈幕圖像嵌合到所述視頻播放的屏幕中自上而下1/3至1/2的位置。

優(yōu)選地,所述彈幕數(shù)據(jù),還包括文字內(nèi)容、字體和顏色。Hook渲染器的渲染函數(shù),采用系統(tǒng)默認(rèn)渲染器,在不改變渲染鏈路的情況下,直接植入彈幕數(shù)據(jù)。如果不使用hook技術(shù)則混合可使用渲染器無渲染模式,該模式下播放視頻的成功率及效率較低,或者采用浮層窗口實現(xiàn),則與視頻不能完全同步而且合成效率低。與視頻同步渲染,彈幕的時間信息可以與視頻的幀號綁定,所以展現(xiàn)時可以依據(jù)視頻的幀號進行更準(zhǔn)確的關(guān)聯(lián)。生成彈幕數(shù)據(jù)直接合并到視頻中,減少了窗口間的alpha合成時間,直接在內(nèi)存數(shù)據(jù)中完成疊加,效率更高。

與現(xiàn)有技術(shù)相比,本發(fā)明所述的在渲染器中利用HOOK實現(xiàn)彈幕的方法和裝置,達到了如下效果:

本發(fā)明通過HOOK技術(shù)將彈幕圖像嵌合到視頻幀畫面中進行播放,避免了使用浮窗播放彈幕內(nèi)容造成視頻畫面與彈幕脫離的問題。

本發(fā)明在視頻播放時,利用HOOK(鉤子函數(shù))視頻渲染的展現(xiàn)函數(shù),在視頻內(nèi)容展示時,直接將彈幕數(shù)據(jù)合成到視頻數(shù)據(jù)中,這樣彈幕即無縫成為視頻的一部分,跟隨視頻的幀率實時刷新,并能同步的視頻進行拖動以及縮放。由于,刷新的頻次完全與視頻同步,所以,彈幕可以精確到視頻的幀號的精度,并能完好的保持同步。

Hook技術(shù)直接使用系統(tǒng)的默認(rèn)渲染器,更加穩(wěn)定,減少使用無渲染渲染器的導(dǎo)致無法正常播放視頻的問題。與視頻緊密契合,跟隨視頻的刷新去更新展示,防止出現(xiàn)視頻卡頓但是彈幕卻在飛行的情況。直接合并數(shù)據(jù)到視頻數(shù)據(jù)中,減少后續(xù)窗口間透明疊加的消耗,提升效率。

附圖說明

此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:

圖1為實施例1的在渲染器中利用hook實現(xiàn)彈幕的方法流程圖;

圖2為實施例2的在渲染器中利用hook實現(xiàn)彈幕的裝置結(jié)構(gòu)圖;

圖3為實施例3的在渲染器中利用hook實現(xiàn)彈幕的方法流程圖。

具體實施方式

如在說明書及權(quán)利要求當(dāng)中使用了某些詞匯來指稱特定組件。本領(lǐng)域技術(shù)人員應(yīng)可理解,硬件制造商可能會用不同名詞來稱呼同一個組件。本說明書及權(quán)利要求并不以名稱的差異來作為區(qū)分組件的方式,而是以組件在功能上的差異來作為區(qū)分的準(zhǔn)則。如在通篇說明書及權(quán)利要求當(dāng)中所提及的“包含”為一開放式用語,故應(yīng)解釋成“包含但不限定于”。“大致”是指在可接收的誤差范圍內(nèi),本領(lǐng)域技術(shù)人員能夠在一定誤差范圍內(nèi)解決所述技術(shù)問題,基本達到所述技術(shù)效果。此外,“耦接”一詞在此包含任何直接及間接的電性耦接手段。因此,若文中描述一第一裝置耦接于一第二裝置,則代表所述第一裝置可直接電性耦接于所述第二裝置,或通過其他裝置或耦接手段間接地電性耦接至所述第二裝置。說明書后續(xù)描述為實施本發(fā)明的較佳實施方式,然所述描述乃以說明本發(fā)明的一般原則為目的,并非用以限定本發(fā)明的范圍。本發(fā)明的保護范圍當(dāng)視所附權(quán)利要求所界定者為準(zhǔn)。

以下結(jié)合附圖對本發(fā)明作進一步詳細(xì)說明,但不作為對本發(fā)明的限定。

實施例1:

結(jié)合圖1,本實施例提供了一種在渲染器中利用HOOK實現(xiàn)彈幕的方法,包括步驟:

步驟101:播放線程播放視頻,獲取當(dāng)前視頻播放時的彈幕數(shù)據(jù);

所述彈幕數(shù)據(jù),進一步包括:文字內(nèi)容、字體、顏色和時間信息。這里所述的彈幕是指:彈幕內(nèi)容是由觀看視頻的用戶觀看時發(fā)送生成,用戶發(fā)送的時間有當(dāng)時視頻所在位置的時間戳,用戶點擊發(fā)送,客戶端將用戶發(fā)送的內(nèi)容、字體、顏色和時間信息作為一條彈幕內(nèi)容上傳到服務(wù)端,其他用戶觀看時則會從服務(wù)端請求彈幕信息,并根據(jù)彈幕的時間在相應(yīng)的視頻位置展示。

步驟102:利用HOOK渲染器將所述彈幕數(shù)據(jù)渲染成彈幕圖像;

根據(jù)當(dāng)前彈幕展示的位置,將所有當(dāng)前位置待展示的彈幕排布到一張內(nèi)存DC上,排列原則是任意兩條彈幕不能重合,優(yōu)先從頂行展示,如果當(dāng)前行不能展示則展示下一行,確保不出現(xiàn)文字內(nèi)容重合,然后將所述內(nèi)存DC的數(shù)據(jù)拷貝給所述渲染器,所述渲染器將所述內(nèi)存DC的數(shù)據(jù)渲染成彈幕圖像。本申請中的DC指DrawCache繪制緩存)。

API HOOK技術(shù)是一種用于改變API執(zhí)行結(jié)果的技術(shù),Microsoft自身也在Windows操作系統(tǒng)里面使用了這個技術(shù)API HOOK技術(shù)是一種用于改變API執(zhí)行結(jié)果的技術(shù),Microsoft自身也在Windows操作系統(tǒng)里面使用了這個技術(shù),如Windows兼容模式等。所述HOOK渲染器的渲染函數(shù),采用系統(tǒng)默認(rèn)的渲染器,在不改變渲染連路的情況下,直接植入所述彈幕數(shù)據(jù)。采用HOOK相當(dāng)于在視頻渲染過程中增加一個合成彈幕內(nèi)容的步驟,把彈幕的數(shù)據(jù)直接合并到視頻數(shù)據(jù)中,再執(zhí)行視頻的渲染,就可以實現(xiàn)彈幕的展現(xiàn)。

步驟103:利用HOOK技術(shù)將所述彈幕圖像嵌合到所述視頻的畫面中。

這里利用HOOK技術(shù)將所述彈幕圖像嵌合到所述視頻播放的屏幕中自上而下1/3至1/2的位置。

每個彈幕都帶有發(fā)送的時間信息,根據(jù)用戶看影片所在的位置,決定展現(xiàn)相應(yīng)的彈幕內(nèi)容。彈幕限制在屏幕上半部分,最下幾行是會遮擋視頻,屏幕頂端不會遮住視頻的關(guān)鍵內(nèi)容,可以很好的利用視頻的上部黑邊。

實施例2:

結(jié)合圖2,本實施例提供了一種在渲染器中利用HOOK實現(xiàn)彈幕的裝置,包括:彈幕數(shù)據(jù)獲取模塊21、渲染模塊22和嵌合模塊23,其中,

所述彈幕數(shù)據(jù)獲取模塊21,與所述渲染模塊22相耦接,用于播放線程播放視頻,獲取當(dāng)前視頻播放時的彈幕數(shù)據(jù),發(fā)送至所述渲染模塊22;

所述渲染模塊22,分別與所述彈幕數(shù)據(jù)獲取模塊21和嵌合模塊23相耦接,用于接收所述彈幕數(shù)據(jù),利用HOOK渲染器將所述彈幕數(shù)據(jù)渲染成彈幕圖像,發(fā)送至所述嵌合模塊23;

所述嵌合模塊23,與所述渲染模塊22相耦接,用于接收所述彈幕圖像,利用HOOK技術(shù)將所述彈幕圖像嵌合到所述視頻的畫面中。

所述彈幕數(shù)據(jù),包括:文字內(nèi)容、字體、顏色和時間信息。

所述嵌合模塊23,利用HOOK技術(shù)將所述彈幕圖像嵌合到所述視頻播放的屏幕中自上而下1/3至1/2的位置。需要說明的是每個彈幕都帶有發(fā)送的時間信息,根據(jù)用戶看影片所在的位置,決定展現(xiàn)相應(yīng)的彈幕內(nèi)容。本申請中彈幕現(xiàn)在限制在屏幕上半部分,最下幾行是會遮擋視頻,屏幕頂端不會遮住視頻的關(guān)鍵內(nèi)容,可以很好的利用視頻的上部黑邊。

所述渲染模塊22,根據(jù)當(dāng)前彈幕展示的位置,將所有當(dāng)前位置待展示的彈幕排布到一張內(nèi)存DC上,排列原則是任意兩條彈幕不能重合,優(yōu)先從頂行展示,如果當(dāng)前行不能展示則展示下一行,確保不出現(xiàn)文字內(nèi)容重合,然后將所述內(nèi)存DC的數(shù)據(jù)拷貝給所述渲染器,所述渲染器將所述內(nèi)存DC的數(shù)據(jù)渲染成彈幕圖像。

所述HOOK渲染器的渲染函數(shù),采用系統(tǒng)默認(rèn)的渲染器,在不改變渲染連路的情況下,直接植入所述彈幕數(shù)據(jù)。如果不使用hook技術(shù)則混合可使用渲染器無渲染模式,該模式下播放影片的成功率及效率較低,或者采用浮層窗口實現(xiàn),則與視頻不能完全同步而且合成效率低。與視頻同步渲染,彈幕的時間信息可以與視頻的幀號綁定,所以展現(xiàn)時可以依據(jù)視頻的幀號進行更準(zhǔn)確的關(guān)聯(lián)。生成彈幕數(shù)據(jù)直接合并到視頻中,減少了窗口間的alpha合成時間,直接在內(nèi)存數(shù)據(jù)中完成疊加,效率更高。

實施例3:

結(jié)合圖3,本實施例為應(yīng)用實施例:

暴風(fēng)播放線程,開始播放視頻,渲染線程啟動,當(dāng)?shù)谝粠瑘D像成功渲染完成,對渲染器進行hook,勾住繪制函數(shù)。此時,渲染線程仍正常工作,按照視頻的幀率,逐幀的繪制數(shù)據(jù)。然后,啟動彈幕數(shù)據(jù)的下載線程,請求下載彈幕的數(shù)據(jù)文件,再進行數(shù)據(jù)解析。然后,生成彈幕的圖像數(shù)據(jù),根據(jù)彈幕的時間信息和影片播放的時間信息比較,在相同的時間點顯示。彈幕的內(nèi)容,大小,顏色等信息皆從請求中已經(jīng)獲取,則可按當(dāng)前屏幕上的彈幕排布情況,把需要顯示的彈幕顯示在相應(yīng)的位置。位于視頻的上三分之一部分,并且互相之間不能重合。渲染線程則獲取剛生成的彈幕圖像數(shù)據(jù),并合成到當(dāng)前渲染的圖像中,并同樣進行下一幀的工作。

與現(xiàn)有技術(shù)相比,本發(fā)明所述的在渲染器中利用HOOK實現(xiàn)彈幕的方法和裝置,達到了如下效果:

本發(fā)明通過HOOK技術(shù)將彈幕圖像嵌合到視頻幀畫面中進行播放,避免了使用浮窗播放彈幕內(nèi)容造成視頻畫面與彈幕脫離的問題。

本發(fā)明在視頻播放時,利用HOOK(鉤子函數(shù))視頻渲染的展現(xiàn)函數(shù),在視頻內(nèi)容展示時,直接將彈幕數(shù)據(jù)合成到視頻數(shù)據(jù)中,這樣彈幕即無縫成為視頻的一部分,跟隨視頻的幀率實時刷新,并能同步的視頻進行拖動以及縮放。由于,刷新的頻次完全與視頻同步,所以,彈幕可以精確到視頻的幀號的精度,并能完好的保持同步。

Hook技術(shù)直接使用系統(tǒng)的默認(rèn)渲染器,更加穩(wěn)定,減少使用無渲染渲染器的導(dǎo)致無法正常播放視頻的問題。與視頻緊密契合,跟隨視頻的刷新去更新展示,防止出現(xiàn)視頻卡頓但是彈幕卻在飛行的情況。直接合并數(shù)據(jù)到視頻數(shù)據(jù)中,減少后續(xù)窗口間透明疊加的消耗,提升效率。

上述說明示出并描述了本發(fā)明的若干優(yōu)選實施例,但如前所述,應(yīng)當(dāng)理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識進行改動。而本領(lǐng)域人員所進行的改動和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護范圍內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1