一種媒體流可靠傳輸和接收的方法以及裝置制造方法
【專利摘要】本發(fā)明提供一種可靠傳送媒體流的方案。該方案中的編碼設(shè)備實(shí)行媒體流數(shù)據(jù)備份機(jī)制,解碼設(shè)備實(shí)行媒體流數(shù)據(jù)緩存機(jī)制。編碼設(shè)備在向解碼設(shè)備發(fā)送媒體流數(shù)據(jù)時(shí)將該媒體流數(shù)據(jù)存儲(chǔ)在專門開辟的緩存空間中以達(dá)到將該媒體流數(shù)據(jù)進(jìn)行備份的目的。當(dāng)解碼設(shè)備發(fā)現(xiàn)媒體流數(shù)據(jù)丟失后,向編碼設(shè)備發(fā)送重傳請求,并且緩存后續(xù)接收到的媒體流數(shù)據(jù);編碼設(shè)備根據(jù)自身緩存空間中備份的媒體流數(shù)據(jù)響應(yīng)解碼設(shè)備的重傳請求。解碼設(shè)備接收到重傳的媒體流數(shù)據(jù)后將其和緩存中的媒體流數(shù)據(jù)一并進(jìn)行解碼顯示。上述方案實(shí)現(xiàn)了媒體流數(shù)據(jù)可靠傳輸?shù)浇獯a設(shè)備上。
【專利說明】一種媒體流可靠傳輸和接收的方法以及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及媒體流數(shù)據(jù)傳輸領(lǐng)域,尤其涉及一種媒體流可靠傳輸?shù)姆椒ê蛯?yīng)的
裝直。
【背景技術(shù)】
[0002]為了確保社會(huì)穩(wěn)定和個(gè)人財(cái)產(chǎn)的安全,視頻監(jiān)控的重要性越來越突出。隨著視頻監(jiān)控的涉及面不斷增大,其中數(shù)據(jù)傳輸量也越來越大,所以需要更先進(jìn)的技術(shù)支持媒體流數(shù)據(jù)的傳輸。隨著IP技術(shù)的發(fā)展與逐步完善,越來越多的視頻監(jiān)控由IP網(wǎng)絡(luò)來承載。
[0003]為了最大限度的減少IP網(wǎng)絡(luò)上的視頻流量大小,很多視頻監(jiān)控網(wǎng)絡(luò)采用組播技術(shù)進(jìn)行實(shí)況流的點(diǎn)播。在圖1中,用戶I和用戶2都需要查看同一個(gè)攝像頭的實(shí)況流,編碼器EC可以只發(fā)送一條流到客戶端的接入層交換機(jī)上,由接入層交換機(jī)根據(jù)組播表項(xiàng)來進(jìn)行復(fù)制分發(fā)視頻流。在圖1中,一條視頻流在接入層交換機(jī)上被復(fù)制成兩條流,分別流向用戶I和用戶2。在IP視頻監(jiān)控網(wǎng)絡(luò)出現(xiàn)短暫擁塞或者其他問題導(dǎo)致用戶I和用戶2無法接收到EC發(fā)送地完整實(shí)況流的情況,用戶I和用戶2將不能觀看到清晰的視頻畫面。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提供一種媒體流可靠傳輸和接收的方法和裝置。
[0005]為了達(dá)到上述效果,本發(fā)明技術(shù)方案如下:
[0006]一種媒體流可靠傳輸?shù)姆椒?,該方法?yīng)用于編碼設(shè)備,該編碼設(shè)備上開辟有專門用于媒體流數(shù)據(jù)備份的緩存空間,該方法包括如下步驟:Α、發(fā)送媒體流數(shù)據(jù)包,并將發(fā)送的媒體流數(shù)據(jù)在該緩存空間中進(jìn)行備份;B、接收解碼設(shè)備發(fā)送的重傳請求,判斷該緩存空間中是否存在待重傳的媒體流數(shù)據(jù),如果存在,則對該媒體流數(shù)據(jù)進(jìn)行重傳,否則忽略該重傳請求。
[0007]優(yōu)選地,開辟的緩存空間的大小基于媒體流數(shù)據(jù)預(yù)設(shè)的備份時(shí)間Tl或者基于預(yù)設(shè)的備份固定數(shù)量的媒體流數(shù)據(jù)包來確定,媒體流數(shù)據(jù)在緩存空間備份的時(shí)候采用循環(huán)覆蓋的方法進(jìn)行備份。
[0008]優(yōu)選地,如果步驟A中的媒體流數(shù)據(jù)包是以組播的方式進(jìn)行發(fā)送的,則步驟B也以組播的方式發(fā)送待重傳的媒體流數(shù)據(jù)包。
[0009]優(yōu)選地,步驟B中如果緩存空間中存在待重傳的媒體流數(shù)據(jù),則進(jìn)一步查看該媒體流數(shù)據(jù)最后重傳時(shí)間與當(dāng)前時(shí)間的差是否小于預(yù)設(shè)的最小重傳時(shí)間間隔Tm,如果是,則不再進(jìn)行重傳;否則,對該媒體流數(shù)據(jù)進(jìn)行重傳,同時(shí)更新最后重傳時(shí)間為當(dāng)前的重傳時(shí)間;或/和,步驟B中如果緩存空間中存在待重傳的媒體流數(shù)據(jù),則進(jìn)一步確認(rèn)該媒體流數(shù)據(jù)的重傳次數(shù)是否小于預(yù)設(shè)的最大重傳次數(shù)Μ,如果是,則進(jìn)行重傳,并更新重傳次數(shù);否則不再進(jìn)行重傳。
[0010]優(yōu)選地,最大重傳次數(shù)M由編碼設(shè)備根據(jù)解碼設(shè)備一段時(shí)間內(nèi)請求重傳的媒體流數(shù)據(jù)被覆蓋的比率進(jìn)行自適應(yīng)的調(diào)整。[0011]優(yōu)選地,步驟A中的媒體流數(shù)據(jù)包是以組播的方式進(jìn)行發(fā)送的情況下,該方法還包括:步驟A’、從同一組播組的解碼設(shè)備中選取在接收到組播媒體流數(shù)據(jù)包后向編碼設(shè)備發(fā)送確認(rèn)應(yīng)答的檢測點(diǎn);步驟B’、編碼設(shè)備接收到檢測點(diǎn)發(fā)送的確認(rèn)應(yīng)答后,刪除緩存中對應(yīng)的備份媒體流數(shù)據(jù)。
[0012]優(yōu)選地,在編碼設(shè)備具有多個(gè)通道,每個(gè)通道具有自身的緩存媒體流數(shù)據(jù)的備份空間時(shí),編碼設(shè)備接收到檢測點(diǎn)發(fā)送的針對某一通道的媒體流數(shù)據(jù)的確認(rèn)應(yīng)答,刪除該通道緩存中對應(yīng)的備份媒體流數(shù)據(jù)后,如果此時(shí)該通道的剩余緩存?zhèn)浞菘臻g大于預(yù)設(shè)值,則將該通道部分緩存?zhèn)浞菘臻g共享給其他通道使用。
[0013]優(yōu)選地,步驟A’中從同一組播組的解碼設(shè)備中選取檢測點(diǎn)的方法具體為:發(fā)送組播的ICMP報(bào)文給解碼設(shè)備;將預(yù)設(shè)時(shí)間內(nèi)收到的最后一個(gè)回應(yīng)ICMP消息的解碼設(shè)備選取為檢測點(diǎn),并通知該解碼設(shè)備開啟檢測功能。
[0014]一種媒體流可靠接收的方法,該方法應(yīng)用于解碼設(shè)備,該方法包括如下步驟:A、接收媒體流數(shù)據(jù)包并緩存;B、對媒體流數(shù)據(jù)包進(jìn)行丟包檢測,如果檢測到丟包,轉(zhuǎn)步驟C ;C、向編碼設(shè)備發(fā)送針對丟失數(shù)據(jù)包的重傳請求,同時(shí)開啟時(shí)長為T2的定時(shí)器,并且將后續(xù)收到的媒體流數(shù)據(jù)緩存;D、在定時(shí)器超時(shí)前接收到重傳的媒體流數(shù)據(jù)包,則將接收到的重傳的媒體流數(shù)據(jù)包和緩存中的媒體流數(shù)據(jù)包一并解碼;在定時(shí)器超時(shí)前未接收到重傳的媒體流數(shù)據(jù)包且緩存的媒體流數(shù)據(jù)達(dá)到預(yù)設(shè)的最大值時(shí),則將緩存的媒體流數(shù)據(jù)進(jìn)行解碼;在定時(shí)器超時(shí)且未收到該重傳的媒體流數(shù)據(jù)包,則將緩存的媒體流數(shù)據(jù)解碼。
[0015]優(yōu)選地,如果定時(shí)器超時(shí)且未收到該重傳的媒體流數(shù)據(jù)包,則判斷是否到達(dá)預(yù)設(shè)的最大重傳次數(shù)N,如果是,則進(jìn)行解碼;否則,轉(zhuǎn)步驟C。
[0016]優(yōu)選地,該預(yù)設(shè)的最大重傳次數(shù)N是動(dòng)態(tài)調(diào)整生成的,其中該動(dòng)態(tài)調(diào)整方法具體為:在備份緩存中媒體流數(shù)據(jù)未被覆蓋,解碼設(shè)備請求重傳的次數(shù)到達(dá)最大重傳次數(shù)N但并未重傳成功,則將最大重傳次數(shù)更新為N+1 ;在解碼設(shè)備請求重傳的次數(shù)未到達(dá)最大重傳次數(shù)N但在備份緩存中媒體流數(shù)據(jù)已經(jīng)被覆蓋,則將最大重傳次數(shù)更新為N-1 ;或者根據(jù)編碼設(shè)備動(dòng)態(tài)調(diào)整最大重傳次數(shù)M的結(jié)果調(diào)整N。
[0017]優(yōu)選地,丟包檢測的方法具體為:判斷接收到的媒體流數(shù)據(jù)包是否連續(xù),即當(dāng)前收到的數(shù)據(jù)包序號(hào)是否等于上一個(gè)接收到的數(shù)據(jù)包序列號(hào)加一,如果等于則判斷為不丟包;否則判斷為丟包;或者,當(dāng)接收到的η (η為預(yù)設(shè)值)個(gè)媒體流數(shù)據(jù)包時(shí)先對這η個(gè)媒體流數(shù)據(jù)包進(jìn)行排序,然后按照數(shù)據(jù)包的序號(hào)進(jìn)行丟包檢測;且將當(dāng)前收到的數(shù)據(jù)包序號(hào)與上一次丟包檢測時(shí)最后一個(gè)數(shù)據(jù)包的序號(hào)進(jìn)行比較,如果序號(hào)差值大于等于預(yù)設(shè)值,則確認(rèn)出現(xiàn)丟包。
[0018]優(yōu)選地,重傳請求使用UDP單播進(jìn)行發(fā)送,該單播的目的IP地址和端口號(hào)在編碼設(shè)備和解碼設(shè)備建立媒體流數(shù)據(jù)的信令交互中由編碼設(shè)備傳遞給解碼設(shè)備。
[0019]優(yōu)選地,定時(shí)器時(shí)長Τ2動(dòng)態(tài)調(diào)整生成,該動(dòng)態(tài)調(diào)整的方法包括:解碼設(shè)備定期發(fā)送PING包給編碼設(shè)備以獲取數(shù)據(jù)包當(dāng)前的傳輸時(shí)間,根據(jù)該傳輸時(shí)間的大小變化相應(yīng)調(diào)整Τ2的大小。
[0020]優(yōu)選地,由編碼設(shè)備確認(rèn)為檢測點(diǎn)的解碼設(shè)備在接收到媒體流數(shù)據(jù)包后按照如下方法發(fā)送確認(rèn)應(yīng)答:每收到一個(gè)媒體流數(shù)據(jù)包就進(jìn)行一次確認(rèn)應(yīng)答,或者接收到多個(gè)數(shù)據(jù)包后進(jìn)行集中反饋確認(rèn)應(yīng)答。[0021]基于和方法相同的構(gòu)思本發(fā)明還提供一種媒體流可靠傳輸裝置和接收裝置,該媒體流可靠傳輸裝置應(yīng)用于編碼設(shè)備上,該媒體流可靠接收裝置應(yīng)用于解碼設(shè)備上。
[0022]本發(fā)明具有以下有益效果:實(shí)現(xiàn)了媒體流數(shù)據(jù)可靠地從編碼設(shè)備傳輸?shù)浇獯a設(shè)備上;解碼設(shè)備對完整的媒體流數(shù)據(jù)進(jìn)行解碼顯示后使得視頻圖像非常流暢。
【專利附圖】
【附圖說明】
[0023]圖1是組播發(fā)送媒體流數(shù)據(jù)網(wǎng)絡(luò)示意圖。
[0024]圖2是本發(fā)明實(shí)施例一編碼設(shè)備的媒體流可靠傳輸裝置邏輯結(jié)構(gòu)示意圖。
[0025]圖3是本發(fā)明實(shí)施例一解碼設(shè)備的媒體流可靠接收裝置邏輯結(jié)構(gòu)示意圖。
[0026]圖4是本發(fā)明實(shí)施例二解碼設(shè)備的媒體可靠接收裝置的處理流程圖。
[0027]圖5是本發(fā)明實(shí)施例二編碼設(shè)備的媒體流可靠傳輸裝置邏輯結(jié)構(gòu)示意圖。
[0028]圖6是本發(fā)明實(shí)施例二解碼設(shè)備的媒體流可靠接收裝置邏輯結(jié)構(gòu)示意圖
[0029]圖7是本發(fā)明實(shí)施例三編碼設(shè)備的媒體流可靠傳輸裝置邏輯結(jié)構(gòu)示意圖。
[0030]圖8是本發(fā)明實(shí)施例三解碼設(shè)備的媒體流可靠接收裝置邏輯結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0031]為解決【背景技術(shù)】中提到的技術(shù)問題,本發(fā)明提供一種可靠傳送媒體流的方案。該方案需要對當(dāng)前的編碼設(shè)備和解碼設(shè)備做出改進(jìn)。本專利中的編碼設(shè)備指具有編碼功能的設(shè)備,包括但不限于編碼器、網(wǎng)絡(luò)攝像機(jī)。解碼設(shè)備指具有解碼功能的設(shè)備,包括但不限于具有解碼軟件的PC機(jī),解碼器。
[0032]編碼設(shè)備實(shí)行媒體流數(shù)據(jù)備份機(jī)制,解碼設(shè)備實(shí)行媒體流數(shù)據(jù)緩存機(jī)制。編碼設(shè)備在向解碼設(shè)備發(fā)送媒體流數(shù)據(jù)時(shí)將該媒體流數(shù)據(jù)存儲(chǔ)在專門開辟的緩存空間中以達(dá)到將該媒體流數(shù)據(jù)進(jìn)行備份的目的。當(dāng)解碼設(shè)備發(fā)現(xiàn)媒體流數(shù)據(jù)丟失后,向編碼設(shè)備發(fā)送重傳請求,并且緩存后續(xù)接收到的媒體流數(shù)據(jù);編碼設(shè)備根據(jù)自身緩存空間中備份的媒體流數(shù)據(jù)響應(yīng)解碼設(shè)備的重傳請求。解碼設(shè)備將丟失的媒體流數(shù)據(jù)和緩存中的媒體流數(shù)據(jù)進(jìn)行解碼顯示,從而保證了媒體流數(shù)據(jù)的可靠傳輸。下文將通過若干實(shí)施例詳細(xì)來闡述本發(fā)明的方案。下面的實(shí)施例以軟件實(shí)現(xiàn)來進(jìn)行描述,但不應(yīng)將軟件實(shí)現(xiàn)方案作為對本發(fā)明的限制。實(shí)際上軟件實(shí)現(xiàn)的方案在合適的條件下硬件都能實(shí)現(xiàn),比如說解碼模塊既可以用業(yè)界通用的軟解碼也可以基于硬件來進(jìn)行解碼。
[0033]實(shí)施例一
[0034]編碼設(shè)備實(shí)行基于時(shí)間的備份策略:編碼設(shè)備預(yù)設(shè)媒體流數(shù)據(jù)保留時(shí)間為Tl,當(dāng)備份的媒體流數(shù)據(jù)超過該保留時(shí)間Tl則不再備份該媒體流數(shù)據(jù)。基于這一思路,編碼設(shè)備在備份媒體流數(shù)據(jù)時(shí)的具體實(shí)施方法為:根據(jù)該保留時(shí)間Tl來開辟一定大小的用于備份媒體流數(shù)據(jù)的緩存空間。媒體流數(shù)據(jù)在備份的時(shí)候采用循環(huán)覆蓋的方法寫入緩存空間,即該緩存空間寫滿后從頭開始覆蓋之前的媒體流數(shù)據(jù)而寫入新的備份數(shù)據(jù)。由于該緩存空間的大小是依據(jù)媒體流數(shù)據(jù)的備份時(shí)間Tl以及其它的一些計(jì)算因子,比如編碼碼率計(jì)算得到的,所以循環(huán)覆蓋地備份媒體流數(shù)據(jù)基本上保證了媒體流數(shù)據(jù)在緩存空間中的預(yù)設(shè)保留時(shí)間。
[0035]解碼設(shè)備在檢測到媒體流數(shù)據(jù)丟失后,向編碼設(shè)備發(fā)送針對該丟失的媒體流數(shù)據(jù)的重傳請求,同時(shí)開啟定時(shí)器,設(shè)定等待時(shí)間為T2,并且將后續(xù)收到的媒體流數(shù)據(jù)緩存;如果收到重傳的媒體流數(shù)據(jù),則進(jìn)行解碼;如果超過等待時(shí)間T2,仍未收到該重傳的媒體流數(shù)據(jù),則將緩存的媒體流數(shù)據(jù)解碼。
[0036]如圖2,本實(shí)施例的編碼設(shè)備內(nèi)嵌一媒體流可靠傳輸?shù)难b置,該媒體流可靠傳輸裝置包括:媒體流發(fā)送模塊、媒體流備份模塊、媒體流重傳模塊。這些模塊以軟件代碼的形式進(jìn)行存儲(chǔ)。編碼設(shè)備的處理器分別通過執(zhí)行這些代碼指令來實(shí)現(xiàn)本實(shí)施例的方案。
[0037]如圖3,本實(shí)施例的解碼設(shè)備內(nèi)嵌一媒體流可靠接收的裝置,該媒體流可靠接收裝置包括:媒體流接收模塊、丟包檢測模塊、媒體流重傳處理模塊、解碼模塊。這些模塊以軟件代碼的形式進(jìn)行存儲(chǔ)。解碼設(shè)備的處理器分別通過執(zhí)行這些代碼指令來實(shí)現(xiàn)本實(shí)施例的方案。
[0038]本實(shí)施例的一種實(shí)施流程如下:
[0039]步驟21、在編碼設(shè)備上開辟緩存空間,用以備份媒體流數(shù)據(jù)。
[0040]該緩存空間是專門為媒體流數(shù)據(jù)包的備份而開辟的緩存空間。緩存空間的大小依據(jù)媒體流數(shù)據(jù)需備份的時(shí)間來確定。
[0041]實(shí)際上除了根據(jù)編碼設(shè)備基于時(shí)間的備份策略來開辟緩存空間外,還可以基于固定數(shù)量的媒體流數(shù)據(jù)包策略來開辟緩存空間。比如,編碼設(shè)備始終要保證有M個(gè)媒體流數(shù)據(jù)包備份在緩存空間中,則可以開辟用于備份的緩存空間的大小為M*L,其中L是每個(gè)數(shù)據(jù)包的長度。一個(gè)數(shù)據(jù)包的長度具體是媒體數(shù)據(jù)的長度再加上封裝協(xié)議頭(比如RTP頭、UDP報(bào)文頭等)的長度。每個(gè)數(shù)據(jù)包的長度L小于等于網(wǎng)絡(luò)中分片的閾值。而媒體流數(shù)據(jù)在備份的時(shí)候仍然采用循環(huán)覆蓋的方法寫入緩存空間。
[0042]步驟22、編碼設(shè)備的媒體流發(fā)送模塊發(fā)送媒體流數(shù)據(jù)包,媒體流備份模塊將發(fā)送的媒體流數(shù)據(jù)包在緩存空間中進(jìn)行備份。
[0043]編碼設(shè)備的媒體流發(fā)送模塊在發(fā)送媒體流數(shù)據(jù)包的時(shí)候如現(xiàn)有的技術(shù)一樣,每個(gè)數(shù)據(jù)包上都會(huì)帶上序號(hào)。這樣解碼設(shè)備的丟包檢測模塊就可以據(jù)此來判斷是否發(fā)生丟包事件。
[0044]編碼設(shè)備的媒體流備份模塊將發(fā)送出去的媒體流數(shù)據(jù)包復(fù)制一份備份在緩存空間中。
[0045]步驟23、解碼設(shè)備的媒體流接收模塊接收媒體流數(shù)據(jù)包,并將接收到的媒體流數(shù)據(jù)包存放于解碼設(shè)備的緩存空間中,丟包檢測模塊對媒體流數(shù)據(jù)包進(jìn)行丟包檢測,如果檢測到丟包,則由媒體流重傳處理模塊執(zhí)行重傳處理:向編碼設(shè)備發(fā)送針對丟失的數(shù)據(jù)包的重傳請求,同時(shí)開啟等待時(shí)長為T2的定時(shí)器;并且通知解碼模塊對媒體流接收模塊后續(xù)收到并緩存的媒體流數(shù)據(jù)不進(jìn)行解碼;如果在T2時(shí)間內(nèi)確認(rèn)接收到重傳的媒體流數(shù)據(jù)包,則通知解碼模塊將接收到的媒體流數(shù)據(jù)包和緩存中的媒體流數(shù)據(jù)包一并解碼;如果在T2時(shí)間內(nèi)緩存空間中緩存的媒體流數(shù)據(jù)達(dá)到預(yù)設(shè)的最大值,則通知解碼模塊對緩存中的媒體流數(shù)據(jù)包進(jìn)行解碼;如果超過T2時(shí)間未收到該重傳的媒體流數(shù)據(jù)包,則通知解碼模塊對緩存的媒體流數(shù)據(jù)解碼。
[0046]解碼設(shè)備的丟包檢測模塊進(jìn)行丟包檢測時(shí)可以采用如下方法:
[0047]方法一、判斷接收到的媒體流數(shù)據(jù)包是否連續(xù),即當(dāng)前收到的數(shù)據(jù)包序號(hào)是否等于上一個(gè)接收到的數(shù)據(jù)包序列號(hào)加一,如果等于則判斷為不丟包;否則判斷為丟包。該方法適用于媒體流數(shù)據(jù)包所傳輸?shù)木W(wǎng)絡(luò)環(huán)境不會(huì)出現(xiàn)亂序的情況。
[0048]方法二、對接收到的η (η為預(yù)設(shè)值)個(gè)媒體流數(shù)據(jù)包先進(jìn)行排序,然后按照數(shù)據(jù)包的序號(hào)判斷是否出現(xiàn)丟包。比如說每收到10個(gè)媒體流數(shù)據(jù)包進(jìn)行一次檢測。按照接收的時(shí)間順序,假設(shè)當(dāng)前接收到的10個(gè)數(shù)據(jù)包分別為序號(hào)是1、3、4、2、5、7、8、10、11、9的數(shù)據(jù)包,排序后可以判斷序號(hào)為6的數(shù)據(jù)包丟失了。如果接下來收到的10個(gè)數(shù)據(jù)包為序號(hào)是
21、22、24、23、25、26、29、30、31、32,排序后可以判斷序號(hào)為12-20的數(shù)據(jù)包以及序號(hào)為27、28的數(shù)據(jù)包丟失。該方法適用于媒體流數(shù)據(jù)包所傳輸?shù)木W(wǎng)絡(luò)環(huán)境會(huì)出現(xiàn)亂序的情況。進(jìn)一步對該方法進(jìn)行優(yōu)化,將當(dāng)前收到的數(shù)據(jù)包序號(hào)與上一次丟包檢測時(shí)的最后一個(gè)數(shù)據(jù)包的序號(hào)進(jìn)行比較,如果序號(hào)差值大于等于預(yù)設(shè)值,則確認(rèn)出現(xiàn)丟包。比如說,假設(shè)預(yù)設(shè)值為10,上述例子中,在收到序號(hào)為21的數(shù)據(jù)包時(shí),根據(jù)上一次丟包檢測時(shí)最后一個(gè)數(shù)據(jù)包(序號(hào)為11)算出差值21-11=10,該差值等于預(yù)設(shè)值10,此時(shí)確認(rèn)序號(hào)為12?10的數(shù)據(jù)包丟失。優(yōu)化后的方法在減少反饋頻率的基礎(chǔ)上實(shí)現(xiàn)了及早反饋。
[0049]解碼設(shè)備的媒體流重傳處理模塊發(fā)送重傳請求的目的地址和端口號(hào)在建立媒體流數(shù)據(jù)的信令交互中與其它媒體參數(shù)一起獲得。
[0050]在發(fā)送重傳請求后,解碼設(shè)備對于后續(xù)接收到的媒體流數(shù)據(jù)包先進(jìn)行緩存,此時(shí)即便到達(dá)解碼時(shí)刻解碼模塊也并不執(zhí)行解碼,以盡可能地等到丟失的數(shù)據(jù)包到來后再進(jìn)行解碼。
[0051]重傳的等待時(shí)間Τ2可以固定設(shè)置,也可以通過解碼設(shè)備的定時(shí)器時(shí)長(Τ2)調(diào)整模塊進(jìn)行調(diào)整。一種由定時(shí)器時(shí)長調(diào)整模塊通過檢測機(jī)制進(jìn)行自動(dòng)調(diào)整的方法為:解碼設(shè)備定期發(fā)送PING包給編碼設(shè)備以獲取數(shù)據(jù)包當(dāng)前的傳輸時(shí)間,再根據(jù)該傳輸時(shí)間的大小變化調(diào)整Τ2。
[0052]如果在等待時(shí)間Τ2內(nèi)就接收到了編碼設(shè)備重傳的媒體流數(shù)據(jù)包,則進(jìn)行解碼顯示。如果超過Τ2未接收到重傳的數(shù)據(jù)包,那將不再繼續(xù)等待,直接對緩存的媒體流數(shù)據(jù)包進(jìn)行解碼。因?yàn)槔^續(xù)等待未必會(huì)接收到丟失的數(shù)據(jù)包,同時(shí)還會(huì)對解碼設(shè)備的緩存造成壓力,并且用戶觀看的畫面可能也會(huì)出現(xiàn)卡頓的狀況。另外,如果在等待時(shí)間Τ2內(nèi),解碼設(shè)備存放媒體流數(shù)據(jù)包的緩存空間將要存滿時(shí),也不再等待重傳的媒體流數(shù)據(jù)而直接進(jìn)行解碼顯不O
[0053]步驟24、編碼設(shè)備的媒體流重傳模塊接收到解碼設(shè)備發(fā)送的重傳請求,判斷緩存空間中是否存在待重傳的媒體流數(shù)據(jù),如果存在,則對該媒體流數(shù)據(jù)進(jìn)行重傳,否則忽略該重傳請求。
[0054]編碼設(shè)備在進(jìn)行數(shù)據(jù)重傳的時(shí)候可以采用組播的方式,也可以采用單播的方式。如果解碼設(shè)備是以組播的方式來接收媒體流數(shù)據(jù)的,則編碼設(shè)備使用組播的方式進(jìn)行媒體流數(shù)據(jù)的重傳將更具優(yōu)勢。因?yàn)樵谝粋€(gè)組播組中,一個(gè)解碼設(shè)備發(fā)現(xiàn)丟包的時(shí)候,其它加入同一組播組的解碼設(shè)備發(fā)現(xiàn)丟包的概率也比較大。所以編碼設(shè)備直接利用組播的方式重傳媒體流數(shù)據(jù)包將減低編碼設(shè)備的重傳壓力,減少同一媒體流數(shù)據(jù)因多個(gè)解碼設(shè)備均反饋丟包而多次重傳的情況,提高帶寬利用率。
[0055]由于本發(fā)明的方案并不限于應(yīng)用在組播進(jìn)行媒體流發(fā)送的環(huán)境中;在編碼設(shè)備單播發(fā)送媒體流的場景下也同樣適用。如果解碼設(shè)備是單播接收編碼設(shè)備發(fā)送的媒體流數(shù)據(jù)包的,編碼設(shè)備在重傳丟失的媒體流數(shù)據(jù)包時(shí)將以單播的方式發(fā)送給解碼設(shè)備。[0056]實(shí)施例二
[0057]實(shí)施例二是實(shí)施例一的優(yōu)化。在實(shí)施例一的基礎(chǔ)上,進(jìn)一步地,解碼設(shè)備的媒體流重傳處理模塊在超過等待時(shí)間T2后,如果仍未收到重傳的媒體流數(shù)據(jù),則繼續(xù)發(fā)送重傳請求。在本實(shí)施例中,可以設(shè)定最大重傳次數(shù)N。以下詳細(xì)描述該方案。
[0058]步驟31、在編碼設(shè)備上開辟緩存空間,用于備份媒體流數(shù)據(jù)包。
[0059]該步驟的具體實(shí)施請參照實(shí)施例一。
[0060]步驟32、編碼設(shè)備的媒體流發(fā)送模塊發(fā)送媒體流數(shù)據(jù)包,并由媒體流備份模塊將發(fā)送的媒體流數(shù)據(jù)包在緩存空間中進(jìn)行備份。
[0061]該步驟的具體實(shí)施請參照實(shí)施例一。
[0062]步驟33、解碼設(shè)備的媒體流接收模塊接收媒體流數(shù)據(jù)包并將其存放在解碼設(shè)備緩存空間中,如果丟包檢測模塊檢測到丟包,則由媒體流重傳處理模塊執(zhí)行重傳處理:向編碼設(shè)備發(fā)送針對丟失的數(shù)據(jù)包的重傳請求,同時(shí)開啟等待時(shí)長為T2的定時(shí)器;并且通知解碼模塊對媒體流接收模塊后續(xù)收到并緩存的媒體流數(shù)據(jù)不進(jìn)行解碼;如果在T2時(shí)間內(nèi)確認(rèn)接收到重傳的媒體流數(shù)據(jù)包,則通知解碼模塊將接收到的媒體流數(shù)據(jù)包和緩存中的媒體流數(shù)據(jù)包一并解碼;如果在T2時(shí)間內(nèi)緩存空間中緩存的媒體流數(shù)據(jù)達(dá)到預(yù)設(shè)的最大值,則通知解碼模塊對緩存中的媒體流數(shù)據(jù)包進(jìn)行解碼;如果超過T2時(shí)間未收到該重傳的媒體流數(shù)據(jù)包,則媒體流重傳處理模塊進(jìn)一步判斷是否到達(dá)最大重傳次數(shù)N,如果是,則直接通知解碼模塊將緩存的媒體流數(shù)據(jù)解碼;否則繼續(xù)向編碼設(shè)備發(fā)送重傳請求,直到接收到重傳的媒體流數(shù)據(jù)包或者緩存的媒體流數(shù)據(jù)包到達(dá)最大值或者到達(dá)最大重傳次數(shù)。
[0063]參見圖4,該圖描述了解碼設(shè)備在發(fā)現(xiàn)丟包后的處理流程。
[0064]Sa、接收媒體流數(shù)據(jù)包并緩存。
[0065]Sb、判斷是否發(fā)生丟包,如果是,轉(zhuǎn)Sc ;否則,轉(zhuǎn)Sd。
[0066]Sc、發(fā)送針對丟失數(shù)據(jù)包的重傳請求,同時(shí)開啟時(shí)長為T2的定時(shí)器,,并且將后續(xù)收到的媒體流數(shù)據(jù)緩存,轉(zhuǎn)Se。
[0067]Sd、對接收到的媒體流數(shù)據(jù)包進(jìn)行解碼。
[0068]Se、超過T2時(shí)間是否未接收到請求重傳的媒體流數(shù)據(jù)包,如果是,則轉(zhuǎn)Sf ;否則,轉(zhuǎn)Sd。
[0069]Sf、判斷是否到達(dá)最大重傳次數(shù)N,如果是,轉(zhuǎn)Sd ;否則,轉(zhuǎn)Sc。
[0070]最大重傳次數(shù)N可以預(yù)先在解碼設(shè)備上進(jìn)行設(shè)置;也可以由編碼設(shè)備對自身的最大重傳次數(shù)M進(jìn)行設(shè)置后通過信令傳輸給解碼設(shè)備,解碼設(shè)備根據(jù)編碼設(shè)備傳遞的最大重傳次數(shù)M調(diào)整自身的最大重傳次數(shù)N。無論是N還是M,都可以在設(shè)置好以后不再變更。但是更優(yōu)的方式顯然是由解碼設(shè)備或者編碼設(shè)備自適應(yīng)的對其進(jìn)行調(diào)整。參見圖6,解碼設(shè)備在調(diào)整最大重傳次數(shù)N時(shí)可以由其最大重傳次數(shù)調(diào)整模塊來執(zhí)行,具體為:在備份緩存中媒體流數(shù)據(jù)未被覆蓋,解碼設(shè)備請求重傳的次數(shù)到達(dá)最大重傳次數(shù)N但并未重傳成功,則將最大重傳次數(shù)更新為N+1 ;在解碼設(shè)備請求重傳的次數(shù)未到達(dá)最大重傳次數(shù)N但請求重傳的媒體流數(shù)據(jù)已經(jīng)被覆蓋,則將最大重傳次數(shù)更新為N-1。這里解碼設(shè)備請求重傳時(shí),對應(yīng)的媒體流數(shù)據(jù)是否保存在編碼設(shè)備的備份緩存空間可以由編碼設(shè)備通過信令來告知解碼設(shè)備。這種調(diào)整策略可以提高重傳成功率,自適應(yīng)網(wǎng)絡(luò)丟包的情況。編碼設(shè)備自適應(yīng)的調(diào)整最大重傳次數(shù)N的方法請參下文描述。[0071]實(shí)施例一實(shí)際上是N=I的特殊情況。
[0072]步驟34、編碼設(shè)備的媒體流重傳模塊接收到解碼設(shè)備的重傳請求,判斷緩存空間中是否存在待重傳的媒體流數(shù)據(jù),如果不存在,則不進(jìn)行重傳;如果存在,則查看最后重傳時(shí)間與當(dāng)前時(shí)間的差是否小于預(yù)設(shè)的最小重傳時(shí)間間隔Tm,如果是,則不再進(jìn)行重傳;否貝U,對該媒體流數(shù)據(jù)進(jìn)行重傳,同時(shí)更新最后重傳時(shí)間為當(dāng)前的重傳時(shí)間。
[0073]最小重傳時(shí)間間隔Tm可以預(yù)先在編碼設(shè)備上進(jìn)行設(shè)置,可以在設(shè)置好以后就不再更改;更優(yōu)的,可以按照如下策略進(jìn)行調(diào)整:針對相同的媒體流數(shù)據(jù)被請求多次時(shí),記錄其中兩次最大時(shí)間間隔,將這兩次最大時(shí)間間隔的平均值作為新的Tm。
[0074]編碼設(shè)備的上述處理方式,可以在Tm時(shí)間內(nèi)針對同一個(gè)媒體流數(shù)據(jù)有多次重傳請求時(shí)只重傳一次。在組播傳輸媒體流數(shù)據(jù)的情況下,接入同一組播組的解碼設(shè)備可能針對同一媒體流數(shù)據(jù)在較短的時(shí)間間隔內(nèi)先后發(fā)送重傳請求,在編碼設(shè)備通過組播方式發(fā)送丟失的媒體流數(shù)據(jù)時(shí)就沒有必要響應(yīng)每一個(gè)重傳請求而多次發(fā)送丟失的媒體流數(shù)據(jù)包。這樣處理方式可以節(jié)省網(wǎng)絡(luò)帶寬。
[0075]編碼設(shè)備還可以對自身的重傳次數(shù)M進(jìn)行設(shè)定,當(dāng)接收到重傳請求后進(jìn)一步確認(rèn)當(dāng)前的重傳次數(shù)是否小于預(yù)設(shè)的最大重傳次數(shù)M,如果是,則進(jìn)行重傳,并更新重傳次數(shù);否則不再進(jìn)行重傳。
[0076]該最大重傳次數(shù)M可以是在設(shè)置好以后不再變更,也可以由編碼設(shè)備的最大重傳次數(shù)調(diào)整模塊進(jìn)行自適應(yīng)調(diào)整,參見圖5。編碼設(shè)備的最大重傳次數(shù)調(diào)整模塊根據(jù)解碼設(shè)備一段時(shí)間內(nèi)請求重傳的媒體流數(shù)據(jù)被覆蓋的比率對M進(jìn)行自適應(yīng)的調(diào)整。比如在該段時(shí)間請求重傳的媒體流數(shù)據(jù)中已被覆蓋的比率達(dá)到閾值D,則最大重傳次數(shù)M減少一次。舉個(gè)例子,在一段時(shí)間內(nèi)請求重傳的媒體流數(shù)據(jù)為S1、s2、s3、s4、s5、s6、s7、s8,其中s2、s3、s4已經(jīng)被覆蓋而導(dǎo)致重傳失敗,則覆蓋比率為37.5% ;如果上述閾值D為30%,則將最大重傳次數(shù)M減少一次。之所以使用一段時(shí)間內(nèi)請求重傳的媒體流數(shù)據(jù)被覆蓋的比率是因?yàn)榭赡芡幻襟w流數(shù)據(jù)因?yàn)橐迅采w導(dǎo)致多個(gè)解碼設(shè)備請求重傳失敗,故不能簡單的使用媒體數(shù)據(jù)重傳失敗的次數(shù)。如果解碼設(shè)備的最大重傳次數(shù)N的調(diào)整是由編碼設(shè)備通過媒體信令告知自身的最大重傳次數(shù)M而進(jìn)行調(diào)整的話,編碼設(shè)備將自身調(diào)整后的最大重傳次數(shù)M告知解碼設(shè)備,解碼設(shè)備據(jù)此調(diào)整自身的最大重傳次數(shù),即將N調(diào)整成和M相同的值。
[0077]步驟34中編碼設(shè)備的這種處理方式在實(shí)施例一中也可以使用,并不限于使用于實(shí)施例二。
[0078]實(shí)施例三
[0079]實(shí)施例三主要適用于組播發(fā)送媒體流數(shù)據(jù)的情況。本實(shí)施例在實(shí)施例一、實(shí)施例二的基礎(chǔ)上增加以下技術(shù)內(nèi)容:在加入組播組的解碼設(shè)備中選取檢測點(diǎn),該檢測點(diǎn)用于向編碼設(shè)備發(fā)送接收到媒體流數(shù)據(jù)后的確認(rèn)應(yīng)答,編碼設(shè)備接收到該應(yīng)答信息后,從緩存中刪除對應(yīng)的備份媒體流數(shù)據(jù)。
[0080]實(shí)施例三編碼設(shè)備內(nèi)嵌的媒體流可靠傳輸裝置如圖7所示,其在圖2的基礎(chǔ)上增加了:檢測點(diǎn)選取模塊和媒體流刪除模塊。實(shí)施例三的解碼設(shè)備內(nèi)嵌的媒體流可靠接收裝置如圖8所示,其在圖3的基礎(chǔ)上增加了確認(rèn)應(yīng)答模塊。這些模塊同樣以軟件代碼的形式進(jìn)行存儲(chǔ)。編碼設(shè)備和解碼設(shè)備的處理器分別通過執(zhí)行這些代碼指令來實(shí)現(xiàn)實(shí)施例三所要達(dá)到的功能。[0081]步驟41、編碼設(shè)備的檢測點(diǎn)選取模塊周期性地從同一組播組的解碼設(shè)備中選取檢測點(diǎn)。
[0082]編碼設(shè)備的檢測點(diǎn)選取模塊定期,比如預(yù)先配置每30秒,發(fā)送組播的ICMP報(bào)文;組播組中的解碼設(shè)備在收到該ICMP報(bào)文后,向編碼設(shè)備發(fā)送單播的回應(yīng)消息;編碼設(shè)備的檢測點(diǎn)選取模塊將預(yù)設(shè)時(shí)間內(nèi)收到的最后一個(gè)回應(yīng)消息的發(fā)送解碼設(shè)備選取為檢測點(diǎn),并通知該解碼設(shè)備開啟檢測功能。
[0083]在新建組播實(shí)況或者釋放組播實(shí)況關(guān)系時(shí),編碼設(shè)備可以重新進(jìn)行檢測點(diǎn)的選取。
[0084]步驟42、作為檢測點(diǎn)的解碼設(shè)備的確認(rèn)應(yīng)答模塊在接收組播的媒體流數(shù)據(jù)后向編碼設(shè)備發(fā)送確認(rèn)應(yīng)答。
[0085]例如,檢測點(diǎn)解碼設(shè)備接收到序號(hào)為100的媒體流數(shù)據(jù)包,則反饋編碼設(shè)備:序號(hào)為100的媒體流數(shù)據(jù)包已經(jīng)被接收到了。檢測點(diǎn)解碼設(shè)備可以每收到一個(gè)媒體流數(shù)據(jù)包就進(jìn)行一次反饋,或者接收到多個(gè)數(shù)據(jù)包后進(jìn)行集中反饋。比如說等待20ms,檢測點(diǎn)解碼設(shè)備收到了序號(hào)為100、101、103、105、106、107的數(shù)據(jù)包,則向編碼設(shè)備確認(rèn)序號(hào)為100、101、103、105、106、107的數(shù)據(jù)包已經(jīng)收到。
[0086]步驟43、編碼設(shè)備接收到檢測點(diǎn)解碼設(shè)備發(fā)送的確認(rèn)應(yīng)答后,由媒體流刪除模塊刪除緩存中對應(yīng)的備份媒體流數(shù)據(jù)。
[0087]實(shí)施例三增加了一種編碼設(shè)備備份媒體流數(shù)據(jù)的機(jī)制。編碼設(shè)備在備份媒體流數(shù)據(jù)時(shí),只要該媒體流數(shù)據(jù)被檢測點(diǎn)解碼設(shè)備確認(rèn)已經(jīng)接收到就可以將其從緩存空間中刪除。如此,可以騰挪出更多的緩存空間給新的媒體流數(shù)據(jù)進(jìn)行備份。
[0088]對于編碼設(shè)備為多通道的情況優(yōu)勢將更加明顯。各通道通常具有各自獨(dú)立的用于備份媒體流數(shù)據(jù)的緩存空間。各通道用于備份媒體流數(shù)據(jù)的緩存空間的大小可以基于該通道的媒體流數(shù)據(jù)預(yù)設(shè)的備份時(shí)間Tl或者預(yù)設(shè)的備份固定數(shù)量的媒體流數(shù)據(jù)包來確定。備份的媒體流數(shù)據(jù)采用循環(huán)覆蓋的方法寫入該用于備份的緩存空間。在采用實(shí)施例三的方法后,在編碼設(shè)備收到檢測點(diǎn)的確認(rèn)后,可將對應(yīng)通道的備份數(shù)據(jù)刪除,如果此時(shí)該通道的用于備份數(shù)據(jù)的剩余緩存空間大于預(yù)設(shè)值,則將該通道的部分緩存空間共享給其他通道使用,這樣可以使得其他通道的數(shù)據(jù)超出原本可以備份的時(shí)間。這樣就能減少重傳失敗次數(shù),提高多通道的重傳成功率。以下通過一個(gè)例子詳細(xì)具體的實(shí)施方法。
[0089]S1、編碼設(shè)備的每個(gè)通道獨(dú)立的按照碼率進(jìn)行備份緩存的申請,即用于備份媒體流數(shù)據(jù)的緩存的大小為:碼率大小Mi*備份媒體數(shù)據(jù)間隔Tl ;
[0090]S2、建立每個(gè)通道的備份緩存起始地址、當(dāng)前使用地址、末尾地址、已使用大小、剩余大小等信息的全局映射表,并增加全局剩余備份緩存數(shù)量信息(全局剩余備份緩存是供各通道共同使用的備份緩存空間),將所有通道申請的備份緩存集中管理;
[0091]S3、對于每個(gè)通道,當(dāng)編碼設(shè)備收到檢測點(diǎn)反饋的媒體流數(shù)據(jù)接收成功后,立即釋放該媒體流數(shù)據(jù)包序號(hào)之前所有的備份數(shù)據(jù)。如果此時(shí)本通道剩余的緩存大小為M1,那么如果Ml大于Mi*Tl*cl,其中cl為[O, I]之間的比率值,比如,經(jīng)驗(yàn)數(shù)值為0.2,則將剩余的備份緩存Ml-Mi*Tl*cl釋放,并入全局剩余備份緩存,并更新全局剩余備份緩存數(shù)量信息與地址信息;
[0092]S4、每個(gè)通道的緩存剩余不足Mi*Tl*c2時(shí),向全局剩余備份緩存申請大于Mi*Tl*c3的緩存空間大小,其中c2和c3均為[O,I]之間的比率值,比如,c2的經(jīng)驗(yàn)值為
0.05左右和c3的經(jīng)驗(yàn)值為0.3左右。
[0093]以上實(shí)施例一、實(shí)施例二和實(shí)施例三作為一種保證媒體流數(shù)據(jù)可靠傳輸?shù)姆桨父嗟倪m用于用戶需要流暢觀看的視頻圖像的情況。如果用戶希望獲得實(shí)時(shí)性非常好的視頻圖像,則不應(yīng)該考慮使用本發(fā)明方案。所以為了兼容多種使用場景,可以在解碼設(shè)備上設(shè)置使能開關(guān):在需要流暢優(yōu)先時(shí),開啟解碼設(shè)備的緩存機(jī)制;在需要實(shí)時(shí)性優(yōu)先時(shí),不開啟解碼設(shè)備的緩存機(jī)制。
[0094]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
【權(quán)利要求】
1.一種媒體流可靠傳輸?shù)姆椒?,該方法?yīng)用于編碼設(shè)備,其特征在于,該編碼設(shè)備上開辟有專門用于媒體流數(shù)據(jù)備份的緩存空間,該方法包括如下步驟: A、發(fā)送媒體流數(shù)據(jù)包,并將發(fā)送的媒體流數(shù)據(jù)在所述緩存空間中進(jìn)行備份; B、接收解碼設(shè)備發(fā)送的重傳請求,判斷所述緩存空間中是否存在待重傳的媒體流數(shù)據(jù),如果存在,則對該媒體流數(shù)據(jù)進(jìn)行重傳,否則忽略該重傳請求。
2.如權(quán)利要求1所述的方法,其特征在于,所述開辟的緩存空間的大小基于媒體流數(shù)據(jù)預(yù)設(shè)的備份時(shí)間Tl或者基于預(yù)設(shè)的備份固定數(shù)量的媒體流數(shù)據(jù)包來確定。
3.如權(quán)利要求1所述的方法,其特征在于,所述媒體流數(shù)據(jù)在緩存空間備份的時(shí)候采用循環(huán)覆蓋的方法進(jìn)行備份。
4.如權(quán)利要求1所述的方法,其特征在于,如果步驟A中的媒體流數(shù)據(jù)包是以組播的方式進(jìn)行發(fā)送的,則步驟B也以組播的方式發(fā)送待重傳的媒體流數(shù)據(jù)包。
5.如權(quán)利要求1所述的方法,其特征在于,步驟B中如果緩存空間中存在待重傳的媒體流數(shù)據(jù),則進(jìn)一步查看該媒體流數(shù)據(jù)最后重傳時(shí)間與當(dāng)前時(shí)間的差是否小于預(yù)設(shè)的最小重傳時(shí)間間隔Tm,如果是,則不再進(jìn)行重傳;否則,對該媒體流數(shù)據(jù)進(jìn)行重傳,同時(shí)更新最后重傳時(shí)間為當(dāng)前的重傳時(shí)間;或/和 步驟B中如果緩存空間中存在待重傳的媒體流數(shù)據(jù),則進(jìn)一步確認(rèn)該媒體流數(shù)據(jù)的重傳次數(shù)是否小于預(yù)設(shè)的最大重傳次數(shù)M,如果是,則進(jìn)行重傳,并更新重傳次數(shù);否則不再進(jìn)行重傳。
6.如權(quán)利要求5所述的方法,其特征在于,所述最大重傳次數(shù)M由編碼設(shè)備根據(jù)解碼設(shè)備一段時(shí)間內(nèi)請求重傳的媒體流數(shù)據(jù)被覆蓋的比率進(jìn)行自適應(yīng)的調(diào)整。
7.如權(quán)利要求1所述的方法,其特征在于,在所述步驟A中的媒體流數(shù)據(jù)包是以組播的方式進(jìn)行發(fā)送的情況下,該方法還包括: 步驟A’、從同一組播組的解碼設(shè)備中選取在接收到組播媒體流數(shù)據(jù)包后向編碼設(shè)備發(fā)送確認(rèn)應(yīng)答的檢測點(diǎn); 步驟B’、編碼設(shè)備接收到檢測點(diǎn)發(fā)送的確認(rèn)應(yīng)答后,刪除緩存中對應(yīng)的備份媒體流數(shù)據(jù)。
8.如權(quán)利要求7所述的方法,其特征在于,在編碼設(shè)備具有多個(gè)通道,每個(gè)通道具有自身的緩存媒體流數(shù)據(jù)的備份空間時(shí),編碼設(shè)備接收到檢測點(diǎn)發(fā)送的針對某一通道的媒體流數(shù)據(jù)的確認(rèn)應(yīng)答,刪除該通道緩存中對應(yīng)的備份媒體流數(shù)據(jù)后,如果此時(shí)該通道的剩余緩存?zhèn)浞菘臻g大于預(yù)設(shè)值,則將該通道部分緩存?zhèn)浞菘臻g共享給其他通道使用。
9.如權(quán)利要求7所述的方法,其特征在于,步驟A’中從同一組播組的解碼設(shè)備中選取檢測點(diǎn)的方法具體為:發(fā)送組播的ICMP報(bào)文給解碼設(shè)備;將預(yù)設(shè)時(shí)間內(nèi)收到的最后一個(gè)回應(yīng)ICMP消息的解碼設(shè)備選取為檢測點(diǎn),并通知該解碼設(shè)備開啟檢測功能。
10.一種媒體流可靠接收的方法,該方法應(yīng)用于解碼設(shè)備,其特征在于,該方法包括如下步驟: A、接收媒體流數(shù)據(jù)包并緩存; B、對媒體流數(shù)據(jù)包進(jìn)行丟包檢測,如果檢測到丟包,轉(zhuǎn)步驟C; C、向編碼設(shè)備發(fā)送針對丟失數(shù)據(jù)包的重傳請求,同時(shí)開啟時(shí)長為T2的定時(shí)器,并且將后續(xù)收到的媒體流數(shù)據(jù)緩存;D、在定時(shí)器超時(shí)前接收到重傳的媒體流數(shù)據(jù)包,則將接收到的重傳的媒體流數(shù)據(jù)包和緩存中的媒體流數(shù)據(jù)包一并解碼;在定時(shí)器超時(shí)前未接收到重傳的媒體流數(shù)據(jù)包且緩存的媒體流數(shù)據(jù)達(dá)到預(yù)設(shè)的最大值時(shí),則將緩存的媒體流數(shù)據(jù)進(jìn)行解碼;在定時(shí)器超時(shí)且未收到該重傳的媒體流數(shù)據(jù)包,則將緩存的媒體流數(shù)據(jù)解碼。
11.如權(quán)利要求10所述的方法,其特征在于,所述步驟D進(jìn)一步包括:如果定時(shí)器超時(shí)且未收到該重傳的媒體流數(shù)據(jù)包,則判斷是否到達(dá)預(yù)設(shè)的最大重傳次數(shù)N,如果是,則進(jìn)行解碼;否則,轉(zhuǎn)步驟C。
12.如權(quán)利要求11所述的方法,其特征在于,該預(yù)設(shè)的最大重傳次數(shù)N是動(dòng)態(tài)調(diào)整生成的,其中該動(dòng)態(tài)調(diào)整方法具體為: 在備份緩存中媒體流數(shù)據(jù)未被覆蓋,解碼設(shè)備請求重傳的次數(shù)到達(dá)最大重傳次數(shù)N但并未重傳成功,則將最大重傳次數(shù)更新為N+1 ;在解碼設(shè)備請求重傳的次數(shù)未到達(dá)最大重傳次數(shù)N但在備份緩存中媒體流數(shù)據(jù)已經(jīng)被覆蓋,則將最大重傳次數(shù)更新為N-1 ; 或者根據(jù)編碼設(shè)備動(dòng)態(tài)調(diào)整最大重傳次數(shù)M的結(jié)果調(diào)整N。
13.如權(quán)利要求10所述的方法,其特征在于,所述丟包檢測的方法具體為:判斷接收到的媒體流數(shù)據(jù)包是否連續(xù),即當(dāng)前收到的數(shù)據(jù)包序號(hào)是否等于上一個(gè)接收到的數(shù)據(jù)包序列號(hào)加一,如果等于則判斷為不丟包;否則判斷為丟包;或者, 當(dāng)接收到的η (η為預(yù)設(shè)值)個(gè)媒體流數(shù)據(jù)包時(shí)先對這η個(gè)媒體流數(shù)據(jù)包進(jìn)行排序,然后按照數(shù)據(jù)包的序號(hào)進(jìn)行丟包檢測;且將當(dāng)前收到的數(shù)據(jù)包序號(hào)與上一次丟包檢測時(shí)最后一個(gè)數(shù)據(jù)包的序號(hào)進(jìn)行比較,如果序號(hào)差值大于等于預(yù)設(shè)值,則確認(rèn)出現(xiàn)丟包。
14.如權(quán)利要求10所述的方法,其特征在于,所述重傳請求使用UDP單播進(jìn)行發(fā)送,該單播的目的IP地址和端口號(hào)在編碼設(shè)備和解碼設(shè)備建立媒體流數(shù)據(jù)的信令交互中由編碼設(shè)備傳遞給解碼設(shè)備。
15.如權(quán)利要求10所述的方法,`其特征在于,所述定時(shí)器時(shí)長Τ2動(dòng)態(tài)調(diào)整生成,該動(dòng)態(tài)調(diào)整的方法包括:解碼設(shè)備定期發(fā)送PING包給編碼設(shè)備以獲取數(shù)據(jù)包當(dāng)前的傳輸時(shí)間,根據(jù)該傳輸時(shí)間的大小變化相應(yīng)調(diào)整Τ2的大小。
16.如權(quán)利要求10或11所述的方法,其特征在于,由編碼設(shè)備確認(rèn)為檢測點(diǎn)的解碼設(shè)備在接收到媒體流數(shù)據(jù)包后按照如下方法發(fā)送確認(rèn)應(yīng)答:每收到一個(gè)媒體流數(shù)據(jù)包就進(jìn)行一次確認(rèn)應(yīng)答,或者接收到多個(gè)數(shù)據(jù)包后進(jìn)行集中反饋確認(rèn)應(yīng)答。
17.一種媒體流可靠傳輸裝置,該媒體流可靠傳輸裝置應(yīng)用于編碼設(shè)備上,其特征在于,該編碼設(shè)備上開辟有專門用于媒體流數(shù)據(jù)備份的緩存空間,所述媒體流可靠傳輸裝置包括: 媒體流發(fā)送模塊,用于發(fā)送媒體流數(shù)據(jù)包; 媒體流備份模塊,用于將發(fā)送的媒體流數(shù)據(jù)包在所述緩存空間中進(jìn)行備份; 媒體流重傳模塊,用于在接收到解碼設(shè)備發(fā)送的重傳請求后,判斷所述緩存空間中是否存在待重傳的媒體流數(shù)據(jù),如果存在,則對該媒體流數(shù)據(jù)進(jìn)行重傳,否則忽略該重傳請求。
18.如權(quán)利要求17所述的媒體流可靠傳輸裝置,其特征在于,所述開辟的緩存空間的大小基于媒體流數(shù)據(jù)預(yù)設(shè)的備份時(shí)間Tl或者基于預(yù)設(shè)的備份固定數(shù)量的媒體流數(shù)據(jù)包來確定。
19.如權(quán)利要求17所述的媒體流可靠傳輸裝置,其特征在于,所述媒體流備份模塊將媒體流數(shù)據(jù)在緩存空間備份的時(shí)候采用循環(huán)覆蓋的方法進(jìn)行備份。
20.如權(quán)利要求17所述的媒體流可靠傳輸裝置,其特征在于,如果媒體流發(fā)送模塊以組播方式發(fā)送媒體流數(shù)據(jù)包,則媒體流數(shù)據(jù)重傳時(shí)也以組播的方式進(jìn)行重傳。
21.如權(quán)利要求17所述的媒體流可靠傳輸裝置,其特征在于,媒體流重傳模塊,進(jìn)一步用于在緩存空間中存在待重傳的媒體流數(shù)據(jù)時(shí),查看最后重傳時(shí)間與當(dāng)前時(shí)間的差是否小于預(yù)設(shè)的最小重傳時(shí)間間隔Tm,如果是,則不再進(jìn)行重傳;否則,對該媒體流數(shù)據(jù)進(jìn)行重傳,同時(shí)更新最后重傳時(shí)間為當(dāng)前的重傳時(shí)間;或/和 該媒體流重傳模塊,進(jìn)一步用于在緩存空間中存在待重傳的媒體流數(shù)據(jù)時(shí),進(jìn)一步確認(rèn)重傳次數(shù)M是否小于預(yù)設(shè)的最大重傳次數(shù)M,如果是,則進(jìn)行重傳,并更新重傳次數(shù);否則不再進(jìn)行重傳。
22.如權(quán)利要求21所述的媒體流可靠傳輸裝置,其特征在于,該裝置還包括最大重傳次數(shù)調(diào)整模塊,該模塊根據(jù)解碼設(shè)備一段時(shí)間內(nèi)請求重傳的媒體流數(shù)據(jù)被覆蓋的比率對所述最大重傳次數(shù)M進(jìn)行自適應(yīng)的調(diào)整。
23.如權(quán)利要求17所述的媒體流可靠傳輸裝置,其特征在于,該媒體流可靠傳輸裝置還包括: 檢測點(diǎn)選取模塊,該模塊用于在媒體流數(shù)據(jù)包是以組播的方式進(jìn)行發(fā)送的情況下,從同一組播組的解碼設(shè)備中選取在接收到組播媒體流數(shù)據(jù)包后向編碼設(shè)備發(fā)送確認(rèn)應(yīng)答的檢測點(diǎn); 媒體流刪除模塊,該模塊用于在編碼設(shè)備接收到檢測點(diǎn)發(fā)送的確認(rèn)應(yīng)答后,刪除緩存中對應(yīng)的備份媒體流數(shù)據(jù)。
24.如權(quán)利要求23所述的媒體流可靠傳輸裝置,其特征在于,檢測點(diǎn)選取模塊從同一組播組的解碼設(shè)備中選取檢測點(diǎn)的方法具體為:發(fā)送組播的ICMP報(bào)文給解碼設(shè)備;將預(yù)設(shè)時(shí)間內(nèi)收到的最后一個(gè)回應(yīng)ICMP消息的解碼設(shè)備選取為檢測點(diǎn),并通知該解碼設(shè)備開啟檢測功能。
25.一種媒體流可靠接收裝置,該媒體流可靠接收裝置應(yīng)用于解碼設(shè)備上,其特征在于,該媒體流可靠接收裝置包括: 媒體流接收模塊,用于接收媒體流數(shù)據(jù)包,并將接收到的媒體流數(shù)據(jù)包存放于解碼緩存空間中; 丟包檢測模塊,用于對媒體流數(shù)據(jù)包進(jìn)行丟包檢測,并將檢測結(jié)果告知媒體流重傳模塊; 媒體流重傳處理模塊,用于在丟包檢測模塊檢測到丟包時(shí),向編碼設(shè)備發(fā)送針對丟失的數(shù)據(jù)包的重傳請求,同時(shí)開啟等待時(shí)長為T2的定時(shí)器;并在定時(shí)器超時(shí)前接收到重傳的媒體流數(shù)據(jù)包,將通知解碼模塊將接收到的重傳的媒體流數(shù)據(jù)包和緩存中的媒體流數(shù)據(jù)包一并解碼;在定時(shí)器超時(shí)前未接收到重傳的媒體流數(shù)據(jù)包且緩存空間中緩存的媒體流數(shù)據(jù)達(dá)到預(yù)設(shè)的最大值,則通知解碼模塊對緩存中的媒體流數(shù)據(jù)進(jìn)行解碼;在定時(shí)器超時(shí)且未收到該重傳的媒體流數(shù)據(jù)包,則通知解碼模塊對緩存中的媒體流數(shù)據(jù)進(jìn)行解碼。
26.如權(quán)利要求25所述的媒體流可靠接收裝置,其特征在于,所述重傳處理模塊進(jìn)一步用于在定時(shí)器超時(shí)且未收到該重傳的媒體流數(shù)據(jù)包時(shí),判斷是否到達(dá)預(yù)設(shè)的最大重傳次數(shù)N,如果是,則通知解碼模塊進(jìn)行解碼;否則重新執(zhí)行重傳處理。
27.如權(quán)利要求26所述的媒體流可靠接收裝置,其特征在于,該裝置還包括最大重傳次數(shù)調(diào)整模塊,該模塊用于在備份緩存中媒體流數(shù)據(jù)未被覆蓋但解碼設(shè)備請求重傳的次數(shù)到達(dá)最大重傳次數(shù)N但并未重傳成功,則將最大重傳次數(shù)更新為N+1 ;在解碼設(shè)備請求重傳的次數(shù)未到達(dá)最大重傳次數(shù)N但待重傳的媒體流數(shù)據(jù)已經(jīng)被覆蓋時(shí),則將最大重傳次數(shù)更新為N-1 ;或者 該模塊根據(jù)編碼設(shè)備動(dòng)態(tài)調(diào)整最大重傳次數(shù)M的結(jié)果調(diào)整N。
28.如權(quán)利要求25所述的媒體流可靠接收裝置,其特征在于,所述丟包檢測模塊判斷接收到的媒體流數(shù)據(jù)包是否連續(xù),如果連續(xù)則判斷為不丟包;否則判斷為丟包;或者, 該丟包檢測模塊當(dāng)接收到η (η為預(yù)設(shè)值)個(gè)媒體流數(shù)據(jù)包時(shí)先對這η個(gè)媒體流數(shù)據(jù)包進(jìn)行排序,然后按照數(shù)據(jù)包的序號(hào)進(jìn)行丟包檢測;該丟包檢測模塊還將當(dāng)前收到的數(shù)據(jù)包序號(hào)與上一次丟包檢測時(shí)最后一個(gè)數(shù)據(jù)包的序號(hào)進(jìn)行比較,如果序號(hào)差值大于等于預(yù)設(shè)值,則確認(rèn)出現(xiàn)丟包。
29.如權(quán)利要求25所述的媒體流可靠接收裝置,其特征在于,所述媒體流重傳處理模塊使用UDP單播發(fā)送重傳請求,該單播的目的IP地址和端口號(hào)在編碼設(shè)備和解碼設(shè)備建立媒體流數(shù)據(jù)的信令交互中由編碼設(shè)備傳遞給解碼設(shè)備。
30.如權(quán)利要求25所述的媒體流可靠接收裝置,其特征在于,該裝置還包括定時(shí)器時(shí)長Τ2調(diào)整模塊,該模塊用于定期發(fā)送PING包給編碼設(shè)備以獲取數(shù)據(jù)包當(dāng)前的傳輸時(shí)間,根據(jù)該傳輸時(shí)間的大小變化相應(yīng)調(diào)整Τ2的大小。
31.如權(quán)利要求25或26所述的媒體流可靠接收裝置,其特征在于,該接收裝置進(jìn)一步包括確認(rèn)應(yīng)答模塊,該確認(rèn)應(yīng)答模塊在被編碼設(shè)備認(rèn)為自身的解碼設(shè)備為檢測點(diǎn)后按照如下方法發(fā)送確認(rèn)應(yīng)答:每收到一個(gè)媒體流`數(shù)據(jù)包就進(jìn)行一次確認(rèn)應(yīng)答,或者接收到多個(gè)數(shù)據(jù)包后進(jìn)行集中反饋確認(rèn)應(yīng)答。
【文檔編號(hào)】H04N21/643GK103533450SQ201310426244
【公開日】2014年1月22日 申請日期:2013年9月17日 優(yōu)先權(quán)日:2013年6月9日
【發(fā)明者】周迪, 陳乾業(yè), 張磊 申請人:浙江宇視科技有限公司