基于PID控制的视频直播传输控制方法及系统与流程

文档序号:11236732阅读:1011来源:国知局
基于PID控制的视频直播传输控制方法及系统与流程

本发明涉及视频传输技术领域,具体而言,涉及一种基于pid控制的视频直播传输控制方法和一种基于pid控制的视频直播传输控制系统。



背景技术:

随着宽带的普及和网络技术的发展,互联网上的多媒体业务渐渐成为主流。上一代的视频应用主要是基于视频点播服务的,而随着网络状况的逐步改善以及视频技术的不断发展,人们对视频直播的需求不断增长,基于视频直播服务构建的应用也开始快速涌现,比如电视节目直播、视频会议、视频通话等。其中,最新的直播应用能够让用户通过手机设备创建直播内容。

为了保证直播的实时性,也就是保证较低的直播延迟,上一代的直播技术主要是基于udp协议(userdatagramprotocol,用户数据报协议)。udp协议并不确保数据包的成功接收,视频直播的延迟主要是数据包从发送端到达接收端的时间,因此延迟一般都很低,但接收端需要额外的方法处理网络丢包带来的错误。

而如果改为使用tcp协议(transmissioncontrolprotocol,传输控制协议),则能够确保所有数据包的成功接收,但是在网络状况不佳的情况下,tcp协议的重传机制会进行大量的重传操作,使得数据的发送时间较长,导致视频流畅度低并且延迟较高。

随着网络状况的不断改善,使用tcp协议在视频直播方面的可用性大大提高。其中,rtmp协议(realtimemessagingprotocol,实时消息传输协议)是adobe公司开发的一种基于tcp协议的实时数据通信网络协议,主要用来在flash/air平台和支持rtmp协议的流媒体/交互服务器之间进行音视频和数据通信,被广泛应用于点播和直播服务,具有较强的稳定性、可靠性。

然而,虽然网络环境得到了不断改善,但是网络状况的波动依然时常发生,网络状况的波动会直接影响到tcp协议进行数据传输的吞吐量。其中,视频码率是数据传输时单位时间传送的数据位数,如果吞吐量小于当前传输视频的码率,就会造成接收端视频播放的不流畅的现象。

因此,如何实现根据当前的网络状况进行动态的码率调整,成为亟待解决的技术问题。



技术实现要素:

本发明正是基于上述技术问题,提出了一种新的技术方案,可以实现根据当前的网络状况进行动态的码率调整。

有鉴于此,本发明的一方面提出了一种基于pid控制的视频直播传输控制方法,包括:按照预定检测周期检测系统的实时码率和视频发送缓冲区的实时长度,其中,所述视频发送缓冲区的实时长度为缓冲的视频帧的数量;计算所述视频发送缓冲区的实时长度与长度目标值的差值;将所述差值带入pid控制公式,以计算得到当前时刻所需的码率调整值;根据所述码率调整值,调整所述实时码率。

在该技术方案中,系统在进行视频直播时,可以根据视频发送缓冲区的实时长度,利用pid(proportion-integration-differentiation,比例-积分-微分)控制理论实时调整视频的发送端提供的视频流的码率,即对实时码率进行修正,从而可以将视频发送缓冲区的数据量维持在理想的状态,实现了视频质量根据网络状况的自适应,在提升视频直播的流畅程度,尽可能地充分利用网络带宽以达到较高视频质量。

其中,pid是一种闭环的反馈控制机制,在pid控制系统中,可根据系统当前状态与期望状态的误差来计算一个控制量,并利用该控制量对输入进行调整,从而使系统状态趋向于期望状态。也就是说,可以根据当前的视频发送缓冲区的实时长度与长度目标值的差值,也就是误差,来计算当前时刻所需的码率调整值,使实时码率趋向于期望值。

在上述技术方案中,优选地,在所述按照预定检测周期检测系统的实时码率和视频发送缓冲区的实时长度之前,还包括:根据接收到的第一设 置命令,设置所述视频发送缓冲区的所述长度目标值。

在该技术方案中,视频发送缓冲区的长度目标值可以由用户手动调整设置,或者也可以设置多个目标值档位供用户选择,另外,还可以由系统根据实时码率,自动设置与网络状况相适宜的长度目标值。

在上述任一技术方案中,优选地,所述pid控制公式为:

其中,u(t)表示t时刻所需的码率调整值,kp、ki、kd分别为比例系数、积分系数、微分系数,e(t)表示t时刻时所述视频发送缓冲区的实时长度与长度目标值的差值,表示所述系统自上一次码率调整后至t时刻时的误差量累积值,表示t时刻时的误差量与上一次检测所述实时码率时得到的误差量的微分。

在该技术方案中,为了降低短时间内快速变化的网络状况对视频数据传输带来的影响,提高播放流畅度,系统设置有视频发送缓冲区、播放缓冲区。在发送端和接收端之间,是用tcp协议进行连接的,而tcp协议在发送端维护一个tcp发送缓冲区,在接收端维护一个tcp接收缓冲区。因此,可以将整个视频直播传输的系统抽象成4个缓冲区:视频发送缓冲区、tcp发送缓冲区、tcp接收缓冲区、播放缓冲区。在视频流畅播放的时候,单位时间内进入视频发送缓冲区的视频帧数量和从播放缓冲区出去的视频帧数量是相等的,所以4个缓冲区总的视频帧数量是一个固定的值。由于tcp发送缓冲区、tcp接收缓冲区的大小很小,所以可以看成视频发送缓冲区、播放缓冲区中视频帧之和是一个定值,而视频发送缓冲区存在大量帧的时候,将导致播放缓冲区没有视频帧或存在较少的视频帧,具有很大可能性导致视频播放中断,故可以通过控制视频发送缓冲区的视频帧的数量来控制播放缓冲区中视频帧的数量,因此,本发明定义的系统状态变量是视频发送缓冲区中的视频帧的数量。

由此可知,e(t)表示t时刻时所述视频发送缓冲区的实时长度与长度目标值的差值,即状态变量的变化量,输出的u(t)代表码率调整的大小,将会被叠加到当前设置的实时码率上,作为下一个时刻应该设置的码率大小,假设当前的码率为br,那么下一个时刻的码率就是br+u(t)。

通过该技术方案,不断地监测状态变量的变化,将其与目标值进行比较,通过误差量来对实际带宽变化情况进行记录和预测,计算控制输出。然后根据控制输出有针对性地调整视频质量,使状态变量尽可能接近目标值,从而实现符合带宽变化的稳定视频传输。

在上述任一技术方案中,优选地,在所述按照预定检测周期检测系统的实时码率和视频发送缓冲区的实时长度之前,还包括:根据接收到的第二设置命令,设置所述预定检测周期。

在该技术方案中,是对系统的实时码率和视频发送缓冲区的实时长度进行周期性检测,也就是说,每经过预定检测周期进行一次检测,这里所述的预定检测周期可以由用户手动调整设置,或者也可以设置多个周期档位供用户选择,另外,还可以由系统根据实时码率,自动设置与网络状况相适宜的预定检测周期。比如,当网速高于标准值时,采用5s的检测周期,这样,在网速快的情况下可以尽可能减少周期性检测带来的功耗及内存占用,而当网速低于或等于标准值时,采用3s的检测周期,以避免因网速过慢而无法及时调整码率,避免直播不流畅。

在上述任一技术方案中,优选地,所述根据所述码率调整值,调整所述实时码率,具体包括:检测所述码率调整值是否达到预定调整阈值;当确定所述码率调整值达到所述预定调整阈值时,按照预定方向和预定力度调整所述实时码率。

在该技术方案中,计算得到码率调整值可以直接将其叠加至实时码率进行码率调整,也可以在码率调整值积累达到预定调整阈值再进行叠加,避免因多次进行较小的码率调整值调整而带来的能耗和内存占用。其中,早对实时码率进行调整时,可以按照预定方向和预定力度调整,预定方向包括增大或减小,预定力度相当于对实时码率进行调整的速度,比如,计算得到达到预定调整阈值的码率调整值后,按照每秒叠加码率调整值的10%的速度,分10s完成码率调整,从而可以避免因调整过快而造成的视频直播不流畅的缺陷。

其中,为了避免频繁的小幅度的调整,还可以对输入到pid公式中的e(t)进行量化,量化的公式可以表示为:

其中step是量化的步长,为一个固定的正整数,通过量化可以消除正常小幅度网络波动带来的不必要的码率调整。

本发明的另一方面提出了一种基于pid控制的视频直播传输控制系统,包括:检测单元,按照预定检测周期检测系统的实时码率和视频发送缓冲区的实时长度,其中,所述视频发送缓冲区的实时长度为缓冲的视频帧的数量;差值计算单元,计算所述视频发送缓冲区的实时长度与长度目标值的差值;pid计算单元,将所述差值带入pid控制公式,以计算得到当前时刻所需的码率调整值;码率调整单元,根据所述码率调整值,调整所述实时码率。

在该技术方案中,系统在进行视频直播时,可以根据视频发送缓冲区的实时长度,利用pid(proportion-integration-differentiation,比例-积分-微分)控制理论实时调整视频的发送端提供的视频流的码率,即对实时码率进行修正,从而可以将视频发送缓冲区的数据量维持在理想的状态,实现了视频质量根据网络状况的自适应,在提升视频直播的流畅程度,尽可能地充分利用网络带宽以达到较高视频质量。

其中,pid是一种闭环的反馈控制机制,在pid控制系统中,可根据系统当前状态与期望状态的误差来计算一个控制量,并利用该控制量对输入进行调整,从而使系统状态趋向于期望状态。也就是说,可以根据当前的视频发送缓冲区的实时长度与长度目标值的差值,也就是误差,来计算当前时刻所需的码率调整值,使实时码率趋向于期望值。

在上述技术方案中,优选地,还包括:第一设置单元,在所述按照预定检测周期检测系统的实时码率和视频发送缓冲区的实时长度之前,根据接收到的第一设置命令,设置所述视频发送缓冲区的所述长度目标值。

在该技术方案中,视频发送缓冲区的长度目标值可以由用户手动调整设置,或者也可以设置多个目标值档位供用户选择,另外,还可以由系统根据实时码率,自动设置与网络状况相适宜的长度目标值。

在上述任一技术方案中,优选地,所述pid控制公式为:

其中,u(t)表示t时刻所需的码率调整值,kp、ki、kd分别为比例系数、积分系数、微分系数,e(t)表示t时刻时所述视频发送缓冲区的实时长度与长度目标值的差值,表示所述系统自上一次码率调整后至t时刻时的误差量累积值,表示t时刻时的误差量与上一次检测所述实时码率时得到的误差量的微分。

在该技术方案中,为了降低短时间内快速变化的网络状况对视频数据传输带来的影响,提高播放流畅度,系统设置有视频发送缓冲区、播放缓冲区。在发送端和接收端之间,是用tcp协议进行连接的,而tcp协议在发送端维护一个tcp发送缓冲区,在接收端维护一个tcp接收缓冲区。因此,可以将整个视频直播传输的系统抽象成4个缓冲区:视频发送缓冲区、tcp发送缓冲区、tcp接收缓冲区、播放缓冲区。在视频流畅播放的时候,单位时间内进入视频发送缓冲区的视频帧数量和从播放缓冲区出去的视频帧数量是相等的,所以4个缓冲区总的视频帧数量是一个固定的值。由于tcp发送缓冲区、tcp接收缓冲区的大小很小,所以可以看成视频发送缓冲区、播放缓冲区中视频帧之和是一个定值,而视频发送缓冲区存在大量帧的时候,将导致播放缓冲区没有视频帧或存在较少的视频帧,具有很大可能性导致视频播放中断,故可以通过控制视频发送缓冲区的视频帧的数量来控制播放缓冲区中视频帧的数量,因此,本发明定义的系统状态变量是视频发送缓冲区中的视频帧的数量。

由此可知,e(t)表示t时刻时所述视频发送缓冲区的实时长度与长度目标值的差值,即状态变量的变化量,输出的u(t)代表码率调整的大小,将会被叠加到当前设置的实时码率上,作为下一个时刻应该设置的码率大小,假设当前的码率为br,那么下一个时刻的码率就是br+u(t)。

通过该技术方案,不断地监测状态变量的变化,将其与目标值进行比较,通过误差量来对实际带宽变化情况进行记录和预测,计算控制输出。然后根据控制输出有针对性地调整视频质量,使状态变量尽可能接近目标值,从而实现符合带宽变化的稳定视频传输。

在上述任一技术方案中,优选地,还包括:第二设置单元,在所述按 照预定检测周期检测系统的实时码率和视频发送缓冲区的实时长度之前,根据接收到的第二设置命令,设置所述预定检测周期。

在该技术方案中,是对系统的实时码率和视频发送缓冲区的实时长度进行周期性检测,也就是说,每经过预定检测周期进行一次检测,这里所述的预定检测周期可以由用户手动调整设置,或者也可以设置多个周期档位供用户选择,另外,还可以由系统根据实时码率,自动设置与网络状况相适宜的预定检测周期。比如,当网速高于标准值时,采用5s的检测周期,这样,在网速快的情况下可以尽可能减少周期性检测带来的功耗及内存占用,而当网速低于或等于标准值时,采用3s的检测周期,以避免因网速过慢而无法及时调整码率,避免直播不流畅。

在上述任一技术方案中,优选地,所述码率调整单元具体用于:检测所述码率调整值是否达到预定调整阈值,其中,当确定所述码率调整值达到所述预定调整阈值时,按照预定方向和预定力度调整所述实时码率。

在该技术方案中,计算得到码率调整值可以直接将其叠加至实时码率进行码率调整,也可以在码率调整值积累达到预定调整阈值再进行叠加,避免因多次进行较小的码率调整值调整而带来的能耗和内存占用。其中,早对实时码率进行调整时,可以按照预定方向和预定力度调整,预定方向包括增大或减小,预定力度相当于对实时码率进行调整的速度,比如,计算得到达到预定调整阈值的码率调整值后,按照每秒叠加码率调整值的10%的速度,分10s完成码率调整,从而可以避免因调整过快而造成的视频直播不流畅的缺陷。

其中,为了避免频繁的小幅度的调整,还可以对输入到pid公式中的e(t)进行量化,量化的公式可以表示为:

其中step是量化的步长,为一个固定的正整数,通过量化可以消除正常小幅度网络波动带来的不必要的码率调整。

通过以上技术方案,可以对实时码率进行修正,将视频发送缓冲区的数据量维持在理想的状态,实现了视频质量根据网络状况的自适应,在提升视频直播的流畅程度,尽可能地充分利用网络带宽以达到较高视频质量。

附图说明

图1示出了根据本发明的一个实施例的基于pid控制的视频直播传输控制方法的流程示意图;

图2示出了根据本发明的一个实施例的基于pid控制的视频直播传输控制系统的框图;

图3示出了根据本发明的一个实施例的缓冲区示意图;

图4示出了根据本发明的一个实施例的缓冲区状态变量示意图;

图5示出了根据本发明的另一个实施例的基于pid控制的视频直播传输控制系统的框图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

图1示出了根据本发明的一个实施例的基于pid控制的视频直播传输控制方法的流程示意图。

如图1所示,根据本发明的一个实施例的基于pid控制的视频直播传输控制方法,包括:

步骤102,按照预定检测周期检测系统的实时码率和视频发送缓冲区的实时长度,其中,所述视频发送缓冲区的实时长度为缓冲的视频帧的数量;

步骤104,计算所述视频发送缓冲区的实时长度与长度目标值的差值;

步骤106,将所述差值带入pid控制公式,以计算得到当前时刻所需的码率调整值;

步骤108,根据所述码率调整值,调整所述实时码率。

在该技术方案中,系统在进行视频直播时,可以根据视频发送缓冲区 的实时长度,利用pid(proportion-integration-differentiation,比例-积分-微分)控制理论实时调整视频的发送端提供的视频流的码率,即对实时码率进行修正,从而可以将视频发送缓冲区的数据量维持在理想的状态,实现了视频质量根据网络状况的自适应,在提升视频直播的流畅程度,尽可能地充分利用网络带宽以达到较高视频质量。

其中,pid是一种闭环的反馈控制机制,在pid控制系统中,可根据系统当前状态与期望状态的误差来计算一个控制量,并利用该控制量对输入进行调整,从而使系统状态趋向于期望状态。也就是说,可以根据当前的视频发送缓冲区的实时长度与长度目标值的差值,也就是误差,来计算当前时刻所需的码率调整值,使实时码率趋向于期望值。

在上述技术方案中,优选地,在步骤102之前,还包括:根据接收到的第一设置命令,设置所述视频发送缓冲区的所述长度目标值。

在该技术方案中,视频发送缓冲区的长度目标值可以由用户手动调整设置,或者也可以设置多个目标值档位供用户选择,另外,还可以由系统根据实时码率,自动设置与网络状况相适宜的长度目标值。

在上述任一技术方案中,优选地,所述pid控制公式为:

其中,u(t)表示t时刻所需的码率调整值,kp、ki、kd分别为比例系数、积分系数、微分系数,e(t)表示t时刻时所述视频发送缓冲区的实时长度与长度目标值的差值,表示所述系统自上一次码率调整后至t时刻时的误差量累积值,表示t时刻时的误差量与上一次检测所述实时码率时得到的误差量的微分。

在该技术方案中,为了降低短时间内快速变化的网络状况对视频数据传输带来的影响,提高播放流畅度,系统设置有视频发送缓冲区、播放缓冲区。在发送端和接收端之间,是用tcp协议进行连接的,而tcp协议在发送端维护一个tcp发送缓冲区,在接收端维护一个tcp接收缓冲区。因此,可以将整个视频直播传输的系统抽象成4个缓冲区:视频发送缓冲区、tcp发送缓冲区、tcp接收缓冲区、播放缓冲区。在视频流畅播放的时候,单位时间内进入视频发送缓冲区的视频帧数量和从播放缓冲区出去 的视频帧数量是相等的,所以4个缓冲区总的视频帧数量是一个固定的值。由于tcp发送缓冲区、tcp接收缓冲区的大小很小,所以可以看成视频发送缓冲区、播放缓冲区中视频帧之和是一个定值,而视频发送缓冲区存在大量帧的时候,将导致播放缓冲区没有视频帧或存在较少的视频帧,具有很大可能性导致视频播放中断,故可以通过控制视频发送缓冲区的视频帧的数量来控制播放缓冲区中视频帧的数量,因此,本发明定义的系统状态变量是视频发送缓冲区中的视频帧的数量。

由此可知,e(t)表示t时刻时所述视频发送缓冲区的实时长度与长度目标值的差值,即状态变量的变化量,输出的u(t)代表码率调整的大小,将会被叠加到当前设置的实时码率上,作为下一个时刻应该设置的码率大小,假设当前的码率为br,那么下一个时刻的码率就是br+u(t)。

通过该技术方案,不断地监测状态变量的变化,将其与目标值进行比较,通过误差量来对实际带宽变化情况进行记录和预测,计算控制输出。然后根据控制输出有针对性地调整视频质量,使状态变量尽可能接近目标值,从而实现符合带宽变化的稳定视频传输。

在上述任一技术方案中,优选地,在步骤102之前,还包括:根据接收到的第二设置命令,设置所述预定检测周期。

在该技术方案中,是对系统的实时码率和视频发送缓冲区的实时长度进行周期性检测,也就是说,每经过预定检测周期进行一次检测,这里所述的预定检测周期可以由用户手动调整设置,或者也可以设置多个周期档位供用户选择,另外,还可以由系统根据实时码率,自动设置与网络状况相适宜的预定检测周期。比如,当网速高于标准值时,采用5s的检测周期,这样,在网速快的情况下可以尽可能减少周期性检测带来的功耗及内存占用,而当网速低于或等于标准值时,采用3s的检测周期,以避免因网速过慢而无法及时调整码率,避免直播不流畅。

在上述任一技术方案中,优选地,步骤108具体包括:检测所述码率调整值是否达到预定调整阈值;当确定所述码率调整值达到所述预定调整阈值时,按照预定方向和预定力度调整所述实时码率。

在该技术方案中,计算得到码率调整值可以直接将其叠加至实时码率 进行码率调整,也可以在码率调整值积累达到预定调整阈值再进行叠加,避免因多次进行较小的码率调整值调整而带来的能耗和内存占用。其中,早对实时码率进行调整时,可以按照预定方向和预定力度调整,预定方向包括增大或减小,预定力度相当于对实时码率进行调整的速度,比如,计算得到达到预定调整阈值的码率调整值后,按照每秒叠加码率调整值的10%的速度,分10s完成码率调整,从而可以避免因调整过快而造成的视频直播不流畅的缺陷。

其中,为了避免频繁的小幅度的调整,还可以对输入到pid公式中的e(t)进行量化,量化的公式可以表示为:

其中step是量化的步长,为一个固定的正整数,通过量化可以消除正常小幅度网络波动带来的不必要的码率调整。

图2示出了根据本发明的一个实施例的基于pid控制的视频直播传输控制系统的框图。

如图2所示,根据本发明的一个实施例的基于pid控制的视频直播传输控制系统200,包括:检测单元202、差值计算单元204、pid计算单元206和码率调整单元208。

检测单元202用于按照预定检测周期检测系统的实时码率和视频发送缓冲区的实时长度,其中,所述视频发送缓冲区的实时长度为缓冲的视频帧的数量;差值计算单元204用于计算所述视频发送缓冲区的实时长度与长度目标值的差值;pid计算单元206用于将所述差值带入pid控制公式,以计算得到当前时刻所需的码率调整值;码率调整单元208用于根据所述码率调整值,调整所述实时码率。

在该技术方案中,系统在进行视频直播时,可以根据视频发送缓冲区的实时长度,利用pid(proportion-integration-differentiation,比例-积分-微分)控制理论实时调整视频的发送端提供的视频流的码率,即对实时码率进行修正,从而可以将视频发送缓冲区的数据量维持在理想的状态,实现了视频质量根据网络状况的自适应,在提升视频直播的流畅程度,尽可能地充分利用网络带宽以达到较高视频质量。

其中,pid是一种闭环的反馈控制机制,在pid控制系统中,可根据系统当前状态与期望状态的误差来计算一个控制量,并利用该控制量对输入进行调整,从而使系统状态趋向于期望状态。也就是说,可以根据当前的视频发送缓冲区的实时长度与长度目标值的差值,也就是误差,来计算当前时刻所需的码率调整值,使实时码率趋向于期望值。

在上述技术方案中,优选地,还包括:第一设置单元210,在所述按照预定检测周期检测系统的实时码率和视频发送缓冲区的实时长度之前,根据接收到的第一设置命令,设置所述视频发送缓冲区的所述长度目标值。

在该技术方案中,视频发送缓冲区的长度目标值可以由用户手动调整设置,或者也可以设置多个目标值档位供用户选择,另外,还可以由系统根据实时码率,自动设置与网络状况相适宜的长度目标值。

在上述任一技术方案中,优选地,所述pid控制公式为:

其中,u(t)表示t时刻所需的码率调整值,kp、ki、kd分别为比例系数、积分系数、微分系数,e(t)表示t时刻时所述视频发送缓冲区的实时长度与长度目标值的差值,表示所述系统自上一次码率调整后至t时刻时的误差量累积值,表示t时刻时的误差量与上一次检测所述实时码率时得到的误差量的微分。

在该技术方案中,为了降低短时间内快速变化的网络状况对视频数据传输带来的影响,提高播放流畅度,系统设置有视频发送缓冲区、播放缓冲区。在发送端和接收端之间,是用tcp协议进行连接的,而tcp协议在发送端维护一个tcp发送缓冲区,在接收端维护一个tcp接收缓冲区。因此,可以将整个视频直播传输的系统抽象成4个缓冲区:视频发送缓冲区、tcp发送缓冲区、tcp接收缓冲区、播放缓冲区。在视频流畅播放的时候,单位时间内进入视频发送缓冲区的视频帧数量和从播放缓冲区出去的视频帧数量是相等的,所以4个缓冲区总的视频帧数量是一个固定的值。由于tcp发送缓冲区、tcp接收缓冲区的大小很小,所以可以看成视频发送缓冲区、播放缓冲区中视频帧之和是一个定值,而视频发送缓冲区存在大量帧的时候,将导致播放缓冲区没有视频帧或存在较少的视频帧,具 有很大可能性导致视频播放中断,故可以通过控制视频发送缓冲区的视频帧的数量来控制播放缓冲区中视频帧的数量,因此,本发明定义的系统状态变量是视频发送缓冲区中的视频帧的数量。

由此可知,e(t)表示t时刻时所述视频发送缓冲区的实时长度与长度目标值的差值,即状态变量的变化量,输出的u(t)代表码率调整的大小,将会被叠加到当前设置的实时码率上,作为下一个时刻应该设置的码率大小,假设当前的码率为br,那么下一个时刻的码率就是br+u(t)。

通过该技术方案,不断地监测状态变量的变化,将其与目标值进行比较,通过误差量来对实际带宽变化情况进行记录和预测,计算控制输出。然后根据控制输出有针对性地调整视频质量,使状态变量尽可能接近目标值,从而实现符合带宽变化的稳定视频传输。

在上述任一技术方案中,优选地,还包括:第二设置单元212,在所述按照预定检测周期检测系统的实时码率和视频发送缓冲区的实时长度之前,根据接收到的第二设置命令,设置所述预定检测周期。

在该技术方案中,是对系统的实时码率和视频发送缓冲区的实时长度进行周期性检测,也就是说,每经过预定检测周期进行一次检测,这里所述的预定检测周期可以由用户手动调整设置,或者也可以设置多个周期档位供用户选择,另外,还可以由系统根据实时码率,自动设置与网络状况相适宜的预定检测周期。比如,当网速高于标准值时,采用5s的检测周期,这样,在网速快的情况下可以尽可能减少周期性检测带来的功耗及内存占用,而当网速低于或等于标准值时,采用3s的检测周期,以避免因网速过慢而无法及时调整码率,避免直播不流畅。

在上述任一技术方案中,优选地,码率调整单元208具体用于:检测所述码率调整值是否达到预定调整阈值,其中,当确定所述码率调整值达到所述预定调整阈值时,按照预定方向和预定力度调整所述实时码率。

在该技术方案中,计算得到码率调整值可以直接将其叠加至实时码率进行码率调整,也可以在码率调整值积累达到预定调整阈值再进行叠加,避免因多次进行较小的码率调整值调整而带来的能耗和内存占用。其中,早对实时码率进行调整时,可以按照预定方向和预定力度调整,预定方向 包括增大或减小,预定力度相当于对实时码率进行调整的速度,比如,计算得到达到预定调整阈值的码率调整值后,按照每秒叠加码率调整值的10%的速度,分10s完成码率调整,从而可以避免因调整过快而造成的视频直播不流畅的缺陷。

其中,为了避免频繁的小幅度的调整,还可以对输入到pid公式中的e(t)进行量化,量化的公式可以表示为:

其中step是量化的步长,为一个固定的正整数,通过量化可以消除正常小幅度网络波动带来的不必要的码率调整。

图3示出了根据本发明的一个实施例的缓冲区示意图。

为了降低短时间内快速变化的网络状况对视频数据传输带来的影响,提高播放流畅度,系统设置有视频发送缓冲区、播放缓冲区。在发送端和接收端之间,是用tcp协议进行连接的,而tcp协议在发送端维护一个tcp发送缓冲区,在接收端维护一个tcp接收缓冲区。因此,如图3所示,可以将整个视频直播传输的系统抽象成4个缓冲区:视频发送缓冲区、tcp发送缓冲区、tcp接收缓冲区、播放缓冲区。在视频流畅播放的时候,单位时间内进入视频发送缓冲区的视频帧数量和从播放缓冲区出去的视频帧数量是相等的,所以4个缓冲区总的视频帧数量是一个固定的值。由于tcp发送缓冲区、tcp接收缓冲区的大小很小,所以可以看成视频发送缓冲区、播放缓冲区中视频帧之和是一个定值。

所以,可以通过控制视频发送缓冲区的视频帧的数量来控制播放缓冲区中视频帧的数量。根据tcp协议的特点,当视频发送缓冲区存在一定量的视频帧的时候,tcp发送缓冲区是充满的,在这种情况下达到了最大的发送速度。视频发送缓冲区存在大量帧的时候,将导致播放缓冲区没有视频帧或存在较少的视频帧,具有很大可能性导致视频播放中断。

因此,本发明定义的系统状态变量是视频发送缓冲区中的视频帧的数量。通过该技术方案,不断地监测状态变量的变化,将其与目标值进行比较,通过误差量来对实际带宽变化情况进行记录和预测,计算控制输出。然后根据控制输出有针对性地调整视频质量,使状态变量尽可能接近目标 值,从而实现符合带宽变化的稳定视频传输。

在本发明中,对系统的状态变量进行控制主要有两个目标,一个是尽可能充分利用网络带宽,一个是保证接收端能够流畅播放。

一方面,将缓冲区的长度记为缓冲的视频帧的数量,将播放缓冲区的最大长度记为s0,初始情况下,当播放缓冲区达到了最大长度s0时,接收端才开始播放视频。在播放过程中,如果播放缓冲区的长度减少为0,那么接收端需要等到播放缓冲区达到最大长度的时候才重新开始播放视频。因此,当播放缓冲区的长度减少为0时,会导致播放的中断。

故在对系统进行控制的过程中,首先需要保证播放缓冲区的长度大于0。在连续播放的情况下,视频发送缓冲区、播放缓冲区中视频帧之和是一个定值,约等于s0,因此,可以通过控制视频发送缓冲区的长度小于s0来保证播放缓冲区的长度大于0,即可保证接收端能够流畅播放。

另一方面,为了尽可能充分利用带宽提高视频质量,需要保证tcp发送缓冲区尽可能充满。这一点可以通过控制视频发送缓冲区的长度大于0来实现,在这种情况下tcp发送缓冲区始终处于充满状态。因此,直接控制的目标就是控制视频发送缓冲区的长度为s1,其中s1大于0且小于s0。

为此,本发明首先定义系统的状态变量是视频发送缓冲区的长度s,这个变量可以反映当前的视频码率和网络吞吐量直接的关系,s(t)表示时刻t视频发送缓冲区的长度。当码率大于网络吞吐量,s(t)呈增长的趋势;当码率小于网络吞吐量,s(t)呈减小为0的趋势;当码率接近于网络吞吐量时,s(t)保持相对稳定。比如,可以设置s的目标值是0.2s0,记为sr,其中,s0是播放缓冲区的最大长度,记录s与目标值地偏差为e,在时刻t,状态变量与目标值的误差记为e(t);若当前s(t)大于sr,则e(t)为负值,反之,e(t)为正值。

如图4所示,当前视频发送缓冲区中帧数量是s(t),目标值是st,因此e(t)=sr-s(t)。将e(t)代入pid公式可以得到对码率调整的反馈信息,故根据pid控制模型,系统的控制器的输出为:

其中,u(t)表示t时刻所需的码率调整值,kp、ki、kd分别为比例系数、积分系数、微分系数,表示系统自上一次码率调整后至t时刻时的误差量累积值,表示t时刻时的误差量与上一次检测实时码率时得到的误差量的微分。

这一个输出的u(t)代表码率调整的大小,将会被作为下一个时刻应该设置的码率大小,叠加到当前设置的视频码率上,如果当前的码率为br,那么下一个时刻的码率就是br+u(t)。

在具体应用中,本发明按照一定的周期t进行上述的系统状态检查和码率调整,系统使用的状态变量s(t)可以取为在上一个周期t内的视频发送缓冲区中平均帧数量,从而增加了视频直播的稳定性。为了避免频繁的小幅度的调整,本发明还可以对输入到pid公式中的e(t)进行量化,量化的公式可以表示为:

其中step是量化的步长,为一个固定的正整数,通过量化可以消除正常小幅度网络波动带来的不必要的码率调整。

图5示出了根据本发明的另一个实施例的基于pid控制的视频直播传输控制系统的框图。

如图5所示,根据本发明的另一个实施例的基于pid控制的视频直播传输控制系统500,包括:缓冲区信息获取模块502、pid码率计算模块504和视频码率调整模块506,缓冲区信息获取模块502结合实际网络环境,获取系统的实时码率和视频发送缓冲区的实时长度,并通过pid码率计算模块504计算码率调整值,最后,视频码率调整模块506根据码率调整值对实时码率进行调整。

其中,基于pid控制的视频直播传输控制系统500不仅能够用于rtmp协议,还可以扩展到其他基于tcp的应用层流媒体传输协议,如http协议(hypertexttransferprotocol,超文本传输协议)、rtsp协议(realtimestreamingprotocol,实时流传输协议)等,具有通用性。

具体地,可以通过检测到的误差变量进行码率调整。在每个检测时间点,获取状态变量的值,也就是视频发送缓冲区的实时长度,然后与长度 目标值进行比较,得出误差变量。

对误差变量计算如下三部分的值:

比例部分,这一部分就是误差量本身,作为对当前网络带宽和传输状况匹配度的反馈,以驱动系统状态变量不断趋近目标,即t时刻时所述视频发送缓冲区的实时长度与长度目标值的差值e(t)与比例系数乘积。

积分部分,这一部分是系统自上次质量调整之后误差量的累积,长时间的监测数据可以反映近段时间内带宽变化的平均情况,目的是以减小频繁调整质量从而造成波动的可能性。

其中,积分部分=误差量1+误差量2+…+误差量n,1、2、…、n为自上一次质量调整以来的误差量检测索引。

微分部分,这一部分是当前时刻误差量与上一检测时间点误差量的微分,主要用途是预测带宽的变化趋势,以使状态变量尽快趋近目标。

其中,微分部分(本次误差变量-上次误差变量)/检测间隔时间。

以上各部分经过加权求和后形成控制输出。

其中,控制输出=比例系数×比例部分+积分系数×积分部分+微分系数×微分部分。

其中,三个系数根据控制领域的经典方法,进行确定,如齐格勒-尼科尔斯方法,也可人工进行调整。根据得到的控制输出和当前传输的码率,可以决定是否进行视频质量调节,以及调节的方向和力度。

因此,通过该技术方案,可以有效地调整直播视频的码率,保持播放的流程性,同时充分利用带宽提高视频质量,其关键之处在于利用积分部分来减小频繁调整的可能性,并利用微分部分来预测带宽变化。

以上结合附图详细说明了本发明的技术方案,通过本发明的技术方案,可以对实时码率进行修正,将视频发送缓冲区的数据量维持在理想的状态,实现了视频质量根据网络状况的自适应,在提升视频直播的流畅程度,尽可能地充分利用网络带宽以达到较高视频质量。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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