一種拼接屏系統(tǒng)播放視頻的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及拼接屏技術(shù),尤其涉及一種拼接屏系統(tǒng)播放視頻的方法。
【背景技術(shù)】
[0002]圖1示出了現(xiàn)有的一種拼接屏系統(tǒng)的示意圖。該拼接屏系統(tǒng)包括拼接屏91、若干拼接屏處理器92、開(kāi)窗客戶(hù)端93、開(kāi)窗服務(wù)端94、播放控制終端95a、播放控制終端95b、視頻編碼器96和交換機(jī)97。拼接屏91、若干拼接屏處理器92、開(kāi)窗客戶(hù)端93、開(kāi)窗服務(wù)端94、播放控制終端95a和視頻編碼器96通過(guò)該交換機(jī)97通信連接。播放控制終端95b與視頻編碼器96連接。前述的開(kāi)窗客戶(hù)端93、開(kāi)窗服務(wù)端94、播放控制終端95a和播放控制終端95b都可以由普通的計(jì)算機(jī)擔(dān)當(dāng),并且,開(kāi)窗客戶(hù)端93和開(kāi)窗服務(wù)端94的功能也可以集成在同一臺(tái)計(jì)算機(jī)上,該計(jì)算機(jī)可以稱(chēng)之為開(kāi)窗控制終端。
[0003]拼接屏系統(tǒng)播放視頻的傳統(tǒng)方法都是通過(guò)網(wǎng)絡(luò)抓屏的方式。例如,如果希望在拼接屏91上播放視頻文件ABC.MP4,那么大致包括以下幾個(gè)步驟:
第一步:將要播放的視頻文件ABC.MP4在某一臺(tái)播放控制終端上用視頻播放軟件打開(kāi),并進(jìn)入全屏模式;
第二步:播放控制終端定時(shí)抓取播放視頻電腦的畫(huà)面。抓取畫(huà)面有兩種方式:播放控制終端95a采用的是軟件方式,播放控制終端95b采用的是硬件方式。播放控制終端95a中安裝了抓屏軟件,不停地抓取畫(huà)面,然后將抓取的圖像發(fā)送到網(wǎng)絡(luò)中。播放控制終端95b中沒(méi)有安裝專(zhuān)門(mén)的抓屏軟件,但是在其顯示器輸出口上連接了視頻編碼器96,視頻編碼器96將顯卡輸出信號(hào)編碼成視頻流,然后組播或廣播到網(wǎng)絡(luò)中。
[0004]第三步:播放控制終端將抓取的畫(huà)面通過(guò)網(wǎng)絡(luò)發(fā)送到各個(gè)拼接屏處理器92中,通過(guò)拼接屏91顯示。
[0005]現(xiàn)有的拼接屏系統(tǒng)播放視頻的方法存在著以下缺點(diǎn):
1、丟幀。通常,視頻的播放速率在25到30幀每秒,也就是說(shuō)如果要保證每一幀圖像都能被抓取到,那么抓取的速率至少要大于視頻播放速率。假如視頻分辨率是1920x1080,單張RGB圖片大約在6MB,6MB*30=180MB,也就是說(shuō)如果要保證不丟幀每秒至少要傳輸180MB的圖像數(shù)據(jù)。而交換機(jī)通常是IGb (125MB/秒)速率,所以要保證不丟幀,那么肯定是要對(duì)圖片進(jìn)行壓縮的。然而不管采用哪一種算法,壓縮圖像都是很耗時(shí)的,如果要保證不丟幀,那么需要很高的硬件配置才有可能達(dá)到。而對(duì)于4K或8K的高清視頻,這種單純地通過(guò)提高硬件配置的方法基本上也是無(wú)能為力了。
[0006]對(duì)于采用視頻編碼器的播放方式而言,視頻編碼器連接到顯卡輸出口,顯卡的刷新速度是很快的,通常是60幀/秒。而視頻編碼器因?yàn)槭艿接布南拗?,都是采用隔幀采集,也就是說(shuō)采集速率為30幀/秒,因而必然會(huì)造成丟幀。
[0007]2、失真。主要原因有兩點(diǎn),一是為了有效的利用網(wǎng)絡(luò)帶寬,通常在圖片傳輸?shù)狡唇悠撂幚砥鞯倪^(guò)程中都是采用有損壓縮的方式,勢(shì)必導(dǎo)致圖片質(zhì)量的下降;二是因?yàn)槟壳爸髁黠@示器都是2K分辨率(1920x1080),對(duì)于高清視頻(如4K高清視頻),雖然可以將視頻全屏播放,但實(shí)際上4K視頻是被縮小到原來(lái)的1/4顯示,而通過(guò)抓屏的方式也只能抓取1920x1080的分辨率圖像,傳輸?shù)酱笃辽弦仓荒苁?920x1080分辨率的圖像,丟失了很多細(xì)節(jié),高清的優(yōu)勢(shì)便不存在了。
[0008]3、同步性差。主要原因在于每一個(gè)拼接屏處理器可能接收的圖像的大小和順序不同,導(dǎo)致有的快有的慢。
[0009]4、帶寬占用率高。這是因?yàn)橐獋鬏敶罅康膱D像數(shù)據(jù)所造成的。
【發(fā)明內(nèi)容】
[0010]本發(fā)明所要解決的技術(shù)問(wèn)題在于提供一種拼接屏系統(tǒng)播放視頻的方法,用于避免丟幀、失真、不同步情況的發(fā)生。
[0011]為解決上述技術(shù)問(wèn)題,本發(fā)明所采取的技術(shù)方案是:
一種拼接屏系統(tǒng)播放視頻的方法,所述的拼接屏系統(tǒng)包括拼接屏、若干拼接屏處理器、開(kāi)窗控制終端和播放控制終端,該拼接屏系統(tǒng)播放視頻的方法包括以下步驟:
將要播放的視頻文件存儲(chǔ)在播放控制終端和所有的拼接屏處理器中;
開(kāi)窗控制終端在接收到外部輸入的播放視頻文件的命令和開(kāi)窗命令后,計(jì)算出每一臺(tái)拼接屏處理器的開(kāi)窗位置和視頻畫(huà)面的顯示區(qū)域,然后將包含有開(kāi)窗位置信息和視頻畫(huà)面顯示區(qū)域信息的開(kāi)窗指令分別發(fā)送給播放控制終端和所有的拼接屏處理器;
播放控制終端接收到開(kāi)窗指令后,打開(kāi)并解碼存儲(chǔ)的視頻文件,獲得具有時(shí)間戳的圖像幀,該播放控制終端從第一幀圖像幀開(kāi)始,根據(jù)圖像幀的時(shí)間戳依次顯示每一圖像幀,并且,播放控制終端在顯示每一圖像幀之前向外廣播該要顯示的圖像幀的時(shí)間戳;
各拼接屏處理器接收到開(kāi)窗指令后,根據(jù)該開(kāi)窗指令所包含的開(kāi)窗位置信息在拼接屏上建立一個(gè)播放窗口,打開(kāi)并解碼存儲(chǔ)的視頻文件,在收到播放控制終端廣播的時(shí)間戳后,查找出與該時(shí)間戳一致的圖像幀,并根據(jù)開(kāi)窗指令所包含的視頻畫(huà)面顯示區(qū)域信息在播放窗口中顯示圖像幀。
[0012]與現(xiàn)有技術(shù)相比,本申請(qǐng)實(shí)施例具有以下有益效果:
1、不丟幀。由于播放在大屏上的視頻是通過(guò)拼接屏處理器直接解碼的,不需要經(jīng)過(guò)網(wǎng)絡(luò)的傳輸,因此完全可以將所有的圖像幀都解碼和顯示;
2、不失真。播放在大屏上的視頻是由拼接屏處理器直接解碼的,完全可以解碼出無(wú)損的圖像,即使分辨率很大,拼接之后依然可以保持分辨率不變;
3、同步性好。拼接屏處理器在收到播放控制終端廣播的時(shí)間戳之前,已經(jīng)完成對(duì)圖像數(shù)據(jù)的解碼,一旦收到播放控制終端廣播的時(shí)間戳,馬上就可以顯示與該時(shí)間戳一致的圖像幀,而且,每臺(tái)拼接屏處理器接收到時(shí)間戳的時(shí)刻幾乎相同,顯示所花費(fèi)的時(shí)間也幾乎相同,實(shí)踐證明,在觀(guān)看視頻時(shí)人眼基本感覺(jué)不到卡頓;
4、網(wǎng)絡(luò)帶寬占用少。因?yàn)椴シ胚^(guò)程中,每播放一幀播放控制終端只發(fā)送短短幾個(gè)字節(jié)的時(shí)間戳信息,幾乎不占用網(wǎng)絡(luò)帶寬。
【附圖說(shuō)明】
[0013]圖1示出了現(xiàn)有的一種拼接屏系統(tǒng)的示意圖。
[0014]圖2示出了根據(jù)本發(fā)明一實(shí)施例的拼接屏系統(tǒng)的示意圖。
【具體實(shí)施方式】
[0015]圖2示出了根據(jù)本發(fā)明一實(shí)施例的拼接屏系統(tǒng)的示意圖。該拼接屏系統(tǒng)包括拼接屏1、若干拼接屏處理器2、開(kāi)窗客戶(hù)端3、開(kāi)窗服務(wù)端4、播放控制終端5和交換機(jī)7。拼接屏1、若干拼接屏處理器2、開(kāi)窗客戶(hù)端3、開(kāi)窗服務(wù)端4和播放控制終端5通過(guò)該交換機(jī)7通信連接。前述的開(kāi)窗客戶(hù)端3、開(kāi)窗服務(wù)端4和播放控制終端5都可以由普通的計(jì)算機(jī)擔(dān)當(dāng),并且,開(kāi)窗客戶(hù)端3和開(kāi)窗服務(wù)端4的功能也可以集成在同一臺(tái)計(jì)算機(jī)上,該計(jì)算機(jī)可以稱(chēng)之為開(kāi)窗控制終端。
[0016]根據(jù)本發(fā)明一實(shí)施例的拼接屏系統(tǒng)播放視頻的方法包括以下步驟:
步驟a、將要播放的視頻文件存儲(chǔ)在播放控制終端和所有的拼接屏處理器中;
步驟b、開(kāi)窗控制終端在接收到外部輸入的播放視頻文件的命令和開(kāi)窗命令后,計(jì)算出每一臺(tái)拼接屏處理器的開(kāi)窗位置和視頻畫(huà)面的顯示區(qū)域,然后將包含有開(kāi)窗位置信息和視頻畫(huà)面顯示區(qū)域信息的開(kāi)窗指令分別發(fā)送給播放控制終端和所有的拼接屏處理器;
步驟C、播放控制終端接收到開(kāi)窗指令后,打開(kāi)并解碼存儲(chǔ)的視頻文件,獲得具有時(shí)間戳的圖像幀,該播放控制終端從第一幀圖像幀開(kāi)始,根據(jù)圖像幀的時(shí)間戳依次顯示每一圖像幀,并且,播放控制終端在顯示每一圖像幀之前向外廣播該要顯示的圖像幀的時(shí)間戳;時(shí)間戳記錄的是圖像幀顯示的相對(duì)時(shí)刻。舉例而言,假設(shè)播放第一幅圖像幀的時(shí)刻為O時(shí)刻,而某一圖像幀的時(shí)間戳是2.03秒,則在第一幅圖像幀顯示后過(guò)2.03秒之后顯示該幀;步驟d、各拼接屏處理器接收到開(kāi)窗指令后,根據(jù)該開(kāi)窗指令所包含的開(kāi)窗位置信息在拼接屏上建立一個(gè)播放窗口,打開(kāi)并解碼存儲(chǔ)的視頻文件,在收到播放控制終端廣播的時(shí)間戳后,查找出與該時(shí)間戳一致的圖像幀,并根據(jù)開(kāi)窗指令所包含的視頻畫(huà)面顯示區(qū)域信息在所述的播放窗口中顯示圖像幀。
[0017]具體地,播放控制終端及各拼接屏處理器在解碼存儲(chǔ)的視頻文件時(shí),均是將解碼后的圖像幀放在內(nèi)存幀隊(duì)列中,該內(nèi)存幀隊(duì)列的長(zhǎng)度為固定值;在播放視頻時(shí),完成播放的圖像幀被清除出該內(nèi)存幀隊(duì)列,然后將繼續(xù)解碼得到的新的圖像幀插入該內(nèi)存幀隊(duì)列。上述的步驟b中,開(kāi)窗控制終端包括開(kāi)窗客戶(hù)端和開(kāi)窗服務(wù)端;其中:開(kāi)窗客戶(hù)端接收外部輸入的播放視頻文件的命令和開(kāi)窗命令,并向開(kāi)窗服務(wù)端發(fā)出開(kāi)窗指令;開(kāi)窗服務(wù)端在收到該開(kāi)窗指令后,計(jì)算出每一臺(tái)拼接屏處理器的開(kāi)窗位置和視頻畫(huà)面的顯示區(qū)域,然后將包含有開(kāi)窗位置信息和視頻畫(huà)面顯示區(qū)域信息的開(kāi)窗指令分別發(fā)送給播放控制終端和各個(gè)拼接屏處理器。
[0018]進(jìn)一步地,該拼接屏系統(tǒng)播放視頻的方法包括以下步驟:
播放控制終端接收到外部輸入的前進(jìn)或倒退指令時(shí),清空播放控制終端的內(nèi)存幀隊(duì)列,根據(jù)快進(jìn)或后退指令重新定位視頻文件的播放位置,然后解碼所述視頻文件,將解碼后的圖像幀放在內(nèi)存幀隊(duì)列中,依次顯示每一圖像幀,并且在接收到前進(jìn)或倒退指令的同時(shí)向各拼接屏處理器發(fā)送前進(jìn)或倒退指令;其中,播放控制終端在顯示每一圖像幀之前向外廣播該要顯示的圖像幀的時(shí)間戳;
各拼接屏處理器收到前進(jìn)或后退指令后,清空拼接屏處理器的內(nèi)存幀隊(duì)列,根據(jù)快進(jìn)或后退指令重新定位視頻文件的播放位置,然后基于該重新定位的播放位置解碼視頻文件,將解碼后的圖像幀放在內(nèi)存幀隊(duì)列中,根據(jù)播放控制終端廣播的時(shí)間戳,查找出與該時(shí)間戳一致的圖像幀,并根據(jù)開(kāi)窗指令所包含的視頻畫(huà)面顯示區(qū)域信息在播放窗口中顯示圖像。
[0019]進(jìn)一步地,該拼接屏系統(tǒng)播放視頻的方法包括以下步驟:
播放控制終端接收到外部輸入的停止指令時(shí),清空播放控制終端的內(nèi)存幀隊(duì)列,停止顯示圖像幀和解碼,將視頻文件的播放位置定位在視頻文件的起始位置,并且在接收到停止指令的同時(shí)向各所述拼接屏處理器發(fā)送停止指令;
各拼接屏處理器收到停止指令后,清空拼接屏處理器的內(nèi)存幀隊(duì)列,停止顯示圖像幀和解碼,將視頻文件的播放位置定位在視頻文件的起始位置。
[0020]進(jìn)一步地,該拼接屏系統(tǒng)播放視頻的方法包括以下步驟:
播放控制終端接收到外部輸入的暫停指令時(shí),停止顯示圖像幀和解碼,并在接收到暫停指令的同時(shí)向各拼接屏處理器發(fā)送暫停指令;
各拼接屏處理器收到暫停指令后,停止顯示圖像幀和解碼。
[0021]以下結(jié)合附圖和具體實(shí)施例對(duì)發(fā)明進(jìn)行更詳細(xì)的說(shuō)明。
[0022]如果希望在拼接屏I上播放視頻文件ABC.MP4,本發(fā)明的方法包括以下步驟: 步驟S1、將