一种媒体流可靠传输和接收的方法以及装置制造方法

文档序号:7770849阅读:155来源:国知局
一种媒体流可靠传输和接收的方法以及装置制造方法
【专利摘要】本发明提供一种可靠传送媒体流的方案。该方案中的编码设备实行媒体流数据备份机制,解码设备实行媒体流数据缓存机制。编码设备在向解码设备发送媒体流数据时将该媒体流数据存储在专门开辟的缓存空间中以达到将该媒体流数据进行备份的目的。当解码设备发现媒体流数据丢失后,向编码设备发送重传请求,并且缓存后续接收到的媒体流数据;编码设备根据自身缓存空间中备份的媒体流数据响应解码设备的重传请求。解码设备接收到重传的媒体流数据后将其和缓存中的媒体流数据一并进行解码显示。上述方案实现了媒体流数据可靠传输到解码设备上。
【专利说明】一种媒体流可靠传输和接收的方法以及装置
【技术领域】
[0001]本发明涉及媒体流数据传输领域,尤其涉及一种媒体流可靠传输的方法和对应的
装直。
【背景技术】
[0002]为了确保社会稳定和个人财产的安全,视频监控的重要性越来越突出。随着视频监控的涉及面不断增大,其中数据传输量也越来越大,所以需要更先进的技术支持媒体流数据的传输。随着IP技术的发展与逐步完善,越来越多的视频监控由IP网络来承载。
[0003]为了最大限度的减少IP网络上的视频流量大小,很多视频监控网络采用组播技术进行实况流的点播。在图1中,用户I和用户2都需要查看同一个摄像头的实况流,编码器EC可以只发送一条流到客户端的接入层交换机上,由接入层交换机根据组播表项来进行复制分发视频流。在图1中,一条视频流在接入层交换机上被复制成两条流,分别流向用户I和用户2。在IP视频监控网络出现短暂拥塞或者其他问题导致用户I和用户2无法接收到EC发送地完整实况流的情况,用户I和用户2将不能观看到清晰的视频画面。

【发明内容】

[0004]本发明的目的在于提供一种媒体流可靠传输和接收的方法和装置。
[0005]为了达到上述效果,本发明技术方案如下:
[0006]一种媒体流可靠传输的方法,该方法应用于编码设备,该编码设备上开辟有专门用于媒体流数据备份的缓存空间,该方法包括如下步骤:Α、发送媒体流数据包,并将发送的媒体流数据在该缓存空间中进行备份;B、接收解码设备发送的重传请求,判断该缓存空间中是否存在待重传的媒体流数据,如果存在,则对该媒体流数据进行重传,否则忽略该重传请求。
[0007]优选地,开辟的缓存空间的大小基于媒体流数据预设的备份时间Tl或者基于预设的备份固定数量的媒体流数据包来确定,媒体流数据在缓存空间备份的时候采用循环覆盖的方法进行备份。
[0008]优选地,如果步骤A中的媒体流数据包是以组播的方式进行发送的,则步骤B也以组播的方式发送待重传的媒体流数据包。
[0009]优选地,步骤B中如果缓存空间中存在待重传的媒体流数据,则进一步查看该媒体流数据最后重传时间与当前时间的差是否小于预设的最小重传时间间隔Tm,如果是,则不再进行重传;否则,对该媒体流数据进行重传,同时更新最后重传时间为当前的重传时间;或/和,步骤B中如果缓存空间中存在待重传的媒体流数据,则进一步确认该媒体流数据的重传次数是否小于预设的最大重传次数Μ,如果是,则进行重传,并更新重传次数;否则不再进行重传。
[0010]优选地,最大重传次数M由编码设备根据解码设备一段时间内请求重传的媒体流数据被覆盖的比率进行自适应的调整。[0011]优选地,步骤A中的媒体流数据包是以组播的方式进行发送的情况下,该方法还包括:步骤A’、从同一组播组的解码设备中选取在接收到组播媒体流数据包后向编码设备发送确认应答的检测点;步骤B’、编码设备接收到检测点发送的确认应答后,删除缓存中对应的备份媒体流数据。
[0012]优选地,在编码设备具有多个通道,每个通道具有自身的缓存媒体流数据的备份空间时,编码设备接收到检测点发送的针对某一通道的媒体流数据的确认应答,删除该通道缓存中对应的备份媒体流数据后,如果此时该通道的剩余缓存备份空间大于预设值,则将该通道部分缓存备份空间共享给其他通道使用。
[0013]优选地,步骤A’中从同一组播组的解码设备中选取检测点的方法具体为:发送组播的ICMP报文给解码设备;将预设时间内收到的最后一个回应ICMP消息的解码设备选取为检测点,并通知该解码设备开启检测功能。
[0014]一种媒体流可靠接收的方法,该方法应用于解码设备,该方法包括如下步骤:A、接收媒体流数据包并缓存;B、对媒体流数据包进行丢包检测,如果检测到丢包,转步骤C ;C、向编码设备发送针对丢失数据包的重传请求,同时开启时长为T2的定时器,并且将后续收到的媒体流数据缓存;D、在定时器超时前接收到重传的媒体流数据包,则将接收到的重传的媒体流数据包和缓存中的媒体流数据包一并解码;在定时器超时前未接收到重传的媒体流数据包且缓存的媒体流数据达到预设的最大值时,则将缓存的媒体流数据进行解码;在定时器超时且未收到该重传的媒体流数据包,则将缓存的媒体流数据解码。
[0015]优选地,如果定时器超时且未收到该重传的媒体流数据包,则判断是否到达预设的最大重传次数N,如果是,则进行解码;否则,转步骤C。
[0016]优选地,该预设的最大重传次数N是动态调整生成的,其中该动态调整方法具体为:在备份缓存中媒体流数据未被覆盖,解码设备请求重传的次数到达最大重传次数N但并未重传成功,则将最大重传次数更新为N+1 ;在解码设备请求重传的次数未到达最大重传次数N但在备份缓存中媒体流数据已经被覆盖,则将最大重传次数更新为N-1 ;或者根据编码设备动态调整最大重传次数M的结果调整N。
[0017]优选地,丢包检测的方法具体为:判断接收到的媒体流数据包是否连续,即当前收到的数据包序号是否等于上一个接收到的数据包序列号加一,如果等于则判断为不丢包;否则判断为丢包;或者,当接收到的η (η为预设值)个媒体流数据包时先对这η个媒体流数据包进行排序,然后按照数据包的序号进行丢包检测;且将当前收到的数据包序号与上一次丢包检测时最后一个数据包的序号进行比较,如果序号差值大于等于预设值,则确认出现丢包。
[0018]优选地,重传请求使用UDP单播进行发送,该单播的目的IP地址和端口号在编码设备和解码设备建立媒体流数据的信令交互中由编码设备传递给解码设备。
[0019]优选地,定时器时长Τ2动态调整生成,该动态调整的方法包括:解码设备定期发送PING包给编码设备以获取数据包当前的传输时间,根据该传输时间的大小变化相应调整Τ2的大小。
[0020]优选地,由编码设备确认为检测点的解码设备在接收到媒体流数据包后按照如下方法发送确认应答:每收到一个媒体流数据包就进行一次确认应答,或者接收到多个数据包后进行集中反馈确认应答。[0021]基于和方法相同的构思本发明还提供一种媒体流可靠传输装置和接收装置,该媒体流可靠传输装置应用于编码设备上,该媒体流可靠接收装置应用于解码设备上。
[0022]本发明具有以下有益效果:实现了媒体流数据可靠地从编码设备传输到解码设备上;解码设备对完整的媒体流数据进行解码显示后使得视频图像非常流畅。
【专利附图】

【附图说明】
[0023]图1是组播发送媒体流数据网络示意图。
[0024]图2是本发明实施例一编码设备的媒体流可靠传输装置逻辑结构示意图。
[0025]图3是本发明实施例一解码设备的媒体流可靠接收装置逻辑结构示意图。
[0026]图4是本发明实施例二解码设备的媒体可靠接收装置的处理流程图。
[0027]图5是本发明实施例二编码设备的媒体流可靠传输装置逻辑结构示意图。
[0028]图6是本发明实施例二解码设备的媒体流可靠接收装置逻辑结构示意图
[0029]图7是本发明实施例三编码设备的媒体流可靠传输装置逻辑结构示意图。
[0030]图8是本发明实施例三解码设备的媒体流可靠接收装置逻辑结构示意图。
【具体实施方式】
[0031]为解决【背景技术】中提到的技术问题,本发明提供一种可靠传送媒体流的方案。该方案需要对当前的编码设备和解码设备做出改进。本专利中的编码设备指具有编码功能的设备,包括但不限于编码器、网络摄像机。解码设备指具有解码功能的设备,包括但不限于具有解码软件的PC机,解码器。
[0032]编码设备实行媒体流数据备份机制,解码设备实行媒体流数据缓存机制。编码设备在向解码设备发送媒体流数据时将该媒体流数据存储在专门开辟的缓存空间中以达到将该媒体流数据进行备份的目的。当解码设备发现媒体流数据丢失后,向编码设备发送重传请求,并且缓存后续接收到的媒体流数据;编码设备根据自身缓存空间中备份的媒体流数据响应解码设备的重传请求。解码设备将丢失的媒体流数据和缓存中的媒体流数据进行解码显示,从而保证了媒体流数据的可靠传输。下文将通过若干实施例详细来阐述本发明的方案。下面的实施例以软件实现来进行描述,但不应将软件实现方案作为对本发明的限制。实际上软件实现的方案在合适的条件下硬件都能实现,比如说解码模块既可以用业界通用的软解码也可以基于硬件来进行解码。
[0033]实施例一
[0034]编码设备实行基于时间的备份策略:编码设备预设媒体流数据保留时间为Tl,当备份的媒体流数据超过该保留时间Tl则不再备份该媒体流数据。基于这一思路,编码设备在备份媒体流数据时的具体实施方法为:根据该保留时间Tl来开辟一定大小的用于备份媒体流数据的缓存空间。媒体流数据在备份的时候采用循环覆盖的方法写入缓存空间,即该缓存空间写满后从头开始覆盖之前的媒体流数据而写入新的备份数据。由于该缓存空间的大小是依据媒体流数据的备份时间Tl以及其它的一些计算因子,比如编码码率计算得到的,所以循环覆盖地备份媒体流数据基本上保证了媒体流数据在缓存空间中的预设保留时间。
[0035]解码设备在检测到媒体流数据丢失后,向编码设备发送针对该丢失的媒体流数据的重传请求,同时开启定时器,设定等待时间为T2,并且将后续收到的媒体流数据缓存;如果收到重传的媒体流数据,则进行解码;如果超过等待时间T2,仍未收到该重传的媒体流数据,则将缓存的媒体流数据解码。
[0036]如图2,本实施例的编码设备内嵌一媒体流可靠传输的装置,该媒体流可靠传输装置包括:媒体流发送模块、媒体流备份模块、媒体流重传模块。这些模块以软件代码的形式进行存储。编码设备的处理器分别通过执行这些代码指令来实现本实施例的方案。
[0037]如图3,本实施例的解码设备内嵌一媒体流可靠接收的装置,该媒体流可靠接收装置包括:媒体流接收模块、丢包检测模块、媒体流重传处理模块、解码模块。这些模块以软件代码的形式进行存储。解码设备的处理器分别通过执行这些代码指令来实现本实施例的方案。
[0038]本实施例的一种实施流程如下:
[0039]步骤21、在编码设备上开辟缓存空间,用以备份媒体流数据。
[0040]该缓存空间是专门为媒体流数据包的备份而开辟的缓存空间。缓存空间的大小依据媒体流数据需备份的时间来确定。
[0041]实际上除了根据编码设备基于时间的备份策略来开辟缓存空间外,还可以基于固定数量的媒体流数据包策略来开辟缓存空间。比如,编码设备始终要保证有M个媒体流数据包备份在缓存空间中,则可以开辟用于备份的缓存空间的大小为M*L,其中L是每个数据包的长度。一个数据包的长度具体是媒体数据的长度再加上封装协议头(比如RTP头、UDP报文头等)的长度。每个数据包的长度L小于等于网络中分片的阈值。而媒体流数据在备份的时候仍然采用循环覆盖的方法写入缓存空间。
[0042]步骤22、编码设备的媒体流发送模块发送媒体流数据包,媒体流备份模块将发送的媒体流数据包在缓存空间中进行备份。
[0043]编码设备的媒体流发送模块在发送媒体流数据包的时候如现有的技术一样,每个数据包上都会带上序号。这样解码设备的丢包检测模块就可以据此来判断是否发生丢包事件。
[0044]编码设备的媒体流备份模块将发送出去的媒体流数据包复制一份备份在缓存空间中。
[0045]步骤23、解码设备的媒体流接收模块接收媒体流数据包,并将接收到的媒体流数据包存放于解码设备的缓存空间中,丢包检测模块对媒体流数据包进行丢包检测,如果检测到丢包,则由媒体流重传处理模块执行重传处理:向编码设备发送针对丢失的数据包的重传请求,同时开启等待时长为T2的定时器;并且通知解码模块对媒体流接收模块后续收到并缓存的媒体流数据不进行解码;如果在T2时间内确认接收到重传的媒体流数据包,则通知解码模块将接收到的媒体流数据包和缓存中的媒体流数据包一并解码;如果在T2时间内缓存空间中缓存的媒体流数据达到预设的最大值,则通知解码模块对缓存中的媒体流数据包进行解码;如果超过T2时间未收到该重传的媒体流数据包,则通知解码模块对缓存的媒体流数据解码。
[0046]解码设备的丢包检测模块进行丢包检测时可以采用如下方法:
[0047]方法一、判断接收到的媒体流数据包是否连续,即当前收到的数据包序号是否等于上一个接收到的数据包序列号加一,如果等于则判断为不丢包;否则判断为丢包。该方法适用于媒体流数据包所传输的网络环境不会出现乱序的情况。
[0048]方法二、对接收到的η (η为预设值)个媒体流数据包先进行排序,然后按照数据包的序号判断是否出现丢包。比如说每收到10个媒体流数据包进行一次检测。按照接收的时间顺序,假设当前接收到的10个数据包分别为序号是1、3、4、2、5、7、8、10、11、9的数据包,排序后可以判断序号为6的数据包丢失了。如果接下来收到的10个数据包为序号是
21、22、24、23、25、26、29、30、31、32,排序后可以判断序号为12-20的数据包以及序号为27、28的数据包丢失。该方法适用于媒体流数据包所传输的网络环境会出现乱序的情况。进一步对该方法进行优化,将当前收到的数据包序号与上一次丢包检测时的最后一个数据包的序号进行比较,如果序号差值大于等于预设值,则确认出现丢包。比如说,假设预设值为10,上述例子中,在收到序号为21的数据包时,根据上一次丢包检测时最后一个数据包(序号为11)算出差值21-11=10,该差值等于预设值10,此时确认序号为12?10的数据包丢失。优化后的方法在减少反馈频率的基础上实现了及早反馈。
[0049]解码设备的媒体流重传处理模块发送重传请求的目的地址和端口号在建立媒体流数据的信令交互中与其它媒体参数一起获得。
[0050]在发送重传请求后,解码设备对于后续接收到的媒体流数据包先进行缓存,此时即便到达解码时刻解码模块也并不执行解码,以尽可能地等到丢失的数据包到来后再进行解码。
[0051]重传的等待时间Τ2可以固定设置,也可以通过解码设备的定时器时长(Τ2)调整模块进行调整。一种由定时器时长调整模块通过检测机制进行自动调整的方法为:解码设备定期发送PING包给编码设备以获取数据包当前的传输时间,再根据该传输时间的大小变化调整Τ2。
[0052]如果在等待时间Τ2内就接收到了编码设备重传的媒体流数据包,则进行解码显示。如果超过Τ2未接收到重传的数据包,那将不再继续等待,直接对缓存的媒体流数据包进行解码。因为继续等待未必会接收到丢失的数据包,同时还会对解码设备的缓存造成压力,并且用户观看的画面可能也会出现卡顿的状况。另外,如果在等待时间Τ2内,解码设备存放媒体流数据包的缓存空间将要存满时,也不再等待重传的媒体流数据而直接进行解码显不O
[0053]步骤24、编码设备的媒体流重传模块接收到解码设备发送的重传请求,判断缓存空间中是否存在待重传的媒体流数据,如果存在,则对该媒体流数据进行重传,否则忽略该重传请求。
[0054]编码设备在进行数据重传的时候可以采用组播的方式,也可以采用单播的方式。如果解码设备是以组播的方式来接收媒体流数据的,则编码设备使用组播的方式进行媒体流数据的重传将更具优势。因为在一个组播组中,一个解码设备发现丢包的时候,其它加入同一组播组的解码设备发现丢包的概率也比较大。所以编码设备直接利用组播的方式重传媒体流数据包将减低编码设备的重传压力,减少同一媒体流数据因多个解码设备均反馈丢包而多次重传的情况,提高带宽利用率。
[0055]由于本发明的方案并不限于应用在组播进行媒体流发送的环境中;在编码设备单播发送媒体流的场景下也同样适用。如果解码设备是单播接收编码设备发送的媒体流数据包的,编码设备在重传丢失的媒体流数据包时将以单播的方式发送给解码设备。[0056]实施例二
[0057]实施例二是实施例一的优化。在实施例一的基础上,进一步地,解码设备的媒体流重传处理模块在超过等待时间T2后,如果仍未收到重传的媒体流数据,则继续发送重传请求。在本实施例中,可以设定最大重传次数N。以下详细描述该方案。
[0058]步骤31、在编码设备上开辟缓存空间,用于备份媒体流数据包。
[0059]该步骤的具体实施请参照实施例一。
[0060]步骤32、编码设备的媒体流发送模块发送媒体流数据包,并由媒体流备份模块将发送的媒体流数据包在缓存空间中进行备份。
[0061]该步骤的具体实施请参照实施例一。
[0062]步骤33、解码设备的媒体流接收模块接收媒体流数据包并将其存放在解码设备缓存空间中,如果丢包检测模块检测到丢包,则由媒体流重传处理模块执行重传处理:向编码设备发送针对丢失的数据包的重传请求,同时开启等待时长为T2的定时器;并且通知解码模块对媒体流接收模块后续收到并缓存的媒体流数据不进行解码;如果在T2时间内确认接收到重传的媒体流数据包,则通知解码模块将接收到的媒体流数据包和缓存中的媒体流数据包一并解码;如果在T2时间内缓存空间中缓存的媒体流数据达到预设的最大值,则通知解码模块对缓存中的媒体流数据包进行解码;如果超过T2时间未收到该重传的媒体流数据包,则媒体流重传处理模块进一步判断是否到达最大重传次数N,如果是,则直接通知解码模块将缓存的媒体流数据解码;否则继续向编码设备发送重传请求,直到接收到重传的媒体流数据包或者缓存的媒体流数据包到达最大值或者到达最大重传次数。
[0063]参见图4,该图描述了解码设备在发现丢包后的处理流程。
[0064]Sa、接收媒体流数据包并缓存。
[0065]Sb、判断是否发生丢包,如果是,转Sc ;否则,转Sd。
[0066]Sc、发送针对丢失数据包的重传请求,同时开启时长为T2的定时器,,并且将后续收到的媒体流数据缓存,转Se。
[0067]Sd、对接收到的媒体流数据包进行解码。
[0068]Se、超过T2时间是否未接收到请求重传的媒体流数据包,如果是,则转Sf ;否则,转Sd。
[0069]Sf、判断是否到达最大重传次数N,如果是,转Sd ;否则,转Sc。
[0070]最大重传次数N可以预先在解码设备上进行设置;也可以由编码设备对自身的最大重传次数M进行设置后通过信令传输给解码设备,解码设备根据编码设备传递的最大重传次数M调整自身的最大重传次数N。无论是N还是M,都可以在设置好以后不再变更。但是更优的方式显然是由解码设备或者编码设备自适应的对其进行调整。参见图6,解码设备在调整最大重传次数N时可以由其最大重传次数调整模块来执行,具体为:在备份缓存中媒体流数据未被覆盖,解码设备请求重传的次数到达最大重传次数N但并未重传成功,则将最大重传次数更新为N+1 ;在解码设备请求重传的次数未到达最大重传次数N但请求重传的媒体流数据已经被覆盖,则将最大重传次数更新为N-1。这里解码设备请求重传时,对应的媒体流数据是否保存在编码设备的备份缓存空间可以由编码设备通过信令来告知解码设备。这种调整策略可以提高重传成功率,自适应网络丢包的情况。编码设备自适应的调整最大重传次数N的方法请参下文描述。[0071]实施例一实际上是N=I的特殊情况。
[0072]步骤34、编码设备的媒体流重传模块接收到解码设备的重传请求,判断缓存空间中是否存在待重传的媒体流数据,如果不存在,则不进行重传;如果存在,则查看最后重传时间与当前时间的差是否小于预设的最小重传时间间隔Tm,如果是,则不再进行重传;否贝U,对该媒体流数据进行重传,同时更新最后重传时间为当前的重传时间。
[0073]最小重传时间间隔Tm可以预先在编码设备上进行设置,可以在设置好以后就不再更改;更优的,可以按照如下策略进行调整:针对相同的媒体流数据被请求多次时,记录其中两次最大时间间隔,将这两次最大时间间隔的平均值作为新的Tm。
[0074]编码设备的上述处理方式,可以在Tm时间内针对同一个媒体流数据有多次重传请求时只重传一次。在组播传输媒体流数据的情况下,接入同一组播组的解码设备可能针对同一媒体流数据在较短的时间间隔内先后发送重传请求,在编码设备通过组播方式发送丢失的媒体流数据时就没有必要响应每一个重传请求而多次发送丢失的媒体流数据包。这样处理方式可以节省网络带宽。
[0075]编码设备还可以对自身的重传次数M进行设定,当接收到重传请求后进一步确认当前的重传次数是否小于预设的最大重传次数M,如果是,则进行重传,并更新重传次数;否则不再进行重传。
[0076]该最大重传次数M可以是在设置好以后不再变更,也可以由编码设备的最大重传次数调整模块进行自适应调整,参见图5。编码设备的最大重传次数调整模块根据解码设备一段时间内请求重传的媒体流数据被覆盖的比率对M进行自适应的调整。比如在该段时间请求重传的媒体流数据中已被覆盖的比率达到阈值D,则最大重传次数M减少一次。举个例子,在一段时间内请求重传的媒体流数据为S1、s2、s3、s4、s5、s6、s7、s8,其中s2、s3、s4已经被覆盖而导致重传失败,则覆盖比率为37.5% ;如果上述阈值D为30%,则将最大重传次数M减少一次。之所以使用一段时间内请求重传的媒体流数据被覆盖的比率是因为可能同一媒体流数据因为已覆盖导致多个解码设备请求重传失败,故不能简单的使用媒体数据重传失败的次数。如果解码设备的最大重传次数N的调整是由编码设备通过媒体信令告知自身的最大重传次数M而进行调整的话,编码设备将自身调整后的最大重传次数M告知解码设备,解码设备据此调整自身的最大重传次数,即将N调整成和M相同的值。
[0077]步骤34中编码设备的这种处理方式在实施例一中也可以使用,并不限于使用于实施例二。
[0078]实施例三
[0079]实施例三主要适用于组播发送媒体流数据的情况。本实施例在实施例一、实施例二的基础上增加以下技术内容:在加入组播组的解码设备中选取检测点,该检测点用于向编码设备发送接收到媒体流数据后的确认应答,编码设备接收到该应答信息后,从缓存中删除对应的备份媒体流数据。
[0080]实施例三编码设备内嵌的媒体流可靠传输装置如图7所示,其在图2的基础上增加了:检测点选取模块和媒体流删除模块。实施例三的解码设备内嵌的媒体流可靠接收装置如图8所示,其在图3的基础上增加了确认应答模块。这些模块同样以软件代码的形式进行存储。编码设备和解码设备的处理器分别通过执行这些代码指令来实现实施例三所要达到的功能。[0081]步骤41、编码设备的检测点选取模块周期性地从同一组播组的解码设备中选取检测点。
[0082]编码设备的检测点选取模块定期,比如预先配置每30秒,发送组播的ICMP报文;组播组中的解码设备在收到该ICMP报文后,向编码设备发送单播的回应消息;编码设备的检测点选取模块将预设时间内收到的最后一个回应消息的发送解码设备选取为检测点,并通知该解码设备开启检测功能。
[0083]在新建组播实况或者释放组播实况关系时,编码设备可以重新进行检测点的选取。
[0084]步骤42、作为检测点的解码设备的确认应答模块在接收组播的媒体流数据后向编码设备发送确认应答。
[0085]例如,检测点解码设备接收到序号为100的媒体流数据包,则反馈编码设备:序号为100的媒体流数据包已经被接收到了。检测点解码设备可以每收到一个媒体流数据包就进行一次反馈,或者接收到多个数据包后进行集中反馈。比如说等待20ms,检测点解码设备收到了序号为100、101、103、105、106、107的数据包,则向编码设备确认序号为100、101、103、105、106、107的数据包已经收到。
[0086]步骤43、编码设备接收到检测点解码设备发送的确认应答后,由媒体流删除模块删除缓存中对应的备份媒体流数据。
[0087]实施例三增加了一种编码设备备份媒体流数据的机制。编码设备在备份媒体流数据时,只要该媒体流数据被检测点解码设备确认已经接收到就可以将其从缓存空间中删除。如此,可以腾挪出更多的缓存空间给新的媒体流数据进行备份。
[0088]对于编码设备为多通道的情况优势将更加明显。各通道通常具有各自独立的用于备份媒体流数据的缓存空间。各通道用于备份媒体流数据的缓存空间的大小可以基于该通道的媒体流数据预设的备份时间Tl或者预设的备份固定数量的媒体流数据包来确定。备份的媒体流数据采用循环覆盖的方法写入该用于备份的缓存空间。在采用实施例三的方法后,在编码设备收到检测点的确认后,可将对应通道的备份数据删除,如果此时该通道的用于备份数据的剩余缓存空间大于预设值,则将该通道的部分缓存空间共享给其他通道使用,这样可以使得其他通道的数据超出原本可以备份的时间。这样就能减少重传失败次数,提高多通道的重传成功率。以下通过一个例子详细具体的实施方法。
[0089]S1、编码设备的每个通道独立的按照码率进行备份缓存的申请,即用于备份媒体流数据的缓存的大小为:码率大小Mi*备份媒体数据间隔Tl ;
[0090]S2、建立每个通道的备份缓存起始地址、当前使用地址、末尾地址、已使用大小、剩余大小等信息的全局映射表,并增加全局剩余备份缓存数量信息(全局剩余备份缓存是供各通道共同使用的备份缓存空间),将所有通道申请的备份缓存集中管理;
[0091]S3、对于每个通道,当编码设备收到检测点反馈的媒体流数据接收成功后,立即释放该媒体流数据包序号之前所有的备份数据。如果此时本通道剩余的缓存大小为M1,那么如果Ml大于Mi*Tl*cl,其中cl为[O, I]之间的比率值,比如,经验数值为0.2,则将剩余的备份缓存Ml-Mi*Tl*cl释放,并入全局剩余备份缓存,并更新全局剩余备份缓存数量信息与地址信息;
[0092]S4、每个通道的缓存剩余不足Mi*Tl*c2时,向全局剩余备份缓存申请大于Mi*Tl*c3的缓存空间大小,其中c2和c3均为[O,I]之间的比率值,比如,c2的经验值为
0.05左右和c3的经验值为0.3左右。
[0093]以上实施例一、实施例二和实施例三作为一种保证媒体流数据可靠传输的方案更多的适用于用户需要流畅观看的视频图像的情况。如果用户希望获得实时性非常好的视频图像,则不应该考虑使用本发明方案。所以为了兼容多种使用场景,可以在解码设备上设置使能开关:在需要流畅优先时,开启解码设备的缓存机制;在需要实时性优先时,不开启解码设备的缓存机制。
[0094]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种媒体流可靠传输的方法,该方法应用于编码设备,其特征在于,该编码设备上开辟有专门用于媒体流数据备份的缓存空间,该方法包括如下步骤: A、发送媒体流数据包,并将发送的媒体流数据在所述缓存空间中进行备份; B、接收解码设备发送的重传请求,判断所述缓存空间中是否存在待重传的媒体流数据,如果存在,则对该媒体流数据进行重传,否则忽略该重传请求。
2.如权利要求1所述的方法,其特征在于,所述开辟的缓存空间的大小基于媒体流数据预设的备份时间Tl或者基于预设的备份固定数量的媒体流数据包来确定。
3.如权利要求1所述的方法,其特征在于,所述媒体流数据在缓存空间备份的时候采用循环覆盖的方法进行备份。
4.如权利要求1所述的方法,其特征在于,如果步骤A中的媒体流数据包是以组播的方式进行发送的,则步骤B也以组播的方式发送待重传的媒体流数据包。
5.如权利要求1所述的方法,其特征在于,步骤B中如果缓存空间中存在待重传的媒体流数据,则进一步查看该媒体流数据最后重传时间与当前时间的差是否小于预设的最小重传时间间隔Tm,如果是,则不再进行重传;否则,对该媒体流数据进行重传,同时更新最后重传时间为当前的重传时间;或/和 步骤B中如果缓存空间中存在待重传的媒体流数据,则进一步确认该媒体流数据的重传次数是否小于预设的最大重传次数M,如果是,则进行重传,并更新重传次数;否则不再进行重传。
6.如权利要求5所述的方法,其特征在于,所述最大重传次数M由编码设备根据解码设备一段时间内请求重传的媒体流数据被覆盖的比率进行自适应的调整。
7.如权利要求1所述的方法,其特征在于,在所述步骤A中的媒体流数据包是以组播的方式进行发送的情况下,该方法还包括: 步骤A’、从同一组播组的解码设备中选取在接收到组播媒体流数据包后向编码设备发送确认应答的检测点; 步骤B’、编码设备接收到检测点发送的确认应答后,删除缓存中对应的备份媒体流数据。
8.如权利要求7所述的方法,其特征在于,在编码设备具有多个通道,每个通道具有自身的缓存媒体流数据的备份空间时,编码设备接收到检测点发送的针对某一通道的媒体流数据的确认应答,删除该通道缓存中对应的备份媒体流数据后,如果此时该通道的剩余缓存备份空间大于预设值,则将该通道部分缓存备份空间共享给其他通道使用。
9.如权利要求7所述的方法,其特征在于,步骤A’中从同一组播组的解码设备中选取检测点的方法具体为:发送组播的ICMP报文给解码设备;将预设时间内收到的最后一个回应ICMP消息的解码设备选取为检测点,并通知该解码设备开启检测功能。
10.一种媒体流可靠接收的方法,该方法应用于解码设备,其特征在于,该方法包括如下步骤: A、接收媒体流数据包并缓存; B、对媒体流数据包进行丢包检测,如果检测到丢包,转步骤C; C、向编码设备发送针对丢失数据包的重传请求,同时开启时长为T2的定时器,并且将后续收到的媒体流数据缓存;D、在定时器超时前接收到重传的媒体流数据包,则将接收到的重传的媒体流数据包和缓存中的媒体流数据包一并解码;在定时器超时前未接收到重传的媒体流数据包且缓存的媒体流数据达到预设的最大值时,则将缓存的媒体流数据进行解码;在定时器超时且未收到该重传的媒体流数据包,则将缓存的媒体流数据解码。
11.如权利要求10所述的方法,其特征在于,所述步骤D进一步包括:如果定时器超时且未收到该重传的媒体流数据包,则判断是否到达预设的最大重传次数N,如果是,则进行解码;否则,转步骤C。
12.如权利要求11所述的方法,其特征在于,该预设的最大重传次数N是动态调整生成的,其中该动态调整方法具体为: 在备份缓存中媒体流数据未被覆盖,解码设备请求重传的次数到达最大重传次数N但并未重传成功,则将最大重传次数更新为N+1 ;在解码设备请求重传的次数未到达最大重传次数N但在备份缓存中媒体流数据已经被覆盖,则将最大重传次数更新为N-1 ; 或者根据编码设备动态调整最大重传次数M的结果调整N。
13.如权利要求10所述的方法,其特征在于,所述丢包检测的方法具体为:判断接收到的媒体流数据包是否连续,即当前收到的数据包序号是否等于上一个接收到的数据包序列号加一,如果等于则判断为不丢包;否则判断为丢包;或者, 当接收到的η (η为预设值)个媒体流数据包时先对这η个媒体流数据包进行排序,然后按照数据包的序号进行丢包检测;且将当前收到的数据包序号与上一次丢包检测时最后一个数据包的序号进行比较,如果序号差值大于等于预设值,则确认出现丢包。
14.如权利要求10所述的方法,其特征在于,所述重传请求使用UDP单播进行发送,该单播的目的IP地址和端口号在编码设备和解码设备建立媒体流数据的信令交互中由编码设备传递给解码设备。
15.如权利要求10所述的方法,`其特征在于,所述定时器时长Τ2动态调整生成,该动态调整的方法包括:解码设备定期发送PING包给编码设备以获取数据包当前的传输时间,根据该传输时间的大小变化相应调整Τ2的大小。
16.如权利要求10或11所述的方法,其特征在于,由编码设备确认为检测点的解码设备在接收到媒体流数据包后按照如下方法发送确认应答:每收到一个媒体流数据包就进行一次确认应答,或者接收到多个数据包后进行集中反馈确认应答。
17.一种媒体流可靠传输装置,该媒体流可靠传输装置应用于编码设备上,其特征在于,该编码设备上开辟有专门用于媒体流数据备份的缓存空间,所述媒体流可靠传输装置包括: 媒体流发送模块,用于发送媒体流数据包; 媒体流备份模块,用于将发送的媒体流数据包在所述缓存空间中进行备份; 媒体流重传模块,用于在接收到解码设备发送的重传请求后,判断所述缓存空间中是否存在待重传的媒体流数据,如果存在,则对该媒体流数据进行重传,否则忽略该重传请求。
18.如权利要求17所述的媒体流可靠传输装置,其特征在于,所述开辟的缓存空间的大小基于媒体流数据预设的备份时间Tl或者基于预设的备份固定数量的媒体流数据包来确定。
19.如权利要求17所述的媒体流可靠传输装置,其特征在于,所述媒体流备份模块将媒体流数据在缓存空间备份的时候采用循环覆盖的方法进行备份。
20.如权利要求17所述的媒体流可靠传输装置,其特征在于,如果媒体流发送模块以组播方式发送媒体流数据包,则媒体流数据重传时也以组播的方式进行重传。
21.如权利要求17所述的媒体流可靠传输装置,其特征在于,媒体流重传模块,进一步用于在缓存空间中存在待重传的媒体流数据时,查看最后重传时间与当前时间的差是否小于预设的最小重传时间间隔Tm,如果是,则不再进行重传;否则,对该媒体流数据进行重传,同时更新最后重传时间为当前的重传时间;或/和 该媒体流重传模块,进一步用于在缓存空间中存在待重传的媒体流数据时,进一步确认重传次数M是否小于预设的最大重传次数M,如果是,则进行重传,并更新重传次数;否则不再进行重传。
22.如权利要求21所述的媒体流可靠传输装置,其特征在于,该装置还包括最大重传次数调整模块,该模块根据解码设备一段时间内请求重传的媒体流数据被覆盖的比率对所述最大重传次数M进行自适应的调整。
23.如权利要求17所述的媒体流可靠传输装置,其特征在于,该媒体流可靠传输装置还包括: 检测点选取模块,该模块用于在媒体流数据包是以组播的方式进行发送的情况下,从同一组播组的解码设备中选取在接收到组播媒体流数据包后向编码设备发送确认应答的检测点; 媒体流删除模块,该模块用于在编码设备接收到检测点发送的确认应答后,删除缓存中对应的备份媒体流数据。
24.如权利要求23所述的媒体流可靠传输装置,其特征在于,检测点选取模块从同一组播组的解码设备中选取检测点的方法具体为:发送组播的ICMP报文给解码设备;将预设时间内收到的最后一个回应ICMP消息的解码设备选取为检测点,并通知该解码设备开启检测功能。
25.一种媒体流可靠接收装置,该媒体流可靠接收装置应用于解码设备上,其特征在于,该媒体流可靠接收装置包括: 媒体流接收模块,用于接收媒体流数据包,并将接收到的媒体流数据包存放于解码缓存空间中; 丢包检测模块,用于对媒体流数据包进行丢包检测,并将检测结果告知媒体流重传模块; 媒体流重传处理模块,用于在丢包检测模块检测到丢包时,向编码设备发送针对丢失的数据包的重传请求,同时开启等待时长为T2的定时器;并在定时器超时前接收到重传的媒体流数据包,将通知解码模块将接收到的重传的媒体流数据包和缓存中的媒体流数据包一并解码;在定时器超时前未接收到重传的媒体流数据包且缓存空间中缓存的媒体流数据达到预设的最大值,则通知解码模块对缓存中的媒体流数据进行解码;在定时器超时且未收到该重传的媒体流数据包,则通知解码模块对缓存中的媒体流数据进行解码。
26.如权利要求25所述的媒体流可靠接收装置,其特征在于,所述重传处理模块进一步用于在定时器超时且未收到该重传的媒体流数据包时,判断是否到达预设的最大重传次数N,如果是,则通知解码模块进行解码;否则重新执行重传处理。
27.如权利要求26所述的媒体流可靠接收装置,其特征在于,该装置还包括最大重传次数调整模块,该模块用于在备份缓存中媒体流数据未被覆盖但解码设备请求重传的次数到达最大重传次数N但并未重传成功,则将最大重传次数更新为N+1 ;在解码设备请求重传的次数未到达最大重传次数N但待重传的媒体流数据已经被覆盖时,则将最大重传次数更新为N-1 ;或者 该模块根据编码设备动态调整最大重传次数M的结果调整N。
28.如权利要求25所述的媒体流可靠接收装置,其特征在于,所述丢包检测模块判断接收到的媒体流数据包是否连续,如果连续则判断为不丢包;否则判断为丢包;或者, 该丢包检测模块当接收到η (η为预设值)个媒体流数据包时先对这η个媒体流数据包进行排序,然后按照数据包的序号进行丢包检测;该丢包检测模块还将当前收到的数据包序号与上一次丢包检测时最后一个数据包的序号进行比较,如果序号差值大于等于预设值,则确认出现丢包。
29.如权利要求25所述的媒体流可靠接收装置,其特征在于,所述媒体流重传处理模块使用UDP单播发送重传请求,该单播的目的IP地址和端口号在编码设备和解码设备建立媒体流数据的信令交互中由编码设备传递给解码设备。
30.如权利要求25所述的媒体流可靠接收装置,其特征在于,该装置还包括定时器时长Τ2调整模块,该模块用于定期发送PING包给编码设备以获取数据包当前的传输时间,根据该传输时间的大小变化相应调整Τ2的大小。
31.如权利要求25或26所述的媒体流可靠接收装置,其特征在于,该接收装置进一步包括确认应答模块,该确认应答模块在被编码设备认为自身的解码设备为检测点后按照如下方法发送确认应答:每收到一个媒体流`数据包就进行一次确认应答,或者接收到多个数据包后进行集中反馈确认应答。
【文档编号】H04N21/643GK103533450SQ201310426244
【公开日】2014年1月22日 申请日期:2013年9月17日 优先权日:2013年6月9日
【发明者】周迪, 陈乾业, 张磊 申请人:浙江宇视科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1