專(zhuān)利名稱(chēng):一種在游戲中內(nèi)嵌視頻播放的方法
一種在游戲中內(nèi)嵌視頻播放的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多媒體應(yīng)用技術(shù)領(lǐng)域,尤其涉及一種在游戲中內(nèi)嵌視頻播放的方法。背景技術(shù):
現(xiàn)有技術(shù)中許多播發(fā)軟件都集成有FFmpeg計(jì)算機(jī)程序,如暴風(fēng)影音、QQ影音等;其FFmpeg是一套可以用來(lái)記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開(kāi)源計(jì)算機(jī)程序。它包括了目前領(lǐng)先的音/視頻編碼庫(kù)libavcodec。隨著計(jì)算機(jī)圖像處理技術(shù)的發(fā)展,為了豐富計(jì)算機(jī)游戲過(guò)程中的用戶體驗(yàn),就有 了在游戲過(guò)程內(nèi)嵌視頻播放的需求。所謂的內(nèi)嵌視頻播放就是在游戲渲染的過(guò)程中,同時(shí)在游戲窗口的某一部分播放視頻。目前的常用技術(shù)是在游戲程序內(nèi)部?jī)?nèi)置相應(yīng)的ActiveX控件,將視頻的解碼和播放的功能交由ActiveX控件實(shí)現(xiàn),由ActiveX控件負(fù)責(zé)視頻的渲染。視頻解碼是指將視頻文件根據(jù)特定的視頻壓縮算法將壓縮后的視頻文件還原為視頻圖像的過(guò)程。ActiveX是一種框架,通過(guò)與編程語(yǔ)言無(wú)關(guān)的方式定義可以復(fù)用的軟件組件。應(yīng)用程序只要通過(guò)組合這些ActiveX控件就可以達(dá)到使用這些ActiveX控件提供的功能。現(xiàn)有技術(shù)中在游戲程序內(nèi)部?jī)?nèi)置相應(yīng)的ActiveX控件,將視頻的解碼和播放的功能交由ActiveX控件處理,從而實(shí)現(xiàn)在游戲中進(jìn)行播放視頻,該技術(shù)存在以下問(wèn)題I)使用ActiveX控件播放視頻,該ActiveX控件需依賴(lài)于用戶系統(tǒng)中要安裝解碼器,如果用戶系統(tǒng)無(wú)法對(duì)相應(yīng)的視頻格式進(jìn)行解碼,則視頻就無(wú)法播放。2)使用ActiveX控件播放視頻時(shí),會(huì)和當(dāng)前游戲的主線程搶占資源,導(dǎo)致游戲的幀率下降或是視頻無(wú)法流暢播放。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問(wèn)題,在于提供一種在游戲中內(nèi)嵌視頻播放的方法,在不影響玩家游戲的同時(shí),能流暢地播放視頻文件。本發(fā)明是這樣實(shí)現(xiàn)的一種在游戲中內(nèi)嵌視頻播放的方法,包括如下步驟步驟10、在游戲程序中加入FFmpeg的動(dòng)態(tài)鏈接庫(kù),該動(dòng)態(tài)鏈接庫(kù)用于提供對(duì)視頻文件的解碼;步驟20、在游戲程序啟動(dòng)時(shí),將FFmpeg的動(dòng)態(tài)鏈接庫(kù)進(jìn)行加載,當(dāng)游戲程序中需要播放視頻時(shí),從計(jì)算機(jī)硬盤(pán)中讀入需播放的視頻文件,并通過(guò)所述FFmpeg的動(dòng)態(tài)鏈接庫(kù)將視頻文件解碼為視頻流;步驟30、將所述視頻流中各幀的圖像數(shù)據(jù)的顏色信息讀取出來(lái)并生成各幀對(duì)應(yīng)的靜態(tài)圖片;步驟40、將生成的各幀對(duì)應(yīng)的靜態(tài)圖片按一預(yù)設(shè)播放速率逐幀地渲染在游戲程序的游戲窗口,從而實(shí)現(xiàn)視頻文件的播放。進(jìn)一步地,所述步驟30具體為讀取視頻流中的每一幀的圖像數(shù)據(jù)的顏色信息,所述視頻文件的分辨率是XXY ;則每幀的圖像數(shù)據(jù)的顏色信息是由XXY個(gè)顏色的圖像像素點(diǎn)組成的,每一個(gè)顏色的圖像像素點(diǎn)由紅、綠、藍(lán)三個(gè)色值構(gòu)成,將每幀的圖像數(shù)據(jù)的每一個(gè)顏色的圖像像素點(diǎn)的色值進(jìn)行讀取出來(lái),在計(jì)算機(jī)內(nèi)存中生成各幀對(duì)應(yīng)的靜態(tài)圖片。進(jìn)一步地,所述步驟40具體為將生成的各幀對(duì)應(yīng)的靜態(tài)圖片從計(jì)算機(jī)內(nèi)存中提出出來(lái),并按一預(yù)設(shè)播放速率逐幀地在游戲程序的游戲窗口要顯示的位置進(jìn)行連續(xù)播放,從而實(shí)現(xiàn)視頻文件的播放。進(jìn)一步地,所述預(yù)設(shè)播放速率為每秒30幀。本發(fā)明具有如下優(yōu)點(diǎn)在游戲程序中加入FFmpeg的動(dòng)態(tài)鏈接庫(kù),并通過(guò)所述FFmpeg的動(dòng)態(tài)鏈接庫(kù)將視頻文件解碼為視頻流;將所述視頻流中各幀的圖像數(shù)據(jù)的顏色信息讀取出來(lái)并生成各幀對(duì)應(yīng)的靜態(tài)圖片;由于是將圖像數(shù)據(jù)的顏色信息讀取出來(lái)生成靜態(tài)圖片的;因此,能支持高壓縮比的視頻文件的播放;該方法也可運(yùn)用在別的應(yīng)用程序中,可進(jìn)行跨平臺(tái)的使用。該方法無(wú)需在游戲程序中安裝解碼器,且在不影響玩家游戲的同時(shí),能流暢地播放視頻文件。
圖I為本發(fā)明方法流程示意圖。
具體實(shí)施方式請(qǐng)參閱圖I所示,本發(fā)明的一種在游戲中內(nèi)嵌視頻播放的方法,包括如下步驟步驟10、在游戲程序中加入FFmpeg的動(dòng)態(tài)鏈接庫(kù),該動(dòng)態(tài)鏈接庫(kù)用于提供對(duì)視頻文件的解碼;步驟20、在游戲程序啟動(dòng)時(shí),將FFmpeg的動(dòng)態(tài)鏈接庫(kù)進(jìn)行加載,當(dāng)游戲程序中需要播放視頻時(shí),從計(jì)算機(jī)硬盤(pán)中讀入需播放的視頻文件,并通過(guò)所述FFmpeg的動(dòng)態(tài)鏈接庫(kù)將視頻文件解碼為視頻流;步驟30、將所述視頻流中各幀的圖像數(shù)據(jù)的顏色信息讀取出來(lái)并生成各幀對(duì)應(yīng)的靜態(tài)圖片;具體為讀取視頻流中的每一幀的圖像數(shù)據(jù)的顏色信息(也就是視頻實(shí)際分辨率下每一個(gè)圖像像素點(diǎn)的色值RGB),所述視頻文件的分辨率是XXY;則每幀的圖像數(shù)據(jù)的顏色信息是由XXY個(gè)顏色的圖像像素點(diǎn)組成的,每一個(gè)顏色的圖像像素點(diǎn)由紅、綠、藍(lán)三個(gè)色值構(gòu)成,將每幀的圖像數(shù)據(jù)的每一個(gè)顏色的圖像像素點(diǎn)的色值進(jìn)行讀取出來(lái)(每一幀的圖像數(shù)據(jù)的每一個(gè)顏色的圖像像素點(diǎn)的色值整合后可以構(gòu)成一個(gè)靜態(tài)的圖片),在計(jì)算機(jī)內(nèi)存中生成各幀對(duì)應(yīng)的靜態(tài)圖片。步驟40、將生成的各幀對(duì)應(yīng)的靜態(tài)圖片按一預(yù)設(shè)播放速率逐幀地渲染在游戲程序的游戲窗口,具體為將生成的各幀對(duì)應(yīng)的靜態(tài)圖片從計(jì)算機(jī)內(nèi)存中提出出來(lái),并按一預(yù)設(shè)播放速率逐幀地在游戲程序的游戲窗口要顯示的位置進(jìn)行連續(xù)播放;從而實(shí)現(xiàn)視頻文件的播放。在本發(fā)明中,所述預(yù)設(shè)播放速率較佳地設(shè)置為每秒30幀,其也可以按照人眼可以接受的播放速率進(jìn)行播放,使得靜態(tài)圖片形成一動(dòng)畫(huà)??傊?,本發(fā)明在游戲程序中加入FFmpeg的動(dòng)態(tài)鏈接庫(kù),并通過(guò)所述FFmpeg的動(dòng)態(tài)鏈接庫(kù)將視頻文件解碼為視頻流;將所述視頻流中各幀的圖像數(shù)據(jù)的顏色信息讀取出來(lái)并生成各幀對(duì)應(yīng)的靜態(tài)圖片;由于是將圖像數(shù)據(jù)的顏色信息讀取出來(lái)生成靜態(tài)圖片的;因此,能支持高壓縮比的視頻文件的播放;該方法也可運(yùn)用在別的應(yīng)用程序中,可進(jìn)行跨平臺(tái)的使用。
以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明申請(qǐng)專(zhuān)利范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。
權(quán)利要求
1.一種在游戲中內(nèi)嵌視頻播放的方法,其特征在于包括如下步驟 步驟10、在游戲程序中加入FFmpeg的動(dòng)態(tài)鏈接庫(kù),該動(dòng)態(tài)鏈接庫(kù)用于提供對(duì)視頻文件的解碼; 步驟20、在游戲程序啟動(dòng)時(shí),將FFmpeg的動(dòng)態(tài)鏈接庫(kù)進(jìn)行加載,當(dāng)游戲程序中需要播放視頻時(shí),從計(jì)算機(jī)硬盤(pán)中讀入需播放的視頻文件,并通過(guò)所述FFmpeg的動(dòng)態(tài)鏈接庫(kù)將視頻文件解碼為視頻流; 步驟30、將所述視頻流中各幀的圖像數(shù)據(jù)的顏色信息讀取出來(lái)并生成各幀對(duì)應(yīng)的靜態(tài)圖片; 步驟40、將生成的各幀對(duì)應(yīng)的靜態(tài)圖片按一預(yù)設(shè)播放速率逐幀地渲染在游戲程序的游戲窗口,從而實(shí)現(xiàn)視頻文件的播放。
2.根據(jù)權(quán)利要求I所述的一種在游戲中內(nèi)嵌視頻播放的方法,其特征在于所述步驟30具體為讀取視頻流中的每一幀的圖像數(shù)據(jù)的顏色信息,所述視頻文件的分辨率是XXY ;則每幀的圖像數(shù)據(jù)的顏色信息是由XXY個(gè)顏色的圖像像素點(diǎn)組成的,每一個(gè)顏色的圖像像素點(diǎn)由紅、綠、藍(lán)三個(gè)色值構(gòu)成,將每幀的圖像數(shù)據(jù)的每一個(gè)顏色的圖像像素點(diǎn)的色值進(jìn)行讀取出來(lái),在計(jì)算機(jī)內(nèi)存中生成各幀對(duì)應(yīng)的靜態(tài)圖片。
3.根據(jù)權(quán)利要求2所述的一種在游戲中內(nèi)嵌視頻播放的方法,其特征在于所述步驟40具體為將生成的各幀對(duì)應(yīng)的靜態(tài)圖片從計(jì)算機(jī)內(nèi)存中提出出來(lái),并按一預(yù)設(shè)播放速率逐幀地在游戲程序的游戲窗口要顯示的位置進(jìn)行連續(xù)播放,從而實(shí)現(xiàn)視頻文件的播放。
4.根據(jù)權(quán)利要求I所述的一種在游戲中內(nèi)嵌視頻播放的方法,其特征在于所述預(yù)設(shè)播放速率為每秒30幀。
全文摘要
本發(fā)明提供一種在游戲中內(nèi)嵌視頻播放的方法,包括如下步驟1.在游戲程序中加入FFmpeg的動(dòng)態(tài)鏈接庫(kù),2.在游戲程序啟動(dòng)時(shí),將FFmpeg的動(dòng)態(tài)鏈接庫(kù)進(jìn)行加載,當(dāng)游戲程序中需要播放視頻時(shí),從計(jì)算機(jī)硬盤(pán)中讀入需播放的視頻文件,并通過(guò)所述FFmpeg的動(dòng)態(tài)鏈接庫(kù)將視頻文件解碼為視頻流;3.將所述視頻流中各幀的圖像數(shù)據(jù)的顏色信息讀取出來(lái)并生成各幀對(duì)應(yīng)的靜態(tài)圖片;4.將生成的各幀對(duì)應(yīng)的靜態(tài)圖片按一預(yù)設(shè)播放速率逐幀地渲染在游戲程序的游戲窗口。本發(fā)明實(shí)現(xiàn)了在游戲中內(nèi)嵌視頻播放,該方法無(wú)需在游戲程序中安裝解碼器,且在不影響玩家游戲的同時(shí),能流暢地播放視頻文件。
文檔編號(hào)H04N7/26GK102929654SQ20121036272
公開(kāi)日2013年2月13日 申請(qǐng)日期2012年9月21日 優(yōu)先權(quán)日2012年9月21日
發(fā)明者劉德建, 陳宏展, 王明巍, 陳任, 楊健 申請(qǐng)人:福建天晴數(shù)碼有限公司