專(zhuān)利名稱(chēng):預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,特別涉及一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的方法和裝置。
背景技術(shù):
視頻業(yè)務(wù)是把數(shù)據(jù)實(shí)時(shí)從服務(wù)端下載到移動(dòng)終端進(jìn)行播放,其最大的特點(diǎn)是用戶(hù)不必等到整個(gè)文件全部下載完畢,而只需經(jīng)過(guò)幾秒或十?dāng)?shù)秒的啟動(dòng)時(shí)延即可使用。
一見(jiàn)頻業(yè)務(wù)使用的傳輸協(xié)議有RTP (Real-time Transport Protocol,實(shí)時(shí)傳輸協(xié)議)、RTCP (RTP Control Protocol, RTP控制協(xié)議)和RTSP ( Real-Time StreamingProtocol,實(shí)時(shí)流媒體協(xié)議)。RTSP在體系結(jié)構(gòu)上位于RTP和RTCP之上。它使用TCP或RTP完成數(shù)據(jù)傳輸。
現(xiàn)有技術(shù)中,發(fā)送端將一個(gè)^L頻幀分割成若干個(gè)RTP包,然后將這些RTP包以SDU ( Service Data Unit,服務(wù)數(shù)據(jù)單元)為載體發(fā)送到無(wú)線(xiàn)網(wǎng)絡(luò)中進(jìn)行傳輸。如圖l所示,其為:f見(jiàn)頻幀的分包與承載示意圖。接收端接收到SDU,從而獲得RTP包,然后將屬于同一個(gè)視頻幀的RTP包組合成為一個(gè)視頻幀,最后將組合后的視頻幀按照順序 一幀 一幀地進(jìn)行播放。
視頻播放過(guò)程中往往會(huì)出現(xiàn)跳頻、馬賽克現(xiàn)象,主要是丟包引起,其中包括時(shí)延丟包。時(shí)延丟包含義為終端按順序播放視頻幀,每一幀都有固定的播放時(shí)刻,如果視頻數(shù)據(jù)晚于其播放時(shí)刻到達(dá)終端就稱(chēng)之為時(shí)延,該數(shù)據(jù)沒(méi)有任何用處,會(huì)被終端丟棄,即產(chǎn)生時(shí)延丟包。
現(xiàn)有技術(shù)尚不能在網(wǎng)絡(luò)側(cè)預(yù)測(cè)等待發(fā)送的視頻幀是否會(huì)發(fā)生時(shí)延。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例公開(kāi)了 一種能夠在網(wǎng)絡(luò)側(cè)預(yù)測(cè)視頻業(yè)務(wù)是否發(fā)生時(shí)延的方法和裝置,以提高^(guò)L頻業(yè)務(wù)傳輸?shù)男?,所述方案如?br>
本發(fā)明實(shí)施例公開(kāi)了 一種預(yù)測(cè)碎見(jiàn)頻業(yè)務(wù)發(fā)生時(shí)延的方法,包括預(yù)測(cè)接收端正在播放的視頻幀的序列號(hào);獲取發(fā)送端等待發(fā)送的視頻幀的序列號(hào);
如果所述接收端正在播放的視頻幀的序列號(hào)大于或等于所述發(fā)送端等待發(fā)送的視頻幀的序列號(hào),判斷所述發(fā)送端等待發(fā)送的視頻幀會(huì)發(fā)生時(shí)延。
本發(fā)明實(shí)施例還公開(kāi)了 一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的方法,包括 預(yù)測(cè)接收端正在播放的視頻幀的SDU的序列號(hào); 獲耳又發(fā)送端等待發(fā)送的SDU的序列號(hào);
如果所述接收端正在播;故的視頻幀的SDU的序列號(hào)大于或者等于所述發(fā)送
端等待發(fā)送的SDU的序列號(hào),判斷所述發(fā)送端等待發(fā)送的SDU會(huì)發(fā)生時(shí)延。 本發(fā)明實(shí)施例還公開(kāi)了一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的裝置,包括 第一預(yù)測(cè)單元,用于預(yù)測(cè)接收端正在播放的視頻幀的序列號(hào); 第一獲取單元,用于獲取發(fā)送端等待發(fā)送的視頻幀的序列號(hào); 第一時(shí)延判斷單元,用于如果所述第一預(yù)測(cè)單元預(yù)測(cè)的視頻幀的序列號(hào)大
于或者等于所述第一獲取單元獲取的視頻幀的序列號(hào),判斷所述第一獲取單元
獲取的^L頻幀會(huì)發(fā)生時(shí)延。
本發(fā)明實(shí)施例還公開(kāi)了一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的裝置,包括 第二預(yù)測(cè)單元,用于預(yù)測(cè)接收端正在播放的^見(jiàn)頻幀的SDU的序列號(hào); 第二獲取單元,用于獲取發(fā)送端等待發(fā)送的SDU的序列號(hào); 第三時(shí)延判斷單元,用于如果所述第二預(yù)測(cè)單元預(yù)測(cè)的SDU的序列號(hào)大于
或者等于所述第二獲取單元獲取的SDU的序列號(hào),判斷所述第二獲取單元獲取
的SDU會(huì)發(fā)生時(shí)延。
本發(fā)明實(shí)施例提供的方法和裝置,能夠在網(wǎng)絡(luò)側(cè)預(yù)測(cè)視頻幀是否會(huì)發(fā)生時(shí)
延,以便網(wǎng)絡(luò)側(cè)采取相應(yīng)的措施,提高網(wǎng)絡(luò)傳輸?shù)男省?br>
圖1為現(xiàn)有技術(shù)中視頻幀、RTP和SDU的對(duì)應(yīng)關(guān)系; 圖2為本發(fā)明實(shí)施例一提供的一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的方法的流程圖; 圖3為本發(fā)明實(shí)施例二提供的一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的方法的流程圖; 圖4為本發(fā)明實(shí)施例三提供的一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的裝置的結(jié)構(gòu)圖; 圖5為本發(fā)明實(shí)施例四提供的一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的裝置的結(jié)構(gòu)圖; 圖6為本發(fā)明實(shí)施例中所使用到的第 一記錄表和第二記錄表的數(shù)據(jù)結(jié)構(gòu)圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明
7的幾個(gè)實(shí)施例作進(jìn)一步地詳細(xì)的描述。 實(shí)施例一
參見(jiàn)圖2,為本發(fā)明實(shí)施例一提供的一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的方法的示
意圖,包括如下步驟
步驟201,預(yù)測(cè)接收端正在播放的視頻幀的序列號(hào)。
即估算接收端當(dāng)前時(shí)刻正在播放的視頻幀的序列號(hào), 一般情況下采用視頻 幀的時(shí)間戳作為視頻幀的序列號(hào)。
預(yù)測(cè)接收端正在播放的視頻幀的序列號(hào),其具體實(shí)現(xiàn)方式,例如,獲取接 收端的播放時(shí)長(zhǎng)和接收端的播放速度,然后估算出當(dāng)前時(shí)刻接收端正在播放的 視頻幀的序列號(hào)。
或者,獲取接收端反饋的網(wǎng)絡(luò)反饋信息RTCP包,該RTCP包中包含一個(gè)或多 個(gè)字段攜帶接收端將被解碼的SDU的序列號(hào),通過(guò)該RTCP包來(lái)估算接收端正在 播放的視頻幀的序列號(hào)。
當(dāng)接收端的應(yīng)用程序開(kāi)始一個(gè)RTP會(huì)話(huà)時(shí)會(huì)使用兩個(gè)端口 一個(gè)給RTP用來(lái) 傳輸業(yè)務(wù)數(shù)據(jù), 一個(gè)給RTCP用來(lái)進(jìn)行傳輸控制。在視頻業(yè)務(wù)傳輸?shù)倪^(guò)程中,RTCP 會(huì)周期性上報(bào)網(wǎng)絡(luò)反饋信息給發(fā)送端,以便于發(fā)送端采取相應(yīng)的措施,如進(jìn)行 傳輸?shù)目煽啃钥刂?、流量控制或擁塞控制等?br>
具體的實(shí)現(xiàn)方法,例如,當(dāng)發(fā)送端的網(wǎng)絡(luò)側(cè)接收到來(lái)自于接收端的網(wǎng)絡(luò)反 饋信息RTCP包后,從該網(wǎng)絡(luò)反饋信息中解析出下一個(gè)需要被解碼的RTP包的 序列號(hào)(即SDU的序列號(hào)),通過(guò)此序列號(hào),就可以得到該SDU包所對(duì)應(yīng)的視 頻幀的序列號(hào),該視頻幀為接收端下一個(gè)將被播放的視頻幀。
可以通過(guò)如下方式得到下一個(gè)將被播放的視頻幀的序列號(hào)。例如,設(shè)計(jì)一 個(gè)第一記錄表(參見(jiàn)圖6),記錄RTP包的序列號(hào)(即SDU的序列號(hào))和SDU 所屬的視頻幀的序列號(hào)之間的對(duì)應(yīng)關(guān)系。當(dāng)獲得了下一個(gè)將被解碼的SDU的序 列號(hào)之后,就可以從第一記錄表檢索出SDU所屬的視頻幀序列號(hào),這個(gè)視頻幀 序列號(hào)就是下一個(gè)將被播放的視頻幀的序列號(hào)。
然后通過(guò)該下一個(gè)將被播放的視頻幀的序列號(hào)估算接收端當(dāng)前正在播放的 視頻幀的序列號(hào)。
一般情況下,相鄰視頻幀的序列號(hào)相差一個(gè)時(shí)間戳。例如,如果幀率為10 幀/s,表示單位時(shí)間內(nèi)有10個(gè)幀,如果幀的時(shí)間戳從0開(kāi)始,那么可以推算出 視頻幀依次所對(duì)應(yīng)的時(shí)間戳為0、0.1、0.2.....0.9 1.0。如果視頻幀的序列號(hào)為11.0,
8則相鄰的上一個(gè)視頻幀的序列號(hào)就為10.9,序列號(hào)之間相差1個(gè)時(shí)間戳即0.1。 時(shí)間戳一般等于幀率的倒數(shù),但可能會(huì)有些偏差。
因此,可以將估算值設(shè)置為一個(gè)時(shí)間戳,用下一個(gè)將要播放的視頻幀的序 列號(hào)減去該估算值即可得到接收端正在播放的視頻幀。如果網(wǎng)絡(luò)延遲的比較厲 害,接收端也有可能跳過(guò)下一個(gè)播放的視頻幀,在這種情況下,可以將估算值 設(shè)置為零或者負(fù)數(shù),估算值的絕對(duì)值等于時(shí)間戳的整數(shù)倍,再用下一個(gè)播放的 視頻幀的序列號(hào)減去該估算值,得到接收端正在播放的視頻幀的序列號(hào)。
估算值也可以設(shè)置為 一個(gè)與網(wǎng)絡(luò)延遲狀況相關(guān)的系數(shù),網(wǎng)絡(luò)延遲越厲害, 則估算值應(yīng)當(dāng)越小,然后用接收端下一個(gè)將要播放的視頻幀減去該估算值得到 接收端正在播放的視頻幀的序列號(hào)。
網(wǎng)絡(luò)側(cè)也可以通過(guò)其它方式預(yù)測(cè)接收端當(dāng)前播放的視頻幀,例如,依據(jù)視 頻幀的序列號(hào)的大小,將網(wǎng)絡(luò)側(cè)已經(jīng)成功發(fā)送的視頻幀的序列號(hào)全部記錄到記 錄表中,當(dāng)?shù)玫较乱粋€(gè)將要播放的視頻幀的序列號(hào)之后,從該記錄表中檢索出 與該下一個(gè)將要播放的視頻幀的序列號(hào)最接近的那個(gè)視頻幀。
需要注意的是,此處所稱(chēng)的接收端正在播放的視頻幀,僅僅是一種預(yù)測(cè), 并不代表接收端當(dāng)前實(shí)際播放的視頻幀,也不限于接收端實(shí)際播放的視頻幀。 完全可以使用其它視頻幀作為當(dāng)前播放的視頻幀。例如可以直接將需要解碼的
下一個(gè)RTP所對(duì)應(yīng)的視頻幀作為當(dāng)前播放的視頻幀,或者將該視頻幀的序列號(hào) 直接減去一定的數(shù)值作為接收端正在播放的視頻幀。 步驟202,獲取發(fā)送端等待發(fā)送的視頻幀的序列號(hào)。
視頻幀都是以SDU的形式進(jìn)行傳輸?shù)模鳛榘l(fā)送端的網(wǎng)絡(luò)側(cè),也需要從其 它網(wǎng)元獲取SDU,同時(shí)發(fā)送端可能存在多個(gè)SDU等待發(fā)送。發(fā)送端可以從等待 發(fā)送的SDU隊(duì)列中選擇一個(gè)SDU,獲取該SDU所屬的視頻幀,該視頻幀即為 發(fā)送端等待發(fā)送的視頻幀。
其具體實(shí)現(xiàn)方式,例如,設(shè)計(jì)一個(gè)第二記錄表(參見(jiàn)圖6),只記錄當(dāng)前需 要傳輸?shù)腟DU,以及SDU和所屬視頻幀之間的對(duì)應(yīng)關(guān)系。從第二記錄表中選擇 序列號(hào)最小的SDU,并從第二記錄表中獲取該SDU所屬的視頻幀的序列號(hào)。當(dāng) 該SDU成功發(fā)送之后,將其從第二記錄表中刪除。
進(jìn)一步的,步驟202可以只獲取需要重傳的SDU所對(duì)應(yīng)的視頻幀的序列號(hào)。 SDU在傳輸過(guò)程中可能會(huì)發(fā)生錯(cuò)誤,需要重傳,重傳超過(guò)一定次數(shù)便容易發(fā)生 時(shí)延??梢圆捎靡粋€(gè)第二記錄表實(shí)現(xiàn)這一功能,例如第二記錄表中只記錄需要
9重傳的SDU,從而進(jìn)一步提高效率。
步驟201和202的執(zhí)行順序可以互相調(diào)換。
步驟203,判斷發(fā)送端等待發(fā)送的視頻幀是否會(huì)發(fā)生時(shí)延。
如果接收端正在播放的視頻幀的序列號(hào)大于或等于發(fā)送端等待發(fā)送的視頻 幀的序列號(hào),即步驟201預(yù)測(cè)的視頻幀的序列號(hào)大于或等于步驟202獲取的視 頻幀的序列號(hào),判斷步驟202獲取的視頻幀會(huì)發(fā)生時(shí)延。
發(fā)明人發(fā)現(xiàn),通常情況下,作為用戶(hù)的接收端,在時(shí)間上將會(huì)先播放序列 號(hào)小的視頻幀,后播放序列號(hào)大的視頻幀,序列號(hào)本身隱含了播放時(shí)間的信息。
因此,如果接收端正在播放的視頻幀的序列號(hào)大于等于發(fā)送端等待發(fā)送的 視頻幀的序列號(hào),則該發(fā)送端等待發(fā)送的視頻幀的播放時(shí)間已經(jīng)過(guò)去了,即便 該等待發(fā)送的視頻幀到達(dá)接收端,其結(jié)果也是發(fā)生時(shí)延;反之,如果發(fā)送端等 待發(fā)送的視頻幀不會(huì)發(fā)生時(shí)延,則序列號(hào)比發(fā)送端等待發(fā)送的視頻幀大的視頻 幀也可能不會(huì)發(fā)生時(shí)延。
所以,實(shí)施例一可以進(jìn)一步包括步驟,在步驟203判斷發(fā)送端等待發(fā)送的 視頻幀會(huì)發(fā)生時(shí)延后,獲取所述發(fā)送端等待發(fā)送的其它視頻幀的序列號(hào),如果 所述發(fā)送端等待發(fā)送的視頻幀不會(huì)發(fā)生時(shí)延,判斷所述其它視頻幀中序列號(hào)比 所述發(fā)送端等待發(fā)送的視頻幀大的視頻幀也不會(huì)發(fā)生時(shí)延。
其實(shí)現(xiàn)方式,例如,可以利用步驟202的第二記錄表,將第二記錄表按照 視頻幀的序列號(hào)從小到大的方式進(jìn)行排序,如果發(fā)送端等待發(fā)送的視頻幀不會(huì) 發(fā)生時(shí)延,則笫二記錄表中排在發(fā)送端等待發(fā)送的視頻幀下面的視頻幀也不會(huì) 發(fā)生時(shí)延,如此可極大的提高效率。
現(xiàn)有技術(shù)尚不能在網(wǎng)絡(luò)側(cè)預(yù)測(cè)未發(fā)送的視頻幀是否會(huì)發(fā)生時(shí)延,本實(shí)施例 提供了 一種預(yù)測(cè)的方法,可以方便網(wǎng)絡(luò)側(cè)預(yù)測(cè)等待發(fā)送的視頻幀是否會(huì)發(fā)生時(shí) 延,從而采糾目應(yīng)的措施,提高網(wǎng)絡(luò)的效率。
實(shí)施例二
如圖3所示,為本發(fā)明實(shí)施例二提供的一種預(yù)測(cè);規(guī)頻業(yè)務(wù)發(fā)生時(shí)延的方法
的示意圖,包括如下步驟
步驟301,預(yù)測(cè)接收端正在播放的視頻幀的SDU的序列號(hào)。 即估算接收端當(dāng)前時(shí)刻正在播放的視頻幀的SDU的序列號(hào)。其具體實(shí)現(xiàn)方
式, 一種是通過(guò)接收端的播放時(shí)長(zhǎng)和接收端的播放速度,估算出當(dāng)前時(shí)刻,接收端正在播放的視頻幀的序列號(hào),然后獲取該視頻幀的 一個(gè)SDU的序列號(hào)。
另一種方法是通過(guò)網(wǎng)絡(luò)反饋信息來(lái)計(jì)算接收端正在播放的視頻幀的SDU的 序列號(hào)。例如,可以通過(guò)在網(wǎng)絡(luò)反饋信息中增加一個(gè)字段,用來(lái)攜帶接收端下 一個(gè)將要被解碼的SDU序列號(hào)。有了這個(gè)序列號(hào),就可以得到SDU所對(duì)應(yīng)的視 頻幀的序列號(hào),利用該視頻幀的序列號(hào)即可推測(cè)接收端正在播放的視頻幀的序 列號(hào),然后選擇正在播放的視頻幀的一個(gè)SDU的序列號(hào)。具體而言,可通過(guò)如 下步驟來(lái)預(yù)測(cè)接收端正在播放的視頻幀的SDU的序列號(hào)。
第一步,獲取當(dāng)前來(lái)自于所述接收端的網(wǎng)絡(luò)反饋信息。
即獲取當(dāng)前來(lái)自于接收端的網(wǎng)絡(luò)反饋信息RTCP包,RTCP包中的一個(gè)或多 個(gè)字段攜帶了接收端將要被解碼的SDU的序列號(hào)。
第二步,解析所述網(wǎng)絡(luò)反饋信息。
即從網(wǎng)絡(luò)反饋信息RTCP包中,解析接收端下一個(gè)將被解碼的SDU的序列
—弓—
第三步,獲取接收端下一個(gè)將被解碼的浮見(jiàn)頻幀的序列號(hào)。 例如,可以設(shè)計(jì)一個(gè)第一記錄表,記錄RTP包的序列號(hào)(即SDU的序列號(hào)) 和SDU所屬的視頻幀的序列號(hào)之間的對(duì)應(yīng)關(guān)系。當(dāng)獲得了下一個(gè)將被解碼的 SDU的序列號(hào)之后,就可以從第一記錄表檢索出SDU所屬的視頻幀序列號(hào),這 個(gè)視頻幀序列號(hào)就是下一個(gè)將被播放的視頻幀的序列號(hào)。 第四步,估算接收端當(dāng)前播放的視頻幀的序列號(hào)。
即利用第三步所獲得的下一個(gè)將被播放的視頻幀的序列號(hào),減去一個(gè)估算 值,就可以估算出接收端當(dāng)前正在播放的視頻幀的序列號(hào)??梢詫⒐浪阒翟O(shè)置 為一個(gè)時(shí)間戳;如果網(wǎng)絡(luò)延遲的比較厲害,接收端也有可能跳過(guò)下一個(gè)播放的 視頻幀,在這種情況下,可以將估算值設(shè)置為零或者負(fù)數(shù),估算值的絕對(duì)值等 于時(shí)間戳的整數(shù)倍。
第五步,獲取屬于當(dāng)前播放的視頻幀的一個(gè)SDU。
一個(gè)視頻幀對(duì)應(yīng)多個(gè)SDU,可以從屬于接收端正在播放的視頻幀的SDU中 選摔一個(gè)SDU,例如選擇正在播放的視頻幀中序列號(hào)最大的一個(gè)SDU的序列號(hào), 作為正在播放的視頻幀的SDU的序列號(hào)。
步驟302,獲取發(fā)送端等待發(fā)送的SDU的序列號(hào);
網(wǎng)絡(luò)側(cè)可能存在多個(gè)等待發(fā)送的SDU,發(fā)送端可以從等待發(fā)送的SDU隊(duì)列 中選擇一個(gè)SDU。例如,使用一個(gè)第二記錄表,記錄所有發(fā)送端等待傳送的SDU的序列號(hào), 并選擇序列號(hào)最小的SDU作為發(fā)送端等待發(fā)送SDU。當(dāng)該SDU發(fā)送成功之后, 即將其從第二記錄表中刪除。
進(jìn)一步的,步驟302可以只獲取需要重傳的SDU的序列號(hào),因?yàn)橹貍鞯腟DU 發(fā)生時(shí)延的可能性較大??梢圆捎玫诙涗洷韺?shí)現(xiàn)這一功能,例如第二記錄表 中可以只記錄需要重傳的SDU的序列號(hào),從而提高效率。
步驟301和302的執(zhí)行順序可以互相調(diào)換。
步驟303,判斷所述發(fā)送端等待發(fā)送的SDU是否會(huì)發(fā)生時(shí)延。
如果所述接收端正在播放的視頻幀的SDU的序列號(hào)大于或者等于所述發(fā)送 端等待發(fā)送的SDU的序列號(hào),即步驟301預(yù)測(cè)的SDU的序列號(hào)大于等于步驟 302獲取的SDU的序列號(hào),判斷所述發(fā)送端等待發(fā)送的SDU會(huì)發(fā)生時(shí)延。
發(fā)明人發(fā)現(xiàn), 一般情況下,SDU的序列號(hào)是按照從小到大的方式排序的, 如果序列號(hào)大的SDU所對(duì)應(yīng)的視頻幀已經(jīng)被播放了,說(shuō)明序列號(hào)小的SDU所 對(duì)應(yīng)的視頻幀的播放時(shí)刻已經(jīng)過(guò)去了 ,即如果該SDU到達(dá)接收端將會(huì)發(fā)生時(shí)延。
進(jìn)一步的,本實(shí)施例還可以包括如下步驟,在步驟303判斷步驟302獲取 的SDU會(huì)發(fā)生時(shí)延后,獲取發(fā)送端等待發(fā)送的其它SDU的序列號(hào),判斷所述
現(xiàn)有技術(shù)中,并不能在網(wǎng)絡(luò)側(cè)預(yù)測(cè)尚未發(fā)送的視頻幀的SDU是否會(huì)發(fā)生時(shí)
發(fā)生時(shí)延,從而便于網(wǎng)絡(luò)側(cè)提前作出處理。
實(shí)施例三
如圖4所示,為本發(fā)明實(shí)施例三提供的一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的裝置 的示意圖,包括
第一預(yù)測(cè)單元401 ,用于預(yù)測(cè)接收端正在播放的視頻幀的序列號(hào)。
接收端會(huì)反饋網(wǎng)絡(luò)信息RTCP包,為了獲取接收端正在播放的視頻幀的序 列號(hào),需要在RTCP包中攜帶接收端下一個(gè)將要解碼的SDU的序列號(hào),通過(guò)這 個(gè)序列號(hào),就可以計(jì)算出接收端當(dāng)前正在播放的視頻幀的序列號(hào)。
具體實(shí)現(xiàn)方式,例如,第一預(yù)測(cè)單元401包括反饋信息獲取單元、計(jì)算單元。
反饋信息獲取單元,用于獲取當(dāng)前來(lái)自于接收端的網(wǎng)絡(luò)反饋信息,所述網(wǎng)絡(luò)反饋信息包括一個(gè)或多個(gè)字段,用來(lái)攜帶接收端將要被解碼的SDU的序列號(hào)。 計(jì)算單元,用于當(dāng)反饋信息獲取單元接收到來(lái)自于接收端的網(wǎng)絡(luò)反饋信息
RTCP后,從該網(wǎng)絡(luò)反饋信息中解析出下一個(gè)需要被解碼的RTP包的序列號(hào)(即 SDU的序列號(hào)),通過(guò)此序列號(hào),就可以得到該SDU包所屬的視頻幀的序列號(hào), 該視頻幀為接收端下一個(gè)將被播放的視頻幀,然后利用下一個(gè)將被播放的視頻 幀的序列號(hào),估算接收端當(dāng)前正在播-放的視頻幀的序列號(hào)。具體而言,可通過(guò) 如下子單元進(jìn)行估算
第一記錄表單元,用于記錄RTP包的序列號(hào)(即SDU的序列號(hào))和SDU 所屬的視頻幀的序列號(hào)之間的對(duì)應(yīng)關(guān)系。
解析子單元,用于解析反饋信息獲取單元獲取的網(wǎng)絡(luò)反饋信息,以獲取所 述接收端下一個(gè)將被解碼的SDU的序列號(hào)。
當(dāng)獲得了下一個(gè)將被解碼的SDU的序列號(hào)之后,估算子單元就可以從第一 記錄表單元檢索出解析子單元解析出的SDU所屬的視頻幀,這個(gè)視頻幀的序列 號(hào)就是下一個(gè)將被播放的視頻幀的序列號(hào)。有了下一個(gè)被播放的視頻幀的序列 號(hào),估算子單元將該視頻幀的序列號(hào)減去一個(gè)估算值,就可以估算出接收端當(dāng) 前正在播放的視頻幀的序列號(hào)。至于估算值,可以將估算值設(shè)置為一個(gè)時(shí)間戳; 如果網(wǎng)絡(luò)延遲的比較厲害,接收端也有可能跳過(guò)下一個(gè)播放的視頻幀,在這種 情況下,可以將估算值設(shè)置為零或者負(fù)數(shù),估算值的絕對(duì)值等于一個(gè)或多個(gè)時(shí) 間戳。
當(dāng)前播;改的視頻幀僅作為一種判斷基準(zhǔn),用來(lái)預(yù)測(cè)待發(fā)送的^f見(jiàn)頻幀發(fā)生時(shí) 延的可能性。可以有各種確定方式,并不局限于實(shí)際播放的視頻幀。
第一獲取單元402,用于獲取發(fā)送端等待發(fā)送的視頻幀的序列號(hào)。
^f見(jiàn)頻幀都是以SDU的形式進(jìn)行傳輸?shù)?,作為發(fā)送端的網(wǎng)絡(luò)側(cè),可能存在多 個(gè)SDU等待發(fā)送。發(fā)送端可以從等待發(fā)送的SDU隊(duì)列中選擇一個(gè)SDU,獲取 該SDU所屬的視頻幀,該視頻幀即為發(fā)送端等待發(fā)送的視頻幀。
例如,第一獲取單元402可以包括一個(gè)第二記錄表單元,用于記錄在發(fā)送 端所有需要發(fā)送給接收的SDU,以及SDU和所屬視頻幀之間的對(duì)應(yīng)關(guān)系;第一 獲取單元402還包括一個(gè)檢索子單元,用于從第二記錄表單元中選擇序列號(hào)最 小的SDU,并從第二記錄表中獲取該SDU所屬的視頻幀的序列號(hào),當(dāng)該SDU 成功發(fā)送之后,將其從第二記錄表中刪除。
時(shí)延判斷單元403,用于判斷發(fā)送端等待發(fā)送的視頻幀是否發(fā)生時(shí)延。如果第一預(yù)測(cè)單元401預(yù)測(cè)的接收端正在播放的視頻幀的序列號(hào)大于等于
第一獲取單元402獲取的發(fā)送端等待發(fā)送的視頻幀的序列號(hào),則判斷第一獲取 單元402獲取的發(fā)送端等待發(fā)送的視頻幀會(huì)發(fā)生時(shí)延。
發(fā)明人發(fā)現(xiàn),通常情況下,作為用戶(hù)的接收端,在時(shí)間上將會(huì)先播放序列 號(hào)小的視頻幀,后播放序列號(hào)大的視頻幀,序列號(hào)本身隱含了播放時(shí)間的信息。 因此,如果接收端正在播放的視頻幀的序列號(hào)大于發(fā)送端等待發(fā)送的視頻幀的 序列號(hào),則該發(fā)送端等待發(fā)送的視頻幀的播放時(shí)間已經(jīng)過(guò)去了,即便該等待發(fā) 送的視頻幀到達(dá)接收端,其結(jié)果也是發(fā)生時(shí)延。
本實(shí)施例還可以進(jìn)一步包括第二時(shí)延判斷單元,用于獲取發(fā)送端等待發(fā)送 的其它視頻幀(不包括第一獲取單元402獲取的視頻幀),如果第一時(shí)延判斷單 元403判斷第一獲取單元402獲取的視頻幀不會(huì)發(fā)生時(shí)延,判斷所述其它視頻 幀中序列號(hào)比第一獲取單元402獲取的序列號(hào)大的視頻幀也不會(huì)發(fā)生時(shí)延。
現(xiàn)有技術(shù)中,網(wǎng)絡(luò)側(cè)并不能預(yù)測(cè)尚未發(fā)送的視頻幀是否會(huì)發(fā)生時(shí)延,本實(shí) 施例提供了一種裝置可以預(yù)測(cè)發(fā)送端等待發(fā)送的視頻幀是否會(huì)發(fā)生時(shí)延,從而 便于網(wǎng)絡(luò)側(cè)提前作出處理。
實(shí)施例四
如圖5所示,為本發(fā)明實(shí)施例四所提供的一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的裝 置的示意圖,包括
第二預(yù)測(cè)單元501,用于預(yù)測(cè)接收端正在播放的視頻幀的SDU的序列號(hào)。 預(yù)測(cè)接收端正在播放的視頻幀,獲取正在播放的視頻幀的一個(gè)SDU的序列號(hào)。
可以通過(guò)網(wǎng)絡(luò)反饋信息攜帶接收端下一個(gè)將要被解碼的SDU序列號(hào)。有了 這個(gè)序列號(hào),就可以得到SDU所對(duì)應(yīng)的視頻幀的序列號(hào),該視頻幀的序列號(hào)即 可推測(cè)接收端正在播放的視頻幀的序列號(hào),然后選擇一個(gè)正在播放的視頻幀的 一個(gè)SDU的序列號(hào)。
具體實(shí)現(xiàn)方式,例如,第二預(yù)測(cè)單元可包括如下子單元第一記錄表單元、 網(wǎng)絡(luò)反4責(zé)信息獲取單元、解析子單元、估算子單元和查詢(xún)字單元。
第一記錄表單元,用于記錄RTP包的序列號(hào)(即SDU的序列號(hào))和SDU 所屬的視頻幀的序列號(hào)之間的對(duì)應(yīng)關(guān)系。
網(wǎng)絡(luò)反饋信息獲取單元,用于獲取當(dāng)前來(lái)自于所述接收端的網(wǎng)絡(luò)反饋信息,
14所述網(wǎng)絡(luò)反饋信息包括所述接收端下一個(gè)將被解碼的SDU的序列號(hào)。
解析子單元,用于解析所述網(wǎng)絡(luò)反饋信息獲取單元獲取的網(wǎng)絡(luò)反饋信息,
以得到所述接收端下一個(gè)將被解碼的SDU的序列號(hào)。
估算子單元,用于從解析子單元獲取下一個(gè)將被解碼的SDU的序列號(hào)之后, 從第一記錄表單元檢索出該SDU所屬的視頻幀序列號(hào),這個(gè)視頻幀序列號(hào)就是 下一個(gè)將被播放的視頻幀的序列號(hào),將該視頻幀的序列號(hào)減去一個(gè)估算值即可 估算出接收端正在播放的視頻幀的序列號(hào)。至于估算值的大小,可設(shè)置為一個(gè) 時(shí)間戳,如果網(wǎng)絡(luò)延遲的比較厲害,接收端也有可能跳過(guò)下一個(gè)播放的視頻幀, 在這種情況下,可以將估算值設(shè)置為零或者負(fù)數(shù),估算值的絕對(duì)值等于一個(gè)或 者多個(gè)時(shí)間戳。
查詢(xún)子單元,用于從所述第一記錄表單元檢索屬正在播放的視頻幀的SDU, 由于一個(gè)視頻幀對(duì)應(yīng)多個(gè)SDU,可以選擇正在播放的視頻幀中序列號(hào)最大的一 個(gè)SDU的序列號(hào)。
第二獲取單元502,用于獲取發(fā)送端等待發(fā)送的SDU的序列號(hào)。
網(wǎng)絡(luò)側(cè)可能存在多個(gè)等待發(fā)送的SDU,第二獲取單元502可以從等待發(fā)送 的SDU隊(duì)列中選擇一個(gè)SDU。
例如,使用一個(gè)第二記錄表,記錄所有發(fā)送端等待傳送的SDU的序列號(hào), 并選擇序列號(hào)最小的SDU作為發(fā)送端等待發(fā)送SDU。當(dāng)該SDU發(fā)送成功之后, 即將其從第二記錄表中刪除
第三時(shí)延判斷單元503,用于判斷所述發(fā)送端等待發(fā)送的SDU是否會(huì)發(fā)生 時(shí)延。
如果第二預(yù)測(cè)單元501所預(yù)測(cè)的序列號(hào)大于或者等于第二獲取單元502所 獲得的序列號(hào),第二獲取單元502獲取的SDU會(huì)發(fā)生時(shí)延。
發(fā)明人發(fā)現(xiàn), 一般情況下,SDU的序列號(hào)是按照從小到大的方式排序的, 如果序列號(hào)大的SDU所對(duì)應(yīng)的視頻幀已經(jīng)被播放了 ,說(shuō)明序列號(hào)小的SDU所 對(duì)應(yīng)的視頻幀的播放時(shí)刻已經(jīng)過(guò)去了 ,即如果該SDU到達(dá)接收端將會(huì)發(fā)生時(shí)延。
進(jìn)一步的,本實(shí)施例還可以包括第四時(shí)延判斷單元,用于獲取發(fā)送端等待 發(fā)送的其它SDU,如果第二獲取單元502獲取的SDU不會(huì)發(fā)生時(shí)延,判斷其它 SDU中序列號(hào)比第二獲取單元502獲取的SDU大的SDU也不會(huì)發(fā)生時(shí)延。
現(xiàn)有技術(shù)中,網(wǎng)絡(luò)側(cè)并不能預(yù)測(cè)尚未發(fā)送的SDU是否會(huì)發(fā)生時(shí)延,本實(shí)施 例提供了一種裝置可以預(yù)測(cè)發(fā)送端等待發(fā)送的SDU是否會(huì)發(fā)生時(shí)延,從而便于網(wǎng)絡(luò)側(cè)提前作出處理。
以上所述發(fā)明實(shí)施例可以通過(guò)軟件實(shí)現(xiàn),相應(yīng)的軟件可以存儲(chǔ)在可讀取的 存儲(chǔ)介質(zhì)中,例如計(jì)算機(jī)的硬盤(pán)、光盤(pán)或軟盤(pán)中。
以上所述^f又為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的 精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的 保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的方法,其特征在于,所述方法包括預(yù)測(cè)接收端正在播放的視頻幀的序列號(hào);獲取發(fā)送端等待發(fā)送的視頻幀的序列號(hào);如果所述接收端正在播放的視頻幀的序列號(hào)大于或等于所述發(fā)送端等待發(fā)送的視頻幀的序列號(hào),判斷所述發(fā)送端等待發(fā)送的視頻幀會(huì)發(fā)生時(shí)延。
2、 如權(quán)利要求l所述的方法,其特征在于,所述預(yù)測(cè)接收端正在播放的視 頻幀的序列號(hào)的步驟,包括獲取當(dāng)前來(lái)自于接收端的網(wǎng)絡(luò)反饋信息,所述網(wǎng)絡(luò)反饋信息包括所述接收 端下一個(gè)將被解碼的SDU的序列號(hào);利用所述網(wǎng)絡(luò)反饋信息估算所述接收端正在播放的視頻幀的序列號(hào)。
3、 如權(quán)利要求2所述的方法,其特征在于,所述利用所述網(wǎng)絡(luò)反饋信息預(yù) 測(cè)所述接收端正在播放的視頻幀的序列號(hào)的步驟,包括從所述網(wǎng)絡(luò)反々貴信息中解析出所述接收端下一個(gè)將凈皮解碼的SDU的序列號(hào);從第一記錄表中獲取所述接收端下一個(gè)將被解碼的SDU所屬的視頻幀的序 列號(hào),所述第一記錄表記錄了 SDU和SDU所屬的^L頻幀之間的對(duì)應(yīng)關(guān)系;將所述接收端下一個(gè)將被解碼的SDU所屬的^L頻幀的序列號(hào),減去一個(gè)估 算值所得到的結(jié)果作為所述接收端正在播放的視頻幀的序列號(hào)。
4、 如權(quán)利要求l所述的方法,其特征在于,所述獲取發(fā)送端等待發(fā)送的視 頻幀的序列號(hào)的步驟,包括從第二記錄表中獲取序列號(hào)最小的SDU,所述第二記錄表記錄了所述發(fā)送 端當(dāng)前等待發(fā)送的SDU隊(duì)列及所述等待發(fā)送的SDU所屬視頻幀的序列號(hào);從所述第二記錄表獲取所述序列號(hào)最小的SDU所屬的視頻幀的序列號(hào),作 為所述發(fā)送端等待發(fā)送的視頻幀的序列號(hào)。
5、 如權(quán)利要求l所述的方法,其特征在于,所述方法還包括 獲取所述發(fā)送端等待發(fā)送的其它視頻幀的序列號(hào),如杲所述發(fā)送端等待發(fā)送的視頻幀不會(huì)發(fā)生時(shí)延,判斷所述其它視頻幀中序列號(hào)比所述發(fā)送端等待發(fā) 送的視頻幀大的視頻幀也不會(huì)發(fā)生時(shí)延。
6、 一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的方法,其特征在于,所述方法包括 預(yù)測(cè)接收端正在播放的視頻幀的SDU的序列號(hào); 獲取發(fā)送端等待發(fā)送的SDU的序列號(hào);如果所述接收端正在播放的視頻幀的SDU的序列號(hào)大于或者等于所述發(fā)送 端等待發(fā)送的SDU的序列號(hào),判斷所述發(fā)送端等待發(fā)送的SDU會(huì)發(fā)生時(shí)延。
7、 如權(quán)利要求6所述的方法,其特征在于,所述預(yù)測(cè)接收端正在播放的視 頻幀的SDU的序列號(hào)的步驟包括獲取當(dāng)前來(lái)自于所述接收端的網(wǎng)絡(luò)反饋信息,所述網(wǎng)絡(luò)反饋信息包括所述 接收端下一個(gè)將被解碼的SDU的序列號(hào);解析所述網(wǎng)絡(luò)反饋信息,獲取所述接收端下一個(gè)將被解碼的SDU的序列號(hào);從第一記錄表獲取所述接收端下一個(gè)將被解碼的SDU所屬的視頻幀的序列 號(hào),所述第 一記錄表記錄了 SDU和SDU所屬的視頻幀之間的對(duì)應(yīng)關(guān)系;將所述接收端下一個(gè)將被解碼的SDU所屬的視頻幀的序列號(hào)減去一個(gè)估算 值所得到的結(jié)果作為當(dāng)前播放的視頻幀的序列號(hào);從所述第一記錄表中檢索屬于所述當(dāng)前播放的視頻幀的SDU,取序列號(hào)最 大的SDU的序列號(hào)。
8、 如權(quán)利要求6所述的方法,其特征在于,所述方法還包括 獲取發(fā)送端等待發(fā)送的其它SDU的序列號(hào),如果所述發(fā)送端等待發(fā)送的SDU不會(huì)發(fā)生時(shí)延,判斷所述其它SDU中序列號(hào)比所述發(fā)送端等待發(fā)送的SDU 大的SDU也不會(huì)發(fā)生時(shí)延。
9、 一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的裝置,其特征在于,所述裝置包括 第一預(yù)測(cè)單元,用于預(yù)測(cè)接收端正在播放的視頻幀的序列號(hào);第一獲取單元,用于獲取發(fā)送端等待發(fā)送的^f見(jiàn)頻幀的序列號(hào); 第一時(shí)延判斷單元,用于如果所述第一預(yù)測(cè)單元預(yù)測(cè)的視頻幀的序列號(hào)大 于或者等于所述第一獲取單元獲取的視頻幀的序列號(hào),判斷所述第一獲取單元獲取的纟見(jiàn)頻幀會(huì)發(fā)生時(shí)延。
10、 如權(quán)利要求9所述的裝置,其特征在于,所述第一預(yù)測(cè)單元包括反饋信息獲取單元,用于獲取當(dāng)前來(lái)自于接收端的網(wǎng)絡(luò)反饋信息,所述網(wǎng)絡(luò)反饋信息包括在所述接收端下一個(gè)將被解碼的SDU的序列號(hào);計(jì)算單元,用于依據(jù)所述反饋信息獲取單元獲取的網(wǎng)絡(luò)反饋信息估算所述 接收端正在播放的視頻幀的序列號(hào)。
11、 如權(quán)利要求IO所述的裝置,其特征在于,所述計(jì)算單元包括 第一記錄表單元,用于記錄SDU和視頻幀之間的對(duì)應(yīng)關(guān)系; 解析子單元,用于解析所述反饋信息獲取單元獲取的網(wǎng)絡(luò)反饋信息,以獲取所述接收端下一個(gè)將被解碼的SDU的序列號(hào);估算子單元,用于從所述第一記錄表單元獲取所述解析子單元所解析的SDU所屬的視頻幀的序列號(hào),減去一個(gè)估算值所得到的結(jié)果作為所述接收端正 在播放的視頻幀的序列號(hào)。
12、 如權(quán)利要求9所述的裝置,其特征在于,所述第一獲取單元包括 第二記錄表單元,用于記錄所述發(fā)送端正在等待發(fā)送的SDU隊(duì)列及所述等待發(fā)送的SDU所屬視頻幀的序列號(hào);才全索子單元,用于從所述第二記錄表單元獲取序列號(hào)最小的SDU所屬的視』 頻幀的序列號(hào),作為所述發(fā)送端等待發(fā)送的視頻幀的序列號(hào)。
13、 如權(quán)利要求12所述的裝置,其特征在于,所述裝置還包括 第二時(shí)延判斷單元,用于獲取發(fā)送端等待發(fā)送的其它視頻幀,如果所述第一時(shí)延判斷單元判斷所述第一獲取單元獲取的視頻幀不會(huì)發(fā)生時(shí)延,判斷所述 其它視頻幀中序列號(hào)比所述第一獲取單元獲取的序列號(hào)大的視頻幀也不會(huì)發(fā)生 時(shí)延。
14、 一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的裝置,其特征在于,所述裝置包括 第二預(yù)測(cè)單元,用于預(yù)測(cè)接收端正在播放的視頻幀的SDU的序列號(hào); 第二獲取單元,用于獲取發(fā)送端等待發(fā)送的SDU的序列號(hào); 第三時(shí)延判斷單元,用于如果所述第二預(yù)測(cè)單元預(yù)測(cè)的SDU的序列號(hào)大于或者等于所述第二獲取單元獲取的SDU的序列號(hào),判斷所述第二獲取單元預(yù)測(cè) 的SDU會(huì)發(fā)生時(shí)延。
15、 如權(quán)利要求14所述的裝置,其特征在于,所述第二預(yù)測(cè)單元包括 第一記錄表單元,用于記錄SDU和視頻幀之間的對(duì)應(yīng)關(guān)系; 網(wǎng)絡(luò)反饋信息獲取單元,用于獲取當(dāng)前來(lái)自于所述接收端的網(wǎng)絡(luò)反饋信息,所述網(wǎng)絡(luò)反饋信息包括所述接收端下一個(gè)將纟皮解碼的SDU的序列號(hào);解析子單元,用于解析所述網(wǎng)絡(luò)反饋信息獲取單元獲取的網(wǎng)絡(luò)反饋信息,以得到所述接收端下一個(gè)將#:解碼的SDU的序列號(hào);估算子單元,用于從所述第一記錄表單元獲取所述解析子單元所解析的SDU所屬的視頻幀的序列號(hào),減去一個(gè)估算值得到所述接收端正在播放的視頻 幀的序列號(hào);查詢(xún)子單元,用于從所述第一記錄表單元檢索屬于所述估算子單元計(jì)算出 的視頻幀的SDU,取序列號(hào)最大的SDU的序列號(hào)。
16、 如權(quán)利要求14所述的裝置,其特征在于,所述裝置還包括 第四時(shí)延判斷單元,用于獲取發(fā)送端等待發(fā)送的其它SDU,如果所述第三時(shí)延判斷單元判斷所述第二獲取單元獲取的SDU不會(huì)發(fā)生時(shí)延,判斷所述其它 SDU中序列號(hào)比所述第二獲取單元獲取的SDU大的SDU也不會(huì)發(fā)生時(shí)延。
全文摘要
本發(fā)明公開(kāi)了一種預(yù)測(cè)視頻業(yè)務(wù)發(fā)生時(shí)延的方法和裝置,所述方法包括預(yù)測(cè)接收端正在播放的視頻幀的序列號(hào);獲取發(fā)送端等待發(fā)送的視頻幀的序列號(hào);如果所述接收端正在播放的視頻幀的序列號(hào)大于或等于所述發(fā)送端等待發(fā)送的視頻幀的序列號(hào),判斷所述發(fā)送端等待發(fā)送的視頻幀會(huì)發(fā)生時(shí)延。所述裝置包括第一預(yù)測(cè)單元,用于預(yù)測(cè)接收端正在播放的視頻幀的序列號(hào);第一獲取單元,用于獲取發(fā)送端等待發(fā)送的視頻幀的序列號(hào);第一時(shí)延判斷單元,如果所述第一預(yù)測(cè)單元預(yù)測(cè)的視頻幀的序列號(hào)大于或者等于所述第一獲取單元獲取的視頻幀的序列號(hào),所述第一獲取單元獲取的視頻幀會(huì)發(fā)生時(shí)延。所述方法和裝置可以在網(wǎng)絡(luò)側(cè)預(yù)測(cè)等待發(fā)送的視頻幀是否會(huì)發(fā)生時(shí)延。
文檔編號(hào)H04N7/64GK101459852SQ20081024154
公開(kāi)日2009年6月17日 申請(qǐng)日期2008年12月22日 優(yōu)先權(quán)日2008年12月22日
發(fā)明者葉建濤, 周素萍, 斌 李, 谷安文, 陳玉芳 申請(qǐng)人:華為技術(shù)有限公司