專利名稱:一種終端及快速顯示組播圖像的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)多媒體領(lǐng)域,具體涉及一種終端及快速顯示組播圖像的方法。
背景技術(shù):
目前,在互聯(lián)網(wǎng)中傳輸?shù)拿襟w流都是經(jīng)過壓縮的,一般采用H264格式壓縮,這種 格式壓縮出來的碼流,碼流中壓縮出的數(shù)據(jù)由I幀、P幀、B幀構(gòu)成,I幀是關(guān)鍵幀,P、B幀是 依賴于關(guān)鍵幀的過渡幀,只有I幀解壓還原出來,才能還原P幀、B幀?,F(xiàn)有技術(shù)中,互聯(lián)網(wǎng)終端要顯示組播流需要經(jīng)過以下幾個步驟獲取組播地址,請 求加入組播,接收組播流,解碼顯示。由于組播流屬于直播流,其當(dāng)前直播點(diǎn)取決于組播源, 而請求加入組播的時間點(diǎn)取決于用戶,這就導(dǎo)致用戶請求組播流的時間點(diǎn)是隨機(jī)的,請求 到的碼流起始點(diǎn)不一定是I幀。如果不是以I幀開始的碼流,解碼器將會把數(shù)據(jù)丟棄,直到 收到下一個I幀才開始把數(shù)據(jù)解出來。理論上,組播圖像顯示出來需要花的最長時間等于I 幀間隔,而在實際網(wǎng)絡(luò)中,為了提高碼流的壓縮率,減少網(wǎng)絡(luò)帶寬消耗,編碼器會將碼流的I 幀間隔做得很大,有的達(dá)到2秒,這就使得用戶常常需要等待2秒以上才能看到圖像,會給 用戶帶來很差的體驗。
發(fā)明內(nèi)容
本發(fā)明要解決的主要技術(shù)問題是,提供一種終端及快速顯示組播圖像的方法。為解決上述技術(shù)問題,本發(fā)明采用了如下技術(shù)方案一種快速顯示組播圖像的方法,包括終端首先獲取與組播流同源的快發(fā)流并解碼輸出;終端在解碼輸出快發(fā)流后,再并行獲取組播流和快發(fā)流,進(jìn)行碼流銜接處理,在兩 個碼流內(nèi)容銜接前,繼續(xù)解碼輸出快發(fā)流,在兩個碼流內(nèi)容銜接后,解碼輸出組播流。在本發(fā)明所述方法的一種實施例中,所述快發(fā)流的起始點(diǎn)為I幀。在本發(fā)明所述方法的一種實施例中,組播緩存進(jìn)行組播流的網(wǎng)絡(luò)包的緩存包括 在內(nèi)存中開辟一塊緩存區(qū),并將緩存區(qū)按預(yù)定的數(shù)據(jù)結(jié)構(gòu)劃分為若干單元,每一個單元可 以存儲一個網(wǎng)絡(luò)包。在本發(fā)明所述方法的一種實施例中,終端通過向快發(fā)服務(wù)器請求來獲取快發(fā)流, 向快發(fā)服務(wù)器請求包括創(chuàng)建發(fā)送請求的套接字,將所要加入的組播頻道的IP地址及端口 號、終端接收碼流的IP地址及端口號發(fā)送給快發(fā)服務(wù)器。在本發(fā)明所述方法的一種實施例中,終端通過向網(wǎng)絡(luò)路由器發(fā)送加入組播請求來 獲取組播流,向網(wǎng)絡(luò)路由器發(fā)送加入組播請求包括按互聯(lián)網(wǎng)組管理協(xié)議向網(wǎng)絡(luò)路由器發(fā) 送JOIN消息,同時回應(yīng)網(wǎng)絡(luò)路由器發(fā)出的對該組播組成員的查詢請求。在本發(fā)明所述方法的一種實施例中,終端通過如下方式接收快發(fā)流和組播流創(chuàng) 建接收快發(fā)流的套接字,并與接收快發(fā)流的IP地址和端口號綁定,同時監(jiān)聽該套接字;創(chuàng) 建、綁定、監(jiān)聽另一個用于接收組播流的套接字;使用快發(fā)套接字接收快發(fā)流的網(wǎng)絡(luò)包,使
3用組播套接字接收組播流的網(wǎng)絡(luò)包。在本發(fā)明所述方法的一種實施例中,終端解碼輸出快發(fā)流包括對接收到的快發(fā) 流的網(wǎng)絡(luò)包進(jìn)行解碼預(yù)處理,將預(yù)處理后的數(shù)據(jù)送至解碼緩沖區(qū);解析網(wǎng)絡(luò)包中的媒體參 數(shù);解碼初始化及控制操作。在本發(fā)明所述方法的一種實施例中,所述解碼預(yù)處理包括對所述快發(fā)流的網(wǎng)絡(luò)包 進(jìn)行預(yù)定時間的緩存、以及去除網(wǎng)絡(luò)包的實時傳送協(xié)議頭。本發(fā)明還提供了一種終端,包括碼流獲取模塊,用于獲取組播流和快發(fā)流;所述快發(fā)流與組播流同源且起始點(diǎn)為 I幀;碼流銜接處理模塊,用于在并行獲取組播流和快發(fā)流時進(jìn)行碼流銜接處理;解碼模塊,用于在組播流獲取前解碼輸出快發(fā)流,以及根據(jù)碼流銜接處理結(jié)果進(jìn) 行解碼輸出,在兩個碼流內(nèi)容銜接前,解碼輸出快發(fā)流,在兩個碼流內(nèi)容銜接后,解碼輸出 組播流。本發(fā)明首先獲取與組播流同源且起始點(diǎn)為I幀的快發(fā)流解碼輸出,從而解決了現(xiàn) 有技術(shù)中由于I幀間隔大導(dǎo)致的解碼出第一幀圖像慢的問題,使得組播圖像能夠快速顯 示,極大地提高了用戶的體驗度。
圖1為本發(fā)明實施例的基本流程;圖2為本發(fā)明實施例的系統(tǒng)框架示意圖;圖3為本發(fā)明實施例的具體流程圖。
具體實施例方式下面通過具體實施方式
結(jié)合附圖對本發(fā)明作進(jìn)一步詳細(xì)說明。本發(fā)明主要發(fā)明構(gòu)思是采用碼流補(bǔ)償方式,終端首先獲取與組播流同源的快發(fā) 流并解碼輸出;而后再并行獲取組播流和快發(fā)流,進(jìn)行碼流銜接處理,在兩個碼流內(nèi)容銜接 前,解碼輸出快發(fā)流,在兩個碼流內(nèi)容銜接后,解碼輸出組播流。即在加入組播前,終端先向 快發(fā)服務(wù)器請求一個傳輸速率很快的快發(fā)流,再發(fā)加入組播請求,快發(fā)流和組播流同源,但 請求點(diǎn)早于組播流,可以預(yù)期,快發(fā)流先于組播流到達(dá)終端,終端將先接收到的快發(fā)流送至 解碼模塊,快速顯示出圖像,然后并行接收后面的快發(fā)流和組播流,直到兩個碼流的內(nèi)容銜 接上,此時終端停止接收快發(fā)流,后續(xù)流程和普通組播一樣。這樣就能有效提高組播圖像的 顯示速度,并在組播頻道切換時提高組播頻道切換的速度。一般的,可以設(shè)置快發(fā)服務(wù)器發(fā) 出的快發(fā)流是以I幀開始的。快發(fā)流是與組播流同源的單播碼流,由于其傳輸速率快于一 般的組播流,因而在本文中將該快發(fā)的碼流稱為快發(fā)流,相應(yīng)的,發(fā)出快發(fā)流的服務(wù)器稱為 快發(fā)服務(wù)器??彀l(fā)流的傳輸速率可根據(jù)實際需要進(jìn)行配置,例如可為組播流的1.1倍或者 1.2倍等,本發(fā)明對此并不限制,當(dāng)然,更高的傳輸速率要求更多的資源。本文中,同源是指 快發(fā)流和組播流來自同一個直播編碼器。如圖1所示,本發(fā)明實施例的方法的基本流程包括如下步驟11、終端向快發(fā)服務(wù)器發(fā)送頻道切換請求,請求快發(fā)流;
12、終端向網(wǎng)絡(luò)路由器發(fā)送加入組播請求,請求加入組播組;13、終端接收快發(fā)服務(wù)器返回的快發(fā)流,并將這部分碼流送至解碼模塊;14、終端接收組播流并進(jìn)行緩存;15、終端進(jìn)行碼流銜接處理,將組播流和快發(fā)流的內(nèi)容銜接起來,停止接收快發(fā) 流,輸出緩存的組播流;16、接收并實時輸出組播流。如圖2所示,本發(fā)明的系統(tǒng)包括負(fù)責(zé)組播的網(wǎng)絡(luò)路由器(包含組播源)、快發(fā)服 務(wù)器、終端??彀l(fā)服務(wù)器與網(wǎng)絡(luò)路由器同源,即由網(wǎng)絡(luò)路由器將組播流傳送給快發(fā)服務(wù)器。終端,例如可以是STB (Set Top Box,機(jī)頂盒),可以從網(wǎng)絡(luò)路由器獲得組播流,也 可以從快發(fā)服務(wù)器獲得快發(fā)流(在本例中,起始為I幀);終端獲得組播流,則送入組播流 緩存,獲得快發(fā)流,則送入快發(fā)流緩存;組播流和快發(fā)流經(jīng)過碼流銜接處理,形成整合后的 碼流,送入解碼模塊。碼流銜接處理主要包括21)收到組播包就緩存起來;22)收到快發(fā)包,就在緩存的組播包中查找與該快發(fā)包相同的包,找到則認(rèn)為銜接 成功,停止接收快發(fā)流,輸出組播流緩存,找不到則繼續(xù)進(jìn)行步驟21)。如圖3所示,本發(fā)明實施例的方法的具體流程包括如下步驟Si、向快發(fā)服務(wù)器發(fā)送頻道切換請求,請求快發(fā)流,轉(zhuǎn)步驟S2 ;S2、向網(wǎng)絡(luò)路由器發(fā)送加入組播請求,請求組播流,轉(zhuǎn)步驟S3 ;S3、接收網(wǎng)絡(luò)包,如果接收到的是組播包(組播流的網(wǎng)絡(luò)包),則轉(zhuǎn)步驟S4,否則轉(zhuǎn) 步驟S5 ;S4、將組播包緩存起來,轉(zhuǎn)步驟S7 ;S5、將快發(fā)包(快發(fā)流的網(wǎng)絡(luò)包)送至解碼模塊,進(jìn)行顯示,判斷當(dāng)前收到的包,是 否能在組播包緩存中找到,如果能找到轉(zhuǎn)步驟S6,否則轉(zhuǎn)步驟S3 ;由于快發(fā)流和組播流同 源,一般的,如果兩個碼流的網(wǎng)絡(luò)包中RTP序號相同,則用RTP封裝起來的內(nèi)容相同。S6、停止接收快發(fā)包,輸出當(dāng)前輸出包后(可以通過序號比較的方式,即序號比當(dāng) 前輸出包大的包)的所有緩存的組播包,轉(zhuǎn)步驟S8 ;S7、判斷組播緩存是否滿,如果未滿則轉(zhuǎn)步驟S3,否則停止接收快發(fā)包,輸出所有 組播緩存的包,轉(zhuǎn)步驟S8;S8、接收組播流,并進(jìn)行實時輸出。步驟Sl中向快發(fā)服務(wù)器發(fā)送頻道切換請求,包括創(chuàng)建發(fā)送請求的套接字 (socket, TCP/IP協(xié)議棧中提供給應(yīng)用層進(jìn)行數(shù)據(jù)發(fā)送、接收的接口),將所要加入的組播 頻道的IP地址及端口號、終端接收碼流的IP地址及端口號發(fā)送給快發(fā)服務(wù)器。步驟S2中向網(wǎng)絡(luò)路由器發(fā)送加入組播請求,包括按IGMP (Internet GroupManagement Protocol,互聯(lián)網(wǎng)組管理協(xié)議)協(xié)議向網(wǎng)絡(luò)路由器發(fā)送JOIN消息,同時 回應(yīng)網(wǎng)絡(luò)路由器發(fā)出的對該組播組成員的查詢請求。步驟S3中接收網(wǎng)絡(luò)包,包括S31)創(chuàng)建接收快發(fā)流的套接字,并與接收快發(fā)流的IP地址和端口號綁定,同時監(jiān) 聽該套接字。S32)用同樣的方法創(chuàng)建、綁定、監(jiān)聽另一個用于接收組播流的套接字。
S33)使用快發(fā)套接字接收到的網(wǎng)絡(luò)包就是快發(fā)包,使用組播套接字接收到的網(wǎng)絡(luò) 包就是組播包。步驟S4中將組播包緩存起來,包括在內(nèi)存中開辟一塊緩沖區(qū),并將緩存區(qū)按一 定的數(shù)據(jù)結(jié)構(gòu)劃分為若干單元,每一個單元可以存儲一個網(wǎng)絡(luò)包。步驟S5中將快發(fā)包送至解碼模塊,包括S51)對該網(wǎng)絡(luò)包進(jìn)行解碼預(yù)處理,將預(yù)處理后的數(shù)據(jù)送至解碼模塊的緩沖區(qū),網(wǎng) 絡(luò)包的解碼預(yù)處理包括對網(wǎng)絡(luò)包進(jìn)行一定時間的緩存、以及去除網(wǎng)絡(luò)包的RTP(Real-time Transport Protocol,實時傳送協(xié)議)頭。S52)對網(wǎng)絡(luò)包中媒體參數(shù)的解析。S53)對解碼模塊的初始化。S54)對解碼模塊的控制操作,主要包括打開、關(guān)閉。步驟S6中停止接收快發(fā)包,輸出所有緩存的組播包,包括S61)關(guān)閉用于接收快發(fā)流的套接字;S62)將組播緩存中的數(shù)據(jù)送至解碼模塊,解碼模塊的處理與前述快發(fā)包在解碼模 塊的處理一致;S63)釋放組播緩存包占用的緩沖區(qū)。步驟S7中判斷組播緩存是否滿,包括計算目前緩存中有多少個網(wǎng)絡(luò)包,判斷網(wǎng) 絡(luò)包的數(shù)量是否達(dá)到步驟S4中創(chuàng)建的緩沖區(qū)劃分出來的單元數(shù)。步驟S8中接收組播流,并進(jìn)行實時輸出,包括S81)監(jiān)聽接收組播流對應(yīng)的套接字;S82)解碼組播流,顯示。通過本發(fā)明,能夠快速顯示組播圖像,例如在進(jìn)行組播頻道切換時,可以將切換速 度(從顯示一個組播頻道的圖像切換到顯示另一個組播頻道的圖像)提高到300ms左右, 進(jìn)而給用戶帶來很好的體驗。以上內(nèi)容是結(jié)合具體的實施方式對本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā) 明的具體實施只局限于這些說明。對于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫 離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù) 范圍。
權(quán)利要求
一種快速顯示組播圖像的方法,其特征在于,包括終端首先獲取與組播流同源的快發(fā)流并解碼輸出;終端在解碼輸出快發(fā)流后,再并行獲取組播流和快發(fā)流,進(jìn)行碼流銜接處理,在兩個碼流內(nèi)容銜接前,繼續(xù)解碼輸出快發(fā)流,在兩個碼流內(nèi)容銜接后,解碼輸出組播流。
2.如權(quán)利要求1所述的方法,其特征在于,所述快發(fā)流的起始點(diǎn)為I幀。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述碼流銜接處理包括組播緩存進(jìn)行 組播流的網(wǎng)絡(luò)包的緩存,終端接收到快發(fā)流的網(wǎng)絡(luò)包后,檢查是否能在所述組播緩存中找 到,如果能找到,碼流內(nèi)容銜接,否則,碼流內(nèi)容未銜接。
4.如權(quán)利要求3所述的方法,其特征在于,組播緩存進(jìn)行組播流的網(wǎng)絡(luò)包的緩存包括 在內(nèi)存中開辟一塊緩存區(qū),并將緩存區(qū)按預(yù)定的數(shù)據(jù)結(jié)構(gòu)劃分為若干單元,每一個單元可 以存儲一個網(wǎng)絡(luò)包。
5.如權(quán)利要求1所述的方法,其特征在于,終端通過向快發(fā)服務(wù)器請求來獲取快發(fā)流, 向快發(fā)服務(wù)器請求包括創(chuàng)建發(fā)送請求的套接字,將所要加入的組播頻道的IP地址及端口 號、終端接收碼流的IP地址及端口號發(fā)送給快發(fā)服務(wù)器。
6.如權(quán)利要求1所述的方法,其特征在于,終端通過向網(wǎng)絡(luò)路由器發(fā)送加入組播請求 來獲取組播流,向網(wǎng)絡(luò)路由器發(fā)送加入組播請求包括按互聯(lián)網(wǎng)組管理協(xié)議向網(wǎng)絡(luò)路由器 發(fā)送JOIN消息,同時回應(yīng)網(wǎng)絡(luò)路由器發(fā)出的對該組播組成員的查詢請求。
7.如權(quán)利要求1所述的方法,其特征在于,終端通過如下方式接收快發(fā)流和組播流創(chuàng) 建接收快發(fā)流的套接字,并與接收快發(fā)流的IP地址和端口號綁定,同時監(jiān)聽該套接字;創(chuàng) 建、綁定、監(jiān)聽另一個用于接收組播流的套接字;使用快發(fā)套接字接收快發(fā)流的網(wǎng)絡(luò)包,使 用組播套接字接收組播流的網(wǎng)絡(luò)包。
8.如權(quán)利要求1所述的方法,其特征在于,終端解碼輸出快發(fā)流包括對接收到的快發(fā) 流的網(wǎng)絡(luò)包進(jìn)行解碼預(yù)處理,將預(yù)處理后的數(shù)據(jù)送至解碼緩沖區(qū);解析網(wǎng)絡(luò)包中的媒體參 數(shù);解碼初始化及控制操作。
9.如權(quán)利要求7所述的方法,其特征在于,所述解碼預(yù)處理包括對所述快發(fā)流的網(wǎng)絡(luò) 包進(jìn)行預(yù)定時間的緩存、以及去除網(wǎng)絡(luò)包的實時傳送協(xié)議頭。
10.一種終端,其特征在于,包括碼流獲取模塊,用于獲取組播流和快發(fā)流;所述快發(fā)流與組播流同源;碼流銜接處理模塊,用于在并行獲取組播流和快發(fā)流時進(jìn)行碼流銜接處理;解碼模塊,用于在組播流獲取前解碼輸出快發(fā)流,以及根據(jù)碼流銜接處理結(jié)果進(jìn)行解 碼輸出,在兩個碼流內(nèi)容銜接前,解碼輸出快發(fā)流,在兩個碼流內(nèi)容銜接后,解碼輸出組播 流。
全文摘要
本發(fā)明公開了一種終端及快速顯示組播圖像的方法,所述快速顯示組播圖像的方法,包括終端首先獲取與組播流同源的快發(fā)流并解碼輸出;終端在解碼輸出快發(fā)流后,再并行獲取組播流和快發(fā)流,進(jìn)行碼流銜接處理,在兩個碼流內(nèi)容銜接前,繼續(xù)解碼輸出快發(fā)流,在兩個碼流內(nèi)容銜接后,解碼輸出組播流。本發(fā)明能夠快速顯示組播圖像,提高用戶的體驗度。
文檔編號H04L29/06GK101964784SQ20101025732
公開日2011年2月2日 申請日期2010年8月19日 優(yōu)先權(quán)日2010年8月19日
發(fā)明者周茂林, 孔繁夫 申請人:中興通訊股份有限公司