一种视频流的发送方法、发送装置和网络摄像机与流程

文档序号:12491769阅读:813来源:国知局
一种视频流的发送方法、发送装置和网络摄像机与流程

本发明涉及视频监控技术领域,具体地说,涉及一种视频流的发送方法、发送装置和网络摄像机。



背景技术:

视频监控系统作为面向城市公共安全总和管理的重要组成部分,有着广阔的应用前景。视频监控系统以IP网络作为基础网络,以太网交换机作为组网的基本设备,实现对诸如网络摄像机IPC等前端设备采集到的监控视频的汇聚。在IP视频监控的传输网络中,对网络设备的传输要求与传统的数据传输要求有较大的区别,主要是因为其承载的IP视频监控数据包有着自身的特点。

图1所示为视频监控系统的网络结构示意图。多路网络摄像机IPC对监控区域进行实时监控生成监控视频流,接入层的以太网交换机对IPC采集到的监控视频流进行汇聚后发送至服务器。由于需要实时观察和存储前端IPC拍摄的监控视频,导致以太网交换机承载的上行监控数据的数据量巨大。

通常,IP视频数据包采用H.264视频编码标准,一般包括有I帧、P帧和B帧。其中,I帧占用的数据位数可能是B帧的上百倍。对于图1中的以太网交换机来说,当多路IPC的I帧数据同时到达时为交换机上行流量负载最大的情况。此时,几路I帧数据的叠加有可能会瞬间超出交换机的处理能力,导致视频数据包的丢失,用户观察到的监控图像出现花屏、卡顿等现象。

例如,假设IPC生成的监控视频流设定的码率为4Mbps。在生成一个数据量巨大的I帧时,若把生成的I帧直接发送到交换机,占用的瞬间带宽会非常大,甚至达到80Mbps。以百兆交换机为例,交换机的接入端口速率为100Mbps,且连接有多路IPC,当多路IPC的I帧数据同时到达交换机时,瞬间带宽能达到160Mbps以上。而通常为了保证视频流的时延要求,交换机的缓冲区不会设置太大,这将导致视频数据丢失。

因此,亟需一种能够自适应调整发送码率,使得监控视频流平滑发送的方法 和装置。



技术实现要素:

本发明的目的之一在于解决现有技术中监控视频流的瞬间码率过大,导致超出交换机的缓冲和交换能力,使用户观察到的视频流产生延时甚至丢包的技术缺陷。

本发明的实施例首先提供视频流发送方法,包括:

预设发送视频流的均匀时段长度、各时段内的待发送目标数据量,以及发送目标时延;

确定在缓冲区内存在待发送数据包;

确定缓冲区内已发送数据包和待发送的当前数据包的数据量之和高于时段计数参数对应的待发送目标数据量;

对当前数据包进行延时来限制发送速率,在时段计数参数对应的时间节点处完成当前数据包的发送;以及

在缓冲区内全部数据已发送之后,调整各时段内的待发送目标数据量以满足发送目标时延。

在一个实施例中,还包括:

若确定缓冲区内已发送数据包和待发送的当前数据包的数据量之和低于时段计数参数对应的待发送目标数据量,则依照当前速率发送当前数据包。

在一个实施例中,在对当前数据包进行延时来限制发送速率的步骤之后还包括:

逐一增大所述时段计数参数的数值,以确定在下一时段内需要延时处理的数据包。

在一个实施例中,在对当前数据包进行延时的步骤中,

获取当前数据包的待发送时间点与发送起始时间点之间的实际延时;

计算时段计数参数对应的总时长超出实际延时的时间差,作为对当前数据包进行延时的时间。

在一个实施例中,在调整各时段内的待发送目标数据量的步骤中,

统计发送缓冲区内的全部数据所消耗的时段总长度;

若时段总长度大于目标时延,则增大各时段内的待发送目标数据量,以增大 发送速率;

若时段总长度小于目标时延,则减小各时段内的待发送目标数据量,以减小发送速率。

本发明的实施例还提供一种视频流发送装置,包括:

配置模块,用于预设发送视频流的均匀时段长度、各时段内的待发送目标数据量,以及发送目标时延;

拥塞确定模块,用于确定在缓冲区内存在待发送数据包;

数据量确定模块,用于确定缓冲区内已发送数据包和待发送的当前数据包的数据量之和高于时段计数参数对应的待发送目标数据量;

延时模块,用于对当前数据包进行延时来限制发送速率,在时段计数参数对应的时间节点处完成当前数据包的发送;以及

调整模块,用于在缓冲区内全部数据已发送之后,调整各时段内的待发送目标数据量以满足发送目标时延。

在一个实施例中,还包括:

发送模块,用于在确定缓冲区内已发送数据包和待发送的当前数据包的数据量之和低于时段计数参数对应的待发送目标数据量时,依照当前速率发送当前数据包。

在一个实施例中,还包括:

累计模块,用于在延时模块进行延时处理之后逐一增大所述时段计数参数的数值,以确定在下一时段内需要延时处理的数据包。

在一个实施例中,所述延时模块还包括:

获取子模块,用于获取当前数据包的待发送时间点与发送起始时间点之间的实际延时;

时间差计算子模块,用于计算时段计数参数对应的总时长超出实际延时的时间差,作为对当前数据包进行延时的时间。

在一个实施例中,所述调整模块还包括:

统计子模块,用于统计发送缓冲区内的全部数据所消耗的时段总长度;

速率增大子模块,其配置为若时段总长度大于目标时延,则增大各时段内的待发送目标数据量,以增大发送速率;

速率减小子模块,其配置为若时段总长度小于目标时延,则减小各时段内的 待发送目标数据量,以减小发送速率。

本发明的实施例还提供一种网络摄像机,包括:

采集装置,用于采集视频数据;

编码装置,用于对视频数据进行编码得到待发送的视频数据桢,所述视频数据帧包括若干数据包;

缓存装置,用于暂存所述数据包;以及

如上文所述的视频流发送装置,用于对所述缓存装置中的特定数据包进行延时处理并发送。

本申请的实施例对在缓冲区中缓存的待发送的各个RTP数据包分别判断是否进行延时处理,确定出需要进行延迟处理的数据包。一方面,利用对特定数据包的延时使实际发送的数据流比较平滑,以接近于理想模型;另一方面,还实时调整在各个均匀时段内发送数据量的大小,从而自动找到最小的瞬间码率,来保证视频帧总体发送延时不能过大。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:

图1是现有技术中视频监控系统的网络结构示意图;

图2是本发明实施例一的理想视频流发送模型的示意图;

图3a至图3c是本实施例一的视频流发送过程的原理图;

图4是本发明实施例一的视频流发送方法的步骤流程图;

图5是本发明实施例二的视频流发送方法的步骤流程图;

图6是本发明实施例三的网络摄像机的结构示意图;

图7是本发明实施例三的视频流发送装置的结构示意图;

图8a是现有技术中编码装置生成的视频流的码率曲线图;

图8b是本发明实施例三中发送装置进行平滑处理后的码率曲线图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,以下结合附图对本发明作进一步地详细说明。

以下结合说明书附图对本发明的实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不相冲突的情况下,本发明的实施例中的特征可以相互结合。

本申请的实施例采用RTP/RTCP/UDP协议用于监控视频流的传输。UDP是一种无连接的数据包传输协议,不存在TCP中的重传机制。但是,UDP的传输时延低于TCP,能与音频、视频流很好地匹配。由于UDP提供的是不可靠的、无排序的传输服务,本申请实施例中数据包的丢失、次序颠倒、流量控制和拥塞控制等由高层协议RTP/RTCP进行处理。

由于采用H.264编码格式生成的I帧数据量过大,本申请的实施例主要对I帧的发送速率进行平滑处理,而并非如同现有技术中那样对生成的I帧直接发送。事实上,对于编码生成的B帧和P帧的发送速率,同样也进行平滑处理。

具体来说,首先定义平滑的视频流发送模型,该模型设计为在每个均匀的时段内发送的视频数据量相同。然后对在缓冲区中缓存的待发送的各个RTP数据包分别判断是否进行延时处理,确定出需要进行延迟处理的数据包。一方面,利用对特定数据包的延时使实际发送的数据流比较平滑,以接近于理想模型;另一方面,还实时调整在各个均匀时段内发送数据量的大小,来保证视频帧总体发送延时不能过大。

图2为本实施例的理想视频流发送模型的示意图。在理想状态下,每个均匀的时段内发送的数据量相同。如图2所示的示例中,将1秒时间(也就是1000ms)段划分成y等份,在理想情况下在1秒时间段内需要发送x兆比特的数据。将x兆比特的数据均匀分布到各个时间分段中,那么在(1000/y)ms的时段内发送的数据量应为(x/y)Mbit。在下文阐述的具体实施例中,主要通过对指定数据包的延时来保证在(1000/y)ms的时段内发送的数据量比较接近于(x/y)Mbit,来防止视频流数据发送过快。

实施例一

本实施例主要提供一种视频流的发送方法。图3a至图3c是本实施例的视频 流发送过程的原理图。图4是本实施例的发送方法的步骤流程图。

预先设定发送视频流的各个均匀时间段的长度,以及各个时段内的待发送目标数据量。图3a中矩形A至E的宽度代表时间段的长度,矩形的面积代表各个时段内的待发送目标数据量,则将缓冲区内的数据全部发送完毕的目标时延为N个时间段。此外,在图3a的示例中,利用时段计数参数代表进行延时处理的当前时间段。

当摄像机编码生成H.264视频帧之后,待发送的数据包缓存在缓冲区中。如图4所示,在步骤S410判断缓冲区内是否存在待发送的数据包。若存在,则执行步骤S420,依序发送各个数据包,并累计已发送数据包的数据量。在图3a的示例中,在第一个时间段内依序发送数据包A1、A2至Ak-1。此时,A1、A2至Ak-1组合起来的面积则代表已发送的数据包的数据量。

在将要发送每个数据包之前,均执行步骤S430来判断缓冲区内已发送数据包和待发送的当前数据包的数据量之和是否高于时段计数参数对应的待发送目标数据量。以图3a中第一时间段内待发送数据包Ak为例,若在第一时间段内将数据包Ak发送出去,则A1、A2、Ak-1至Ak累加起来的总面积已经超出了矩形A的面积。这说明当前的发送速率较快,如不将数据包Ak延时,会导致第一时间段内发送的数据量过多,偏离预设的理想发流模型。

因此,若在步骤S430中确定出已发送数据包和待发送的当前数据包的数据量之和高于时段计数参数对应的待发送目标数据量,则执行步骤S440,对当前数据包进行延时来限制发送速率,在时段计数参数对应的时间节点处完成当前数据包的发送。上述的时段计数参数对应的时间节点,表示时段计数参数所代表的时间段结束的时刻。也就是说,在图3a的示例中将数据包Ak延时到第一个时间段结束的时刻,再发送出去。

此外,如果在步骤S430中若判断出已发送数据包和待发送的当前数据包的数据量之和并不高于时段计数参数对应的待发送目标数据量。也就是对应图3a中数据包A2至Ak-1的情况,则依照当前的发送速度发送这些数据包,不做任何处理。

在步骤S440之后,执行步骤S450,逐一增大时段计数参数的数值。在图3a中表示将要在第二时间段内继续判断是否对数据包进行延时。

此后,循环执行步骤S410,继续判断缓冲区内是否有待发送的数据包,并依 序发送。这样在数据包Ak之后的Ak+1,将会在第二个时间段开始的时刻发送出去。

再次回到步骤S410,若缓冲区内不存在数据包,说明缓冲区的数据已全部发送出去,则执行步骤S460至步骤S480,调整各时段内的待发送目标数据量以满足发送目标时延。也就是要自动找到最小的瞬间码率,尽量保证在N个时间段内恰好将缓冲区内的数据全部发送完毕。

具体而言,在步骤S460中,获取此时的时段计数参数的数值,与预设的时间段的数量N进行比较。如果时段计数参数大于数值N,说明延时过大,这时执行步骤S470加快发送速率。如图3b所示,将各时段内的待发送目标数据量增大,即增大矩形A至E的面积。

相反地,如果时段计数参数小于数值N,说明延时过小,发送速率过高,这时执行步骤S480降低发送速率。如图3c所示,将各时段内的待发送目标数据量减小,即减小矩形A至E的面积。

随后,在步骤S470或者步骤S480执行完毕之后,再次循环执行步骤S410进行延时处理。

至此为止完成整个延时处理和发送速率调整的过程。本实施例通过识别出需要进行延时的特定数据包,只针对这些特定数据包进行延时,其他数据包则正常发送。还通过实时调整各个时间段内发送的总数据量来控制发送速率,从而得到最平滑的发流模式。

实施例二

本实施例提供视频流的另一种发送方法,通过计算实际发送数据包与理想发流模式下数据包的时间偏差来精确控制延时时间。以下结合图2和图5详细说明。

在前端IPC采用H.264编码格式完成对视频数据的编码之后,编码完成的视频数据缓存在缓冲区内,并按照图2提供的理想视频流发送模型进行发送。

预先设置发送视频流的均匀时段长度、各时段内的待发送目标数据量,以及发送缓冲区内全部数据的目标时延。在图2的示例中,均匀时段长度为(1000/y)ms,各时段内的待发送目标数据量为(x/y)*AD Mbit。其中,参数AD表示各个时段内待发送目标数据量的调节参数。此外,发送缓冲区内全部数据的目标时延设置为T=CNT*(1000/y)ms,其中参数CNT表示将缓冲区内全部数据发送完成所消耗的均匀时段的段数。用户可以设置参数CNT的数值来调节发送速率最 慢的一个帧的目标时延。

另外,还要预先设定时段计数参数ST(send-times),用来表示在发送数据包的过程中所参照的发送目标数据量,还用来计算发送时间延时。

用户设定将缓冲区内的视频数据全部发送所需要的均匀时段的数量CNT,1秒内划分成的均匀时段的数量div(相当于上文中的参数y)。由于I帧、B帧和P帧大约在40ms生成一帧,那么通常在1秒时间段内已将一帧数据全部发送,因此,CNT<div=y。

图5为本实施例的视频流的发送方法的步骤流程图。

在步骤S501中,判断缓冲区内是否存在待发送的视频数据。当缓冲区内存在待发送的视频流数据时,表明IPC编码产生的视频数据来不及被交换机转发,需要进行平滑处理来限制发送的峰值速率。其中,缓冲区中的数据为将H.264编码产生的I帧、B帧、P帧拆分成的RTP数据包,按照包序号依序存储在缓冲区中。当缓冲区内存在待发送的视频流数据时,依序发送视频流数据包。

在步骤S502中,判断当前待发送的RTP数据包是否为缓冲区中的第一个包,如果是,则执行步骤S504,对平滑处理过程中使用的参数进行初始化。即,获取发送起始时间TF(time_framebegin),设置已发送数据SS=0(Send_sum=0),令时段计数参数ST=1(Send_times=1)。随后再执行步骤S503。

在步骤S503中,判断时段计数参数ST(Send_times)是否小于div;若是,则执行步骤S505进行后续的平滑处理过程;若不是,则说明发送缓冲区内的视频数据所消耗的时间长度已经超过预设均匀时段的总时长,则不做平滑处理,按照当前速率发送这个数据包,然后再次执行步骤S501。

在步骤S505中,统计已发送数据包和待发送的当前数据包的数据量的总和,计算SS=SS+待发送数据包的数据量。计算时段计数参数所对应的待发送目标数据量(ST*x/y*AD)。

在步骤S506中,判断缓冲区内已发送数据包和待发送的当前数据包的数据量之和是否高于时段计数参数对应的待发送目标数据量,即是否满足SS>ST*x/y*AD;如满足,则表明当前发送速率过高,对待发送的当前数据包进行延时处理,执行步骤S507。如不满足,则表明当前发送速率过低,则发送当前数据包,并再次执行步骤S501。

在步骤S507中,获取当前数据包的待发送时间点TC(Time_current),计 算当前数据包的待发送时间点与发送起始时间点之间的实际延时DA(Delay_actual),其中DA=TC–TF。

在步骤S508中,计算待发送的数据包与理想发流模式下的偏差DU(Delay_us),其中DU=1000*ST/y–DA,若DA>0,则说明时段计数参数对应的总时长超出实际延时,即实际发送速率过快,执行步骤S509进行延时处理。若否,则说明发送速率太慢,不做延时并发送数据包,随后执行步骤S510。

在步骤S509中,以DU作为对当前数据包进行延时的时间。执行Usleep(DU),将待发送的当前数据包延迟DU时间后再发送。

由步骤S508和步骤S509可以看出,对当前数据包进行延时来限制发送速率,在时段计数参数对应的时间节点处完成当前数据包的发送,从而完成对指定数据包的发送延时,限制发送速率。

由于实际发送速率过快,超过时段计数参数对应的待发送目标数据量,因而在步骤S510中逐一增大时段计数参数的数值,即执行ST++。然后再次执行步骤S501,以增大之后的时段计数参数为标准,对待发送的数据包进行循环判断。也就是对图3中的矩形A至E依次进行延时判断和延时处理。

再次回到步骤S501,如果判断缓冲区为空,则表明已经完全发送缓冲区内的数据,执行步骤S511来调整各时段内的待发送目标数据量以满足目标时延。

在步骤S511中,读取时段计数参数的数值ST,通过数值ST可以统计发送缓冲区内的全部数据所消耗的时段总长度。若时段总长度大于目标时延,则增大各时段内的待发送目标数据量,以增大发送速率;若时段总长度小于目标时延,则减小各时段内的待发送目标数据量,以减小发送速率。

实际应用中可判断是否满足ST>CNT。若是,则说明发送速率过低,执行步骤S512,计算AD=AD+1,以增大发送速率。若否,则执行步骤S513至S515,计算AD=AD-1,以减小发送速率。

此外,在步骤S512中还进行初始化操作,设置RC=0,且SS=0。其中RC(Reduce_cnt)表示发送速率减小指数。

在步骤S513中,增大发送速率减小指数RC,执行RC++。

在步骤S514中,判断发送速率减小指数RC是否大于预设阈值n,若是,则执行步骤S515,减小发送速率,计算AD=AD-1,且进行初始化操作,设置SS=0。

若在步骤S514中,判断RC并非大于预设阈值n,则不对速率进行调整,回 到步骤S501。

至此完成对缓冲区内数据的发送过程,能够自适应实现图2所示的平滑发流模型。需要说明的是,通过对缓冲区内每个数据包的逐一判断,能够识别到需要进行延时处理的数据包。并且,以预设发流模型的时间节点为基准对该数据包做延时,能够同时保证在最小延时的前提之下,发流最平滑。

实施例三

本实施例提供一种网络摄像机,其结构如图6所示。该网络摄像机主要包括采集装置610,编码装置620,缓存装置630和发送装置640。其中,采集装置610用于采集视频数据,编码装置620基于特定的编码格式(例如H.264)对视频数据进行编码得到待发送的视频数据帧,这些视频数据帧中包括若干数据包。缓存装置630用于暂存这些数据包。为了防止交换机发生数据拥塞,发送装置640对缓存装置630中的部分特定数据包进行延时处理再转发,以实现比较平滑的发流模式并保证较小的时延。

图7是发送装置640的结构示意图。该发送装置主要包括配置模块710,拥塞确定模块720,数据量确定模块730,延时模块740,发送模块750和调整模块770。

其中,配置模块710用于预设发送视频流的均匀时段长度、各时段内的待发送目标数据量,以及发送目标时延。拥塞确定模块720用于确定在缓冲区内存在待发送数据包。数据量确定模块730用于确定缓冲区内已发送数据包和待发送的当前数据包的数据量之和高于时段计数参数对应的待发送目标数据量。这样确定出来的待发送数据包即需要进行延时处理,以降低发送速率来防止在交换机进行汇聚时超出交换机的处理能力。

延时模块740用于对当前数据包进行延时来限制发送速率,使得发送模块750在时段计数参数对应的时间节点处完成当前数据包的发送。调整模块770用于在缓冲区内全部数据已发送之后,调整各时段内的待发送目标数据量以满足发送目标时延。

发送模块750还用于在确定缓冲区内已发送数据包和待发送的当前数据包的数据量之和低于时段计数参数对应的待发送目标数据量时,依照当前速率发送当前数据包。

发送装置640按照理想发流模型中的均匀时间段来依次确定需要进行延时处 理的特定数据包。因此,发送装置640中还包括有累计模块760,用于在延时模块进行延时处理之后逐一增大所述时段计数参数的数值,以确定在下一时段内需要延时处理的数据包。

需要说明的是,延时模块740包括有获取子模块741和时间差计算子模块742。获取子模块741用于获取当前数据包的待发送时间点与发送起始时间点之间的实际延时。时间差计算子模块742用于计算时段计数参数对应的总时长超出实际延时的时间差,作为对当前数据包进行延时的时间。

此外,调整模块770包括有统计子模块771,速率增大子模块772和速率减小子模块773。其中,统计子模块771用于统计发送缓冲区内的全部数据所消耗的时段总长度。速率增大子模块772配置为若时段总长度大于目标时延,则增大各时段内的待发送目标数据量,以增大发送速率;速率减小子模块773配置为若时段总长度小于目标时延,则减小各时段内的待发送目标数据量,以减小发送速率。调整模块770的设置是为了防止延时的时间过长导致的用户体验较差。调整模块770可以将每个均匀时间段内的目标发送数据量进行调整,从发送的粒度层面进行控制。

这样以来,调整模块770和延时模块740的配合使用可以利用对特定数据包的延时使实际发送的数据流比较平滑,以接近于理想模型;还实时调整在各个均匀时段内发送数据量的大小,来保证视频帧总体发送延时不能过大。

图8a是现有技术中编码装置生成的视频流的码率曲线图;图8b是本发明实施例三中发送装置进行平滑处理后的码率曲线图。由图8a可以看出,由于H.264编码格式本身固有的特点,可能产生数据量特别大的I帧或P帧,形成码流中的尖峰。若依照UDP协议发送至交换机,会因为峰峰相碰而造成丢包,用户观察到的视频发送卡顿。由图8b可以看出,本实施例中发送装置对码流进行平滑处理之后能够抑制码流中的尖峰,获得比较平滑的发送码率,从而在多个台IPC接入到交换机后保证各台IPC的视频流能够正常播放。

虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1