本發(fā)明涉及視頻播放的技術(shù)領(lǐng)域,更具體地,涉及一種基于D3D接口播放立方體全景視頻的方法及系統(tǒng)。
背景技術(shù):
全景視頻,即720度或者360度全景視頻,它是在720度或者360度全景的技術(shù)之上發(fā)展延伸而來(lái),將靜態(tài)的全景圖片轉(zhuǎn)化為動(dòng)態(tài)的圖像幀,全景視頻可以在拍攝角度上下左右360度范圍內(nèi)任意觀看動(dòng)態(tài)視頻,讓用戶有一種身臨其境的感覺(jué)。在制作全景視頻時(shí)使用一組攝像機(jī)在拍攝點(diǎn)周圍同時(shí)拍攝360度(或720度)的畫(huà)面,并經(jīng)過(guò)后期的圖像拼接后使之能夠在任意時(shí)刻無(wú)失真地展現(xiàn)拍攝點(diǎn)周圍畫(huà)面的視頻。
Direct3D,簡(jiǎn)稱D3D,是微軟為提高3D顯示性能而開(kāi)發(fā)的一套顯示程序接口,它提供了豐富的3D功能庫(kù),是游戲和視頻播放器在Windows操作系統(tǒng)上廣泛采用的標(biāo)準(zhǔn)。
D3D作為操作系統(tǒng)和各種應(yīng)用軟件(比如視頻播放器)調(diào)用顯卡的媒介,對(duì)下可以通過(guò)顯卡驅(qū)動(dòng)程序操作顯卡,對(duì)上可以為操作系統(tǒng)和各種應(yīng)用程序提供各種顯示用的接口函數(shù)和顯示功能。操作系統(tǒng)和應(yīng)用軟件(比如視頻播放器)只需要調(diào)用D3D提供的接口函數(shù)和功能就能實(shí)現(xiàn)圖像顯示功能,通過(guò)這種分工合作,極大的降低了軟件開(kāi)發(fā)周期和成本。在視頻播放領(lǐng)域,普通的平面視頻及全景視頻都可以利用D3D作為調(diào)用顯卡的媒介進(jìn)行播放。
現(xiàn)有的普通的播放器只能播放平面的圖像幀,普通播放器的播放流程是:加載視頻—獲取視頻信息—進(jìn)行視頻分離—解碼視頻幀—顯示解碼后的圖像幀,按照普通圖像幀的形式播放全景視頻只能得到不準(zhǔn)確的平面圖像幀的畫(huà)面,根本不能達(dá)到全景視頻播放的效果。而現(xiàn)有的全景播放器只能播放全景視頻文件,若使用全景播放器播放平面視頻得到的只能是失真的畫(huà)面。因?yàn)槿安シ牌鞑シ诺氖墙?jīng)過(guò)拼接處理的以拍攝點(diǎn)為中心的360度投影面上的畫(huà)面,目前對(duì)這種投影的全景畫(huà)面不方便存儲(chǔ),而是常常將投影的全景畫(huà)面變換存儲(chǔ)為矩形圖像存儲(chǔ),在播放該全景視頻時(shí)將存儲(chǔ)的矩形圖像重新映射貼合投影成全景視頻畫(huà)面,再選取用戶視野可見(jiàn)的部分視頻部分進(jìn)行播放,要是通過(guò)這種方式將平面視頻貼合到全景投影模型上進(jìn)行播放就肯定會(huì)造成失真現(xiàn)象。在現(xiàn)有技術(shù)中還沒(méi)有一種既可以播放平面視頻又可以播放全景視頻的方案。
因此,提供一種在播放器中既可以播放平面視頻又可以播放全景視頻的方法是本領(lǐng)域亟待解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供了一種基于D3D接口播放立方體全景視頻的方法及系統(tǒng),解決了現(xiàn)有技術(shù)中不能在播放器中既可以播放平面視頻又可以播放全景視頻的技術(shù)問(wèn)題。
為了解決上述技術(shù)問(wèn)題,本發(fā)明提出一種基于D3D接口播放立方體全景視頻的方法,包括:
在基于D3D接口的播放器中設(shè)置用于觸發(fā)全景視頻播放的觸發(fā)指令,根據(jù)所述觸發(fā)指令創(chuàng)建立方體模型,并將全景視頻貼合到所述立方體模型的全景映射面上;
接收全景視頻播放請(qǐng)求,根據(jù)所述全景視頻播放請(qǐng)求加載所請(qǐng)求播放的全景視頻,并對(duì)所述全景視頻進(jìn)行分離、解碼后獲得圖像幀;
激活所述觸發(fā)指令,根據(jù)預(yù)先設(shè)置的尺寸創(chuàng)建立方體模型,根據(jù)預(yù)設(shè)的映射關(guān)系將所述圖像幀對(duì)應(yīng)貼合到所述立方體模型的全景映射面上;
檢測(cè)所述播放器中預(yù)先設(shè)置的顯示視窗,在所述立方體模型的全景映射面上的位置,并獲取所述顯示視窗在所述立方體模型的全景映射面上對(duì)應(yīng)的圖像,在所述顯示視窗中進(jìn)行顯示;
接收所述全景視頻的景深伸/縮請(qǐng)求,根據(jù)所述景深伸/縮請(qǐng)求及預(yù)先設(shè)定的景深伸/縮與視角范圍的對(duì)應(yīng)比例,得到景深伸/縮后的視角范圍,獲取貼合在所述立方體模型的全景映射面上,且位于所述景深伸/縮后的視角范圍內(nèi)的圖像,并在所述顯示視窗中進(jìn)行展示。
進(jìn)一步地,其中,根據(jù)所述映射關(guān)系將所述圖像幀對(duì)應(yīng)貼合到所述立方體模型的全景映射面上,進(jìn)一步為:
獲得全景視頻后,基于D3D接口建立立方體模型,并根據(jù)預(yù)先設(shè)定的映射關(guān)系,確定立方體頂點(diǎn)與圖像幀的紋理坐標(biāo)的對(duì)應(yīng)關(guān)系,然后根據(jù)所述對(duì)應(yīng)關(guān)系進(jìn)行紋理貼圖。
進(jìn)一步地,其中,所述映射關(guān)系,為預(yù)先設(shè)置在所述全景視頻的圖像幀與所述立方體模型的全景映射面上位置的一一對(duì)應(yīng)關(guān)系。
進(jìn)一步地,其中,檢測(cè)所述播放器中預(yù)先設(shè)置的顯示視窗,在所述立方體模型的全景映射面上的位置,并獲取所述顯示視窗在所述立方體模型的全景映射面上對(duì)應(yīng)的圖像,在所述顯示視窗中進(jìn)行顯示,進(jìn)一步為:
檢測(cè)所述播放器中預(yù)先設(shè)置的顯示視窗,在所述立方體模型的全景映射面上的位置,并獲取所述顯示視窗在所述立方體模型的全景映射面上對(duì)應(yīng)的圖像后,在所述顯示視窗中進(jìn)行顯示;
根據(jù)輸入控制所述顯示視窗在三維空間的位置移動(dòng),根據(jù)所述三維空間的位置確定位于所述顯示視窗范圍內(nèi),且貼合在所述立方體模型的全景映射面上的圖像,并將所述顯示視窗移動(dòng)后在所述立方體模型的全景映射面上的圖像顯示在所述顯示視窗中;其中,
所述輸入包括:用戶的觀看方向、視角大小、景深及視窗大小。
進(jìn)一步地,其中,該方法進(jìn)一步包括:
檢測(cè)到平面視頻播放指令時(shí),根據(jù)所述關(guān)閉指令禁用所述觸發(fā)指令;
獲取所述圖像幀,并將所述顯示視窗對(duì)應(yīng)位置的圖像幀內(nèi)容發(fā)送至播放器進(jìn)行平面視頻渲染后,顯示在所述顯示視窗內(nèi)。
另一方面,本發(fā)明還提供一種基于D3D接口播放立方體全景視頻的系統(tǒng),包括:設(shè)置模塊、全景視頻獲取模塊、立方體模型創(chuàng)建模塊及全景視頻播放模塊;其中,
所述設(shè)置模塊,用于在基于D3D接口的播放器中設(shè)置用于觸發(fā)全景視頻播放的觸發(fā)指令,根據(jù)所述觸發(fā)指令創(chuàng)建立方體模型,并將全景視頻貼合到所述立方體模型的全景映射面上;
所述全景視頻獲取模塊,用于接收全景視頻播放請(qǐng)求,根據(jù)所述全景視頻播放請(qǐng)求加載所請(qǐng)求播放的全景視頻,并對(duì)所述全景視頻進(jìn)行分離、解碼后獲得圖像幀;
所述立方體模型創(chuàng)建模塊,用于激活所述觸發(fā)指令,根據(jù)預(yù)先設(shè)置的尺寸創(chuàng)建立方體模型,根據(jù)預(yù)設(shè)的映射關(guān)系將所述圖像幀對(duì)應(yīng)貼合到所述立方體模型的全景映射面上;
所述全景視頻播放模塊,用于檢測(cè)所述播放器中預(yù)先設(shè)置的顯示視窗,在所述立方體模型的全景映射面上的位置,并獲取所述顯示視窗在所述立方體模型的全景映射面上對(duì)應(yīng)的圖像,在所述顯示視窗中進(jìn)行顯示;
接收所述全景視頻的景深伸/縮請(qǐng)求,根據(jù)所述景深伸/縮請(qǐng)求及預(yù)先設(shè)定的景深伸/縮與視角范圍的對(duì)應(yīng)比例得到景深伸/縮后的視角范圍,獲取貼合在所述立方體模型的全景映射面上,且位于所述景深伸/縮后的視角范圍內(nèi)的圖像,并在所述顯示視窗中進(jìn)行展示。
進(jìn)一步地,其中,所述立方體模型創(chuàng)建模塊,進(jìn)一步用于:
獲得全景視頻后,基于D3D接口建立立方體模型,并根據(jù)預(yù)先設(shè)定的映射關(guān)系,確定立方體頂點(diǎn)與圖像幀的紋理坐標(biāo)的對(duì)應(yīng)關(guān)系,然后根據(jù)所述對(duì)應(yīng)關(guān)系進(jìn)行紋理貼圖。
進(jìn)一步地,其中,所述映射關(guān)系,為預(yù)先設(shè)置在所述全景視頻的圖像幀與所述立方體模型的全景映射面上位置的一一對(duì)應(yīng)關(guān)系。
進(jìn)一步地,其中,所述全景視頻播放模塊,進(jìn)一步用于:
檢測(cè)所述播放器中預(yù)先設(shè)置的顯示視窗,在所述立方體模型的全景映射面上的位置,并獲取所述顯示視窗在所述立方體模型的全景映射面上對(duì)應(yīng)的圖像后,在所述顯示視窗中進(jìn)行顯示;
根據(jù)輸入控制所述顯示視窗在三維空間的位置移動(dòng),根據(jù)所述三維空間的位置確定位于所述顯示視窗范圍內(nèi),且貼合在所述立方體模型的全景映射面上的圖像,并將所述顯示視窗移動(dòng)后在所述立方體模型的全景映射面上的圖像顯示在所述顯示視窗中;其中,
所述輸入包括:用戶的觀看方向、視角大小、景深及視窗大小。
進(jìn)一步地,其中,該系統(tǒng)進(jìn)一步包括:平面視頻播放模塊,用于:
檢測(cè)到平面視頻播放指令時(shí),根據(jù)所述關(guān)閉指令禁用所述觸發(fā)指令;
獲取所述圖像幀,并將所述顯示視窗對(duì)應(yīng)的圖像幀內(nèi)容發(fā)送至播放器進(jìn)行平面視頻渲染后,顯示在所述顯示視窗內(nèi)。
與現(xiàn)有技術(shù)相比,本發(fā)明的基于D3D接口播放立方體全景視頻的方法及系統(tǒng),實(shí)現(xiàn)了如下的有益效果:
(1)本發(fā)明所述的基于D3D接口播放立方體全景視頻的方法及系統(tǒng),在視頻播放器中設(shè)置全景視頻與平面視頻播放的切換控制指令,根據(jù)對(duì)應(yīng)的控制指令調(diào)用立方體全景視頻播放或平面視頻播放,解決了現(xiàn)有技術(shù)中不能在播放器中既可以播放平面視頻又可以播放全景視頻的技術(shù)問(wèn)題。
(2)本發(fā)明所述的基于D3D接口播放立方體全景視頻的方法及系統(tǒng),能夠根據(jù)用戶的請(qǐng)求進(jìn)行相對(duì)應(yīng)視頻形式的播放,避免了因?yàn)橐曨l播放模式不對(duì)應(yīng)帶來(lái)的視頻失真現(xiàn)象,且很容易建立全景圖像幀與立方體的每個(gè)映射面的位置對(duì)應(yīng)關(guān)系,避免了在貼合全景圖像幀時(shí)的復(fù)雜計(jì)算過(guò)程。
(3)本發(fā)明所述的基于D3D接口播放立方體全景視頻的方法及系統(tǒng),根據(jù)預(yù)先處理好的立方體全景視頻畫(huà)面,創(chuàng)建立方體模型貼合全景視頻后進(jìn)行顯示播放,可以適合處理其它全景視頻不能處理的三角架問(wèn)題。
當(dāng)然,實(shí)施本發(fā)明的任一產(chǎn)品必不特定需要同時(shí)達(dá)到以上所述的所有技術(shù)效果。
通過(guò)以下參照附圖對(duì)本發(fā)明的示例性實(shí)施例的詳細(xì)描述,本發(fā)明的其它特征及其優(yōu)點(diǎn)將會(huì)變得清楚。
附圖說(shuō)明
被結(jié)合在說(shuō)明書(shū)中并構(gòu)成說(shuō)明書(shū)的一部分的附圖示出了本發(fā)明的實(shí)施例,并且連同其說(shuō)明一起用于解釋本發(fā)明的原理。
圖1A為本發(fā)明實(shí)施例1中所述基于D3D接口播放立方體全景視頻的方法的流程示意圖;
圖1B為本發(fā)明實(shí)施例1中所述全景視頻畫(huà)面貼合到立方體模型上的示意圖;
圖2為本發(fā)明實(shí)施例2中所述基于D3D接口播放立方體全景視頻的方法的流程示意圖;
圖3為本發(fā)明實(shí)施例3中所述基于D3D接口播放立方體全景視頻的系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
現(xiàn)在將參照附圖來(lái)詳細(xì)描述本發(fā)明的各種示例性實(shí)施例。應(yīng)注意到:除非另外具體說(shuō)明,否則在這些實(shí)施例中闡述的部件和步驟的相對(duì)布置、數(shù)字表達(dá)式和數(shù)值不限制本發(fā)明的范圍。
以下對(duì)至少一個(gè)示例性實(shí)施例的描述實(shí)際上僅僅是說(shuō)明性的,決不作為對(duì)本發(fā)明及其應(yīng)用或使用的任何限制。
對(duì)于相關(guān)領(lǐng)域普通技術(shù)人員已知的技術(shù)、方法和設(shè)備可能不作詳細(xì)討論,但在適當(dāng)情況下,所述技術(shù)、方法和設(shè)備應(yīng)當(dāng)被視為說(shuō)明書(shū)的一部分。
在這里示出和討論的所有例子中,任何具體值應(yīng)被解釋為僅僅是示例性的,而不是作為限制。因此,示例性實(shí)施例的其它例子可以具有不同的值。
應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步討論。
實(shí)施例1
如圖1所示,為本實(shí)施例所述基于D3D接口播放立方體全景視頻的方法的流程示意圖,本實(shí)施例所述方法解決了現(xiàn)有技術(shù)中不能在播放器中既可以播放平面視頻又可以播放全景視頻的技術(shù)問(wèn)題。本實(shí)施例所述基于D3D接口播放立方體全景視頻的方法包括以下步驟:
步驟101、在基于D3D接口的播放器中設(shè)置用于觸發(fā)全景視頻播放的觸發(fā)指令,根據(jù)所述觸發(fā)指令創(chuàng)建立方體模型,并將全景視頻貼合到所述立方體模型的全景映射面上。
步驟102、用戶在播放器中請(qǐng)求播放全景視頻,并發(fā)送全景視頻播放請(qǐng)求,在所述全景視頻播放請(qǐng)求中帶有該全景視頻的標(biāo)識(shí)。
步驟103、接收全景視頻播放請(qǐng)求,根據(jù)所述全景視頻播放請(qǐng)求加載所請(qǐng)求播放的全景視頻,并對(duì)所述全景視頻進(jìn)行分離、解碼后獲得圖像幀。
根據(jù)所述全景視頻的標(biāo)識(shí),在視頻數(shù)據(jù)庫(kù)中搜索并獲取對(duì)應(yīng)的全景視頻。優(yōu)選地,在視頻數(shù)據(jù)庫(kù)中,存儲(chǔ)著經(jīng)過(guò)預(yù)先處理過(guò)的全景視頻,將拍攝的全景視頻處理成符合立方體六個(gè)面的圖像形式,并預(yù)先設(shè)置好每個(gè)面上與其對(duì)應(yīng)全景圖像幀的位置對(duì)應(yīng)關(guān)系,避免因全景圖像幀貼圖時(shí)位置不對(duì)造成播放出的全景視頻不符合實(shí)際情況的現(xiàn)象。
更優(yōu)選地,在處理圖像時(shí),在圖像對(duì)應(yīng)的立方體中設(shè)置空間坐標(biāo)系,獲取并存儲(chǔ)全景圖像幀的在空間坐標(biāo)系上的坐標(biāo)以及該空間坐標(biāo)系的建立方式,在播放器中播放全景視頻時(shí),根據(jù)該空間坐標(biāo)系的建立方式創(chuàng)建立方體模型,結(jié)合全景圖像幀的在空間坐標(biāo)系上的坐標(biāo),將全景圖像幀貼合到立方體模型上。
步驟104、激活所述觸發(fā)指令,根據(jù)預(yù)先設(shè)置的尺寸創(chuàng)建立方體模型,根據(jù)所述映射關(guān)系將所述圖像幀對(duì)應(yīng)貼合到所述立方體模型的全景映射面上。
如圖1B所示,為本實(shí)施例1所述全景視頻畫(huà)面貼合到立方體模型上的示意圖,全景視頻的后側(cè)面圖像401與底面圖像402分別對(duì)應(yīng)貼合到立方體模型的后側(cè)面及底面;其它各個(gè)側(cè)面圖像也對(duì)應(yīng)貼合至立方體模型中形成全景圖像幀的映射立方體。
步驟105、檢測(cè)所述播放器中預(yù)先設(shè)置的顯示視窗,在所述立方體模型的全景映射面上的位置,并獲取所述顯示視窗在所述立方體模型的全景映射面上對(duì)應(yīng)的圖像,在所述顯示視窗中進(jìn)行顯示。
用戶通過(guò)播放器不能看到整個(gè)全景視頻畫(huà)面,而只能看到在視覺(jué)范圍內(nèi)的視頻畫(huà)面,因此,在播放全景視頻時(shí),只需將用戶視覺(jué)范圍內(nèi)的圖像幀在視窗中進(jìn)行展現(xiàn)即可。
步驟106、接收所述全景視頻的景深伸/縮請(qǐng)求,根據(jù)所述景深伸/縮請(qǐng)求及預(yù)先設(shè)定的景深伸/縮與視角范圍的對(duì)應(yīng)比例得到景深伸/縮后的視角范圍,獲取貼合在所述立方體模型的全景映射面上,且位于所述景深伸/縮后的視角范圍內(nèi)的圖像,并將貼合在所述立方體模型的全景映射面上且位于所述景深伸/縮后的視角范圍內(nèi)的圖像在所述顯示視窗中進(jìn)行展示。
因?yàn)樵诓シ牌髦?,?chuàng)建的處理立方體模型尺寸是固定的,但是每個(gè)全景視頻的拍攝畫(huà)面的尺寸是不相同的,將每個(gè)全景視頻都以相同的尺寸貼合至立方體模型上,勢(shì)必會(huì)造成一些全景視頻畫(huà)面過(guò)大或過(guò)小的問(wèn)題,通過(guò)本步驟設(shè)置的拉遠(yuǎn)/拉近操作,可以方便用戶找到比較合適的觀看大小,提升了用戶使用體驗(yàn)。
優(yōu)選地,在本實(shí)施例中,還可以設(shè)置在立方體上貼合圖像幀的標(biāo)準(zhǔn)尺寸范圍,在前期進(jìn)行全景圖像幀處理時(shí),測(cè)量出全景圖像幀的尺寸并存儲(chǔ);在播放器接收用戶的全景視頻播放請(qǐng)求時(shí),獲取全景圖像幀的尺寸與標(biāo)準(zhǔn)尺寸范圍比較,結(jié)合預(yù)先設(shè)定的尺寸范圍與景深的調(diào)節(jié)關(guān)系先調(diào)節(jié)好全景視頻的景深,再獲取用戶視覺(jué)范圍內(nèi)的全景圖像幀進(jìn)行展示播放。
本實(shí)施例所述的基于立方體模型播放全景視頻的方法,根據(jù)預(yù)先處理好的立方體全景視頻畫(huà)面,創(chuàng)建立方體模型貼合全景視頻后進(jìn)行顯示播放,可以適合處理其它全景視頻不能處理的三角架等問(wèn)題,還實(shí)現(xiàn)了根據(jù)用戶操作拉遠(yuǎn)/拉近全景視頻畫(huà)面的功能,提升了用戶使用體驗(yàn)。
實(shí)施例2
如圖2所示,為本實(shí)施例所述基于D3D接口播放立方體全景視頻的方法的流程示意圖,本實(shí)施例在實(shí)施例1的基礎(chǔ)上,描述了立方體全景視頻貼圖及顯示播放的具體內(nèi)容。本實(shí)施例所述基于立方體模型播放全景視頻的方法包括以下步驟:
步驟201、在基于D3D接口的播放器中設(shè)置用于觸發(fā)全景視頻播放的觸發(fā)指令,根據(jù)所述觸發(fā)指令創(chuàng)建立方體模型,并將全景視頻貼合到所述立方體模型的全景映射面上。
步驟202、用戶在播放器中請(qǐng)求播放全景視頻,并發(fā)送全景視頻播放請(qǐng)求,在所述全景視頻播放請(qǐng)求中帶有該全景視頻的標(biāo)識(shí)。
步驟203、接收全景視頻播放請(qǐng)求,根據(jù)所述全景視頻播放請(qǐng)求加載所請(qǐng)求播放的全景視頻,并對(duì)所述全景視頻進(jìn)行分離、解碼后獲得圖像幀。
步驟204、獲得全景視頻后,激活所述觸發(fā)指令,基于D3D接口建立立方體模型,并根據(jù)預(yù)先設(shè)定的映射關(guān)系,確定立方體頂點(diǎn)與圖像幀的紋理坐標(biāo)的對(duì)應(yīng)關(guān)系,然后根據(jù)所述對(duì)應(yīng)關(guān)系進(jìn)行紋理貼圖。其中,所述映射關(guān)系,為預(yù)先設(shè)置在所述全景視頻的圖像幀與所述立方體模型的全景映射面上位置的一一對(duì)應(yīng)關(guān)系。
步驟205、檢測(cè)所述播放器中預(yù)先設(shè)置的顯示視窗,在所述立方體模型的全景映射面上的位置,并獲取所述顯示視窗在所述立方體模型的全景映射面上對(duì)應(yīng)的圖像后,在所述顯示視窗中進(jìn)行顯示。
步驟206、根據(jù)輸入控制所述顯示視窗在三維空間的位置移動(dòng),根據(jù)所述三維空間的位置確定位于所述顯示視窗范圍內(nèi),且貼合在所述立方體模型的全景映射面上的圖像,并將所述顯示視窗移動(dòng)后在所述立方體模型的全景映射面上的圖像顯示在所述顯示視窗中;其中,所述輸入包括:用戶觀看的方向、視角大小、景深及視窗大小。
步驟207、接收所述全景視頻的景深伸/縮請(qǐng)求,根據(jù)所述景深伸/縮請(qǐng)求及預(yù)先設(shè)定的景深伸/縮與視角范圍的對(duì)應(yīng)比例得到景深伸/縮后的視角范圍,獲取貼合在所述立方體模型的全景映射面上,且位于所述景深伸/縮后的視角范圍內(nèi)的圖像,并在所述顯示視窗中進(jìn)行展示。
步驟208、檢測(cè)到平面視頻播放指令時(shí),根據(jù)所述關(guān)閉指令禁用所述觸發(fā)指令;獲取所述圖像幀,并將所述顯示視窗對(duì)應(yīng)位置的圖像幀內(nèi)容發(fā)送至播放器進(jìn)行平面視頻渲染后,顯示在所述顯示視窗內(nèi)。
本實(shí)施例所述的基于立方體模型播放全景視頻的方法,在視頻播放器中設(shè)置全景視頻與平面視頻播放的切換控制指令,根據(jù)對(duì)應(yīng)的控制指令調(diào)用立方體全景視頻播放或平面視頻播放,解決了現(xiàn)有技術(shù)中不能在播放器中既可以播放平面視頻又可以播放全景視頻的技術(shù)問(wèn)題。
實(shí)施例3
如圖3所示,為本實(shí)施例所述基于D3D接口播放立方體全景視頻的系統(tǒng)的結(jié)構(gòu)示意圖,本實(shí)施例所述的系統(tǒng)用于實(shí)施上述實(shí)施例中所述基于立方體模型播放全景視頻的方法。本實(shí)施例所述優(yōu)化的視頻解碼播放的系統(tǒng)包括:設(shè)置模塊301、全景視頻獲取模塊302、立方體模型創(chuàng)建模塊303及全景視頻播放模塊304。
其中,所述設(shè)置模塊301與所述全景視頻獲取模塊302相藕接,用于在基于D3D接口的播放器中設(shè)置用于觸發(fā)全景視頻播放的觸發(fā)指令,根據(jù)所述觸發(fā)指令創(chuàng)建立方體模型,并將全景視頻貼合到所述立方體模型的全景映射面上。
所述全景視頻獲取模塊302與所述設(shè)置模塊301及立方體模型創(chuàng)建模塊303相藕接,用于接收全景視頻播放請(qǐng)求,根據(jù)所述全景視頻播放請(qǐng)求加載所請(qǐng)求播放的全景視頻,并對(duì)所述全景視頻進(jìn)行分離、解碼后獲得圖像幀及所述圖像幀在立方體模型上的映射關(guān)系;
所述立方體模型創(chuàng)建模塊303與所述全景視頻獲取模塊302及全景視頻播放模塊304相藕接,用于獲得全景視頻后,激活所述觸發(fā)指令,基于D3D接口建立立方體模型,并根據(jù)預(yù)先設(shè)定的映射關(guān)系,確定立方體頂點(diǎn)與圖像幀的紋理坐標(biāo)的對(duì)應(yīng)關(guān)系,然后根據(jù)所述對(duì)應(yīng)關(guān)系進(jìn)行紋理貼圖。
所述全景視頻播放模塊304與所述立方體模型創(chuàng)建模塊303相藕接,用于檢測(cè)所述播放器中預(yù)先設(shè)置的顯示視窗在所述立方體模型的全景映射面上的位置,并獲取所述顯示視窗在紋理貼圖后立方體模型的全景映射面上對(duì)應(yīng)的圖像,在所述顯示視窗中進(jìn)行顯示;
接收所述全景視頻的景深伸/縮請(qǐng)求,根據(jù)所述景深伸/縮請(qǐng)求及預(yù)先設(shè)定的景深伸/縮與視角范圍的對(duì)應(yīng)比例得到景深伸/縮后的視角范圍,獲取貼合在所述立方體模型的全景映射面上,且位于所述景深伸/縮后的視角范圍內(nèi)的圖像,并在所述顯示視窗中進(jìn)行展示。
所述立方體模型創(chuàng)建模塊303,進(jìn)一步用于:
基于D3D獲取所述全景視頻的圖像幀及所述映射關(guān)系,檢測(cè)所述播放器中預(yù)先設(shè)置的顯示視窗,在所述立方體模型的全景映射面上的位置,并獲取所述顯示視窗在所述立方體模型的全景映射面上對(duì)應(yīng)的圖像;
根據(jù)所述映射關(guān)系獲取所述顯示視窗在所述立方體模型的全景映射面上的視覺(jué)圖像,將所述視覺(jué)圖像對(duì)應(yīng)地貼合到所述立方體模型的全景映射面上。
所述映射關(guān)系,為預(yù)先設(shè)置在所述全景視頻的圖像幀與所述立方體模型的全景映射面上位置的一一對(duì)應(yīng)關(guān)系。
所述全景視頻播放模塊304,進(jìn)一步用于:
檢測(cè)所述播放器中預(yù)先設(shè)置的顯示視窗,在所述立方體模型的全景映射面上的位置,并獲取所述顯示視窗在所述立方體模型的全景映射面上對(duì)應(yīng)的圖像后,在所述顯示視窗中進(jìn)行顯示;
根據(jù)輸入控制所述顯示視窗在三維空間的位置移動(dòng),根據(jù)所述三維空間的位置確定位于所述顯示視窗范圍內(nèi),且貼合在所述立方體模型的全景映射面上的圖像,并將所述顯示視窗移動(dòng)后在所述立方體模型的全景映射面上的圖像顯示在所述顯示視窗中;其中,
所述輸入包括:用戶的觀看方向、視角大小、景深及視窗大小。
上述系統(tǒng)進(jìn)一步包括:平面視頻播放模塊305與所述全景視頻播放模塊304相藕接,用于:
檢測(cè)到平面視頻播放指令時(shí),根據(jù)所述關(guān)閉指令禁用所述觸發(fā)指令;
獲取所述圖像幀,并將所述顯示視窗對(duì)應(yīng)位置的圖像幀內(nèi)容發(fā)送至播放器進(jìn)行平面視頻渲染后,顯示在所述顯示視窗內(nèi)。
通過(guò)以上各個(gè)實(shí)施例可知,本發(fā)明的基于D3D接口播放立方體全景視頻的方法及系統(tǒng),存在的有益效果是:
(1)本發(fā)明所述的基于立方體模型播放全景視頻的方法及系統(tǒng),在視頻播放器中設(shè)置全景視頻與平面視頻播放的切換控制指令,根據(jù)對(duì)應(yīng)的控制指令調(diào)用立方體全景視頻播放或平面視頻播放,解決了現(xiàn)有技術(shù)中不能在播放器中既可以播放平面視頻又可以播放全景視頻的技術(shù)問(wèn)題。
(2)本發(fā)明所述的基于立方體模型播放全景視頻的方法及系統(tǒng),能夠根據(jù)用戶的請(qǐng)求進(jìn)行相對(duì)應(yīng)視頻形式的播放,避免了因?yàn)橐曨l播放模式不對(duì)應(yīng)帶來(lái)的視頻失真現(xiàn)象,且很容易建立全景圖像幀與立方體的每個(gè)映射面的位置對(duì)應(yīng)關(guān)系,避免了在貼合全景圖像幀時(shí)的復(fù)雜計(jì)算過(guò)程。
(3)本發(fā)明所述的基于立方體模型播放全景視頻的方法及系統(tǒng),根據(jù)預(yù)先處理好的立方體全景視頻畫(huà)面,創(chuàng)建立方體模型貼合全景視頻后進(jìn)行顯示播放,可以適合處理其它全景視頻不能處理的三角架問(wèn)題。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、裝置、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
雖然已經(jīng)通過(guò)例子對(duì)本發(fā)明的一些特定實(shí)施例進(jìn)行了詳細(xì)說(shuō)明,但是本領(lǐng)域的技術(shù)人員應(yīng)該理解,以上例子僅是為了進(jìn)行說(shuō)明,而不是為了限制本發(fā)明的范圍。本領(lǐng)域的技術(shù)人員應(yīng)該理解,可在不脫離本發(fā)明的范圍和精神的情況下,對(duì)以上實(shí)施例進(jìn)行修改。本發(fā)明的范圍由所附權(quán)利要求來(lái)限定。