本技術(shù)實(shí)施例涉及視頻領(lǐng)域,具體涉及一種視頻平滑播放方法和裝置。
背景技術(shù):
1、視頻傳輸系統(tǒng)中,視頻從發(fā)送端經(jīng)過(guò)采集、前處理、編碼、分包,再經(jīng)過(guò)網(wǎng)絡(luò)傳輸?shù)浇邮斩?,在接收端?jīng)過(guò)組幀、解碼、后處理再輸出到顯示設(shè)備進(jìn)行渲染。
2、然而,大部分設(shè)備顯示的頻率是固定的,比如60赫茲(hertz,hz)、120hz。若同一時(shí)刻輸入到渲染管道的幀太多,會(huì)引起視頻幀的丟失、離屏緩沖的拷貝阻塞或者排隊(duì)現(xiàn)象,輸入幀少了也會(huì)喪失平滑的作用。這些情況都會(huì)降低實(shí)際的播放體驗(yàn)。
3、因此,如何提升接收端的播放體驗(yàn),是一個(gè)亟待解決的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)實(shí)施例提供一種視頻平滑播放方法和裝置,抖動(dòng)緩沖器能夠通過(guò)目標(biāo)幀率和圖像到達(dá)幀率實(shí)時(shí)確定向顯示設(shè)備發(fā)送的視頻幀數(shù)量,并以顯示設(shè)備垂直同步周期的倍數(shù)為時(shí)間間隔向顯示設(shè)備發(fā)送視頻幀,減少了視頻幀丟失帶來(lái)的播放抖動(dòng)問(wèn)題,提高了接收端的播放體驗(yàn)。
2、第一方面,提供了一種視頻平滑播放方法,該方法應(yīng)用于視頻傳輸系統(tǒng)中,所述視頻傳輸系統(tǒng)包括發(fā)送端和接收端,所述接收端包括抖動(dòng)緩沖器和顯示設(shè)備,所述方法包括:所述抖動(dòng)緩沖器獲取目標(biāo)幀率和圖像到達(dá)幀率,所述目標(biāo)幀率為所述發(fā)送端傳輸多個(gè)視頻幀的幀率,所述圖像到達(dá)幀率為所述抖動(dòng)緩沖器在預(yù)設(shè)時(shí)段內(nèi)接收所述多個(gè)視頻幀的頻率,所述預(yù)設(shè)時(shí)段的結(jié)束時(shí)刻為所述抖動(dòng)緩沖器接收到第一視頻幀的時(shí)刻,所述第一視頻幀為所述多個(gè)視頻幀中的任一個(gè);所述抖動(dòng)緩沖器根據(jù)所述目標(biāo)幀率和所述圖像到達(dá)幀率的大小,確定所述抖動(dòng)緩沖器中存儲(chǔ)的視頻幀數(shù)量;所述抖動(dòng)緩沖器向所述顯示設(shè)備發(fā)送所述抖動(dòng)緩沖器中保留的視頻幀,其中,所述發(fā)送所述抖動(dòng)緩沖器中保留的視頻幀的時(shí)間間隔為所述顯示設(shè)備的垂直同步周期的n倍,n為大于或者等于1的整數(shù)。
3、本技術(shù)實(shí)施例提供一種視頻平滑播放方法,抖動(dòng)緩沖器能夠通過(guò)目標(biāo)幀率和圖像到達(dá)幀率實(shí)時(shí)確定向顯示設(shè)備發(fā)送的視頻幀數(shù)量,并以顯示設(shè)備垂直同步周期的倍數(shù)為時(shí)間間隔向顯示設(shè)備發(fā)送視頻幀,減少了視頻幀丟失帶來(lái)的播放抖動(dòng)問(wèn)題,提高了接收端的播放體驗(yàn)。
4、應(yīng)理解,發(fā)送端也可以稱(chēng)為視頻采集端,接收端也可以稱(chēng)為視頻播放端,抖動(dòng)緩沖器也可以稱(chēng)為抖動(dòng)緩沖區(qū)。本技術(shù)對(duì)具體的名稱(chēng)不做限制。
5、目標(biāo)幀率可以是視頻在發(fā)送端經(jīng)過(guò)編碼后傳輸?shù)膸剩邮斩丝梢酝ㄟ^(guò)信令協(xié)商獲得此信息。
6、示例性地,預(yù)設(shè)時(shí)段的時(shí)長(zhǎng)可以是1秒、0.5秒、0.8秒、1.5秒等,本技術(shù)對(duì)具體的時(shí)長(zhǎng)不做限定。例如,每當(dāng)抖動(dòng)緩沖器接收到一張待顯示的圖像,計(jì)算此刻往前預(yù)設(shè)時(shí)長(zhǎng)內(nèi)圖像到達(dá)的頻率,作為圖像到達(dá)幀率,這張待顯示的圖像即為第一視頻幀。
7、垂直同步周期為顯示設(shè)備屏幕刷新率的倒數(shù)。示例性地,顯示設(shè)備的屏幕刷新率為90hz,則垂直同步周期約為11毫秒(ms)。應(yīng)理解,抖動(dòng)緩沖器向顯示設(shè)備發(fā)送抖動(dòng)緩沖器中保留的視頻幀的時(shí)間間隔為顯示設(shè)備的垂直同步周期的n倍,這樣開(kāi)啟垂直同步之后,顯卡實(shí)際渲染的幀數(shù)就不會(huì)超過(guò)顯示器的刷新率,解決了屏幕撕裂和抖動(dòng)的問(wèn)題。
8、結(jié)合第一方面,在第一方面的某些實(shí)現(xiàn)方式中,所述抖動(dòng)緩沖器根據(jù)所述目標(biāo)幀率和所述圖像到達(dá)幀率的大小,確定所述抖動(dòng)緩沖器中存儲(chǔ)的視頻幀數(shù)量,包括:若所述圖像到達(dá)幀率大于所述目標(biāo)幀率,所述抖動(dòng)緩沖器丟棄m個(gè)視頻幀,n等于1,m為大于或者等于1的整數(shù)。
9、示例性地,目標(biāo)幀率為60hz,實(shí)時(shí)到達(dá)幀率為70hz,表示抖動(dòng)緩沖器每秒收到的圖像比期望的多了10個(gè),這意味著之前視頻播放存在延遲,實(shí)時(shí)延遲約為(70-60)×(1000/60)=167ms,并且表明此刻視頻幀聚集到達(dá)。一旦視頻幀聚集到達(dá),可以加速播放,示例性地,可以丟棄1至10個(gè)視頻幀。
10、本技術(shù)實(shí)施例提供了一種視頻平滑播放方法,當(dāng)圖像的實(shí)時(shí)到達(dá)幀率大于目標(biāo)幀率時(shí),能夠通過(guò)主動(dòng)丟棄部分視頻幀來(lái)加速播放,避免了輸送到渲染管道的視頻幀數(shù)量過(guò)多造成的渲染抖動(dòng)。
11、結(jié)合第一方面,在第一方面的某些實(shí)現(xiàn)方式中,在所述抖動(dòng)緩沖器丟棄m個(gè)視頻幀之前,所述方法還包括:所述抖動(dòng)緩沖器獲取所述顯示設(shè)備的應(yīng)用的延遲收斂周期,所述延遲收斂周期為所述應(yīng)用預(yù)設(shè)的能夠等待播放的最長(zhǎng)延遲時(shí)間;所述抖動(dòng)緩沖器根據(jù)所述延遲收斂周期確定m的取值。
12、示例性地,為向上取整符號(hào),x為所述圖像到達(dá)幀率,y為所述目標(biāo)幀率,z為所述延遲收斂周期,x和y的單位為赫茲,z的單位為毫秒。當(dāng)z的單位為秒時(shí),示例性地,應(yīng)用設(shè)置的延遲收斂周期為134ms,表示最多容忍134ms的延遲,目標(biāo)幀率為60hz,實(shí)時(shí)到達(dá)幀率為70hz,則根據(jù)之前的延遲計(jì)算結(jié)果,需要丟棄2幀圖像來(lái)追幀。
13、可選的,抖動(dòng)緩沖器根據(jù)延遲收斂周期確定丟棄視頻幀的數(shù)量的公式也可以是或等,該具體公式不應(yīng)理解為對(duì)本技術(shù)的限制。
14、本技術(shù)實(shí)施例提供了一種視頻平滑播放方法,可定義期望延遲來(lái)調(diào)整抖動(dòng)緩沖器的輸出/丟幀策略,保證了視頻的平滑播放,提高了接收端的播放體驗(yàn)。
15、結(jié)合第一方面,在第一方面的某些實(shí)現(xiàn)方式中,所述圖像到達(dá)幀率小于所述目標(biāo)幀率,n大于1。
16、如果圖像到達(dá)幀率比目標(biāo)幀率要小,表示此時(shí)正在慢放,為了提升視頻播放體驗(yàn),也需要基于垂直同步周期時(shí)間進(jìn)行渲染,保證每幀的渲染間隔為垂直同步周期的倍數(shù),即抖動(dòng)緩沖器向顯示設(shè)備發(fā)送視頻幀的時(shí)間間隔為顯示設(shè)備的垂直同步周期的n倍。
17、本技術(shù)實(shí)施例提供了一種視頻平滑播放方法,當(dāng)圖像的實(shí)時(shí)到達(dá)幀率小于目標(biāo)幀率時(shí),抖動(dòng)緩沖器向顯示設(shè)備發(fā)送視頻幀的時(shí)間間隔為顯示設(shè)備的垂直同步周期的n倍,n大于1,保證每幀的渲染間隔為垂直同步周期的倍數(shù),減少了屏幕撕裂和抖動(dòng)的問(wèn)題,提高了接收端的播放體驗(yàn)。
18、結(jié)合第一方面,在第一方面的某些實(shí)現(xiàn)方式中,所述第一視頻幀包括經(jīng)過(guò)解碼后的視頻幀。
19、應(yīng)理解,現(xiàn)有技術(shù)在接收端視頻幀組合成功之后不會(huì)立即將視頻幀送到解碼器,而是送到抖動(dòng)緩沖器中,本技術(shù)提供的技術(shù)方案則是將視頻幀直接輸送到解碼器進(jìn)行解碼。即本技術(shù)實(shí)施例中的抖動(dòng)緩沖器可以位于接收端渲染模塊之前、解碼器和后處理模塊之后,存儲(chǔ)的是經(jīng)過(guò)解碼后的視頻幀,例如可以是亮度色度yuv格式或者紅綠藍(lán)rgb格式的視頻幀,降低了解碼和后處理過(guò)程中抖動(dòng)帶來(lái)的影響,提高了接收端的播放體驗(yàn)。
20、第二方面,本技術(shù)實(shí)施例提供一種計(jì)算機(jī)裝置,該計(jì)算機(jī)裝置包括用于實(shí)現(xiàn)第一方面或第一方面的任一種可能的實(shí)現(xiàn)方式的單元。
21、第三方面,本技術(shù)實(shí)施例提供一種計(jì)算機(jī)裝置,該計(jì)算機(jī)裝置包括處理器,該處理器用于與存儲(chǔ)器耦合,讀取并執(zhí)行該存儲(chǔ)器中的指令和/或程序代碼,以執(zhí)行第一方面或第一方面的任一種可能的實(shí)現(xiàn)方式。
22、可選地,該處理器可以是通用處理器,可以通過(guò)硬件來(lái)實(shí)現(xiàn)也可以通過(guò)軟件來(lái)實(shí)現(xiàn)。當(dāng)通過(guò)硬件實(shí)現(xiàn)時(shí),該處理器可以是邏輯電路、集成電路等;當(dāng)通過(guò)軟件來(lái)實(shí)現(xiàn)時(shí),該處理器可以是一個(gè)通用處理器,通過(guò)讀取存儲(chǔ)器中存儲(chǔ)的軟件代碼來(lái)實(shí)現(xiàn),該存儲(chǔ)器可以集成在處理器中,可以位于該處理器之外,獨(dú)立存在。
23、第四方面,本技術(shù)實(shí)施例提供一種芯片系統(tǒng),該芯片系統(tǒng)包括邏輯電路,該邏輯電路用于與輸入/輸出接口耦合,通過(guò)該輸入/輸出接口傳輸數(shù)據(jù),以執(zhí)行第一方面或第一方面任一種可能的實(shí)現(xiàn)方式。
24、第五方面,本技術(shù)實(shí)施例提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有程序代碼,當(dāng)該計(jì)算機(jī)存儲(chǔ)介質(zhì)在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)執(zhí)行如第一方面或第一方面的任一種可能的實(shí)現(xiàn)方式。
25、作為示例,這些計(jì)算機(jī)可讀存儲(chǔ)包括但不限于如下的一個(gè)或者多個(gè):只讀存儲(chǔ)器(read-only?memory,rom)、可編程rom(programmable?rom,prom)、可擦除的prom(erasableprom,eprom)、flash存儲(chǔ)器、電eprom(electrically?eprom,eeprom)以及硬盤(pán)驅(qū)動(dòng)器(harddrive)。
26、可選地,作為一種實(shí)現(xiàn)方式,上述存儲(chǔ)介質(zhì)具體可以是非易失性存儲(chǔ)介質(zhì)。
27、第六方面,本技術(shù)實(shí)施例提供一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括:計(jì)算機(jī)程序代碼,當(dāng)該計(jì)算機(jī)程序代碼在計(jì)算機(jī)上運(yùn)行時(shí),使得該計(jì)算機(jī)執(zhí)行如第一方面或第一方面的任一種可能的實(shí)現(xiàn)方式。