本发明涉及视频数据传输技术领域,尤其是指一种动态计算视频传输所需码率的方法、装置、计算机设备及存储介质。
背景技术:
视频码率是视频传输的一个重要指标,它指数据传输时单位时间传送的数据位数,视频码率越大,视频越清晰。
某个分辨率下,我们通常会预设一个初始视频码率和最大视频码率。当网络质量较好时,逐步提高视频码率;当网络质量变差时(丢包、延时、抖动明显增大),逐步降低视频码率。整个视频过程中,视频码率就在初始视频码率和最大视频码率间波动。
最大视频码率通常取经验值,但人眼对清晰度的识别能力有限,经验值与实际值可能存在偏差。而且,预设的最大视频码率可能难以适应动态变化的网络。
技术实现要素:
本发明所要解决的技术问题是:针对现有技术的不足,提供一种能够根据动态检测网络传输质量,提供最佳视频码率的方法、装置、计算机设备及存储介质。
为了解决上述技术问题,本发明采用的技术方案为:一种动态计算视频传输所需码率的方法,包括:
s1、采用初始视频码率进行视频数据传输,经过预设时间后进入步骤s2;
s2、获取当前视频数据的网络传输指标;
s3、判断当前视频的网络传输指标是否达标,达标则进入步骤s4,否则进入步骤s5;
s4、提升视频码率进行视频数据传输,经过预设时间后返回步骤s2;
s5、判断当前视频码率是否大于初始视频码率,是则降低视频码率进行视频数据传输,经过预设时间后返回步骤s2,否则进入步骤s6;
s6、维持当前视频码率进行视频数据传输,经过预设时间后返回步骤s2。
进一步的,在s2步骤中,包括:
s21、获取当前视频网络丢包率数据;
s22、获取当前视频传输的网络延迟数据;
s23、将当前视频网络丢包率数据和当前视频传输的网络延迟数据打包为网络状态数据。
进一步的,在步骤s3中,还包括:
s31、获取源端采集的视频序列清晰度数据;
s32、远端收到源端同组视频序列后,计算获取的视频序列清晰度数据并回传给源端;
s33、比较源端采集的视频序列清晰度和远端的获取的视频序列清晰度数据的差值;
s34、将差值与预设数值作对比,若差值小于或等于预设数值,则保持当前视频码率进行视频数据传输,经过预设时间后进入步骤s2,否则进入步骤s35;
s35、提高视频码率进行视频数据传输,经过预设时间后进入步骤s2。
本发明还涉及一种动态计算视频传输所需码率的装置,其特征在于:包括源端和远端,所述源端通过网络与所述远端连接,所述源端包括码率管理模块、传输模块和网络监控模块,
所述码率管理模块用于选择适当的视频传输码率输出给传输模块,及对比当前视频码率和初始视频码率,
所述传输模块用于将视频数据传输至远端,
所述网络监控模块用于获取网络传输指标。
进一步的,所述网络监控模块包括网络丢包率获取单元、网络延迟获取单元和网络传输指标比对单元,
所述网络丢包率获取单元用于获取当前视频网络丢包率数据,
所述网络延迟获取单元用于获取当前视频传输的网络延迟数据,
所述网络传输指标比对单元用于将获取的当前视频网络丢包率数据和当前视频传输的网络延迟数据打包为网络传输指标,并与预存的标准指标作对比。
进一步的,所述源端和远端均包括视频清晰度检测模块,所述远端还包括反馈模块,所述视频清晰度检测模块用于检测当前视频序列的清晰度数值,所述反馈模块用于计算获取的视频序列清晰度数据并回传给源端的视频清晰度检测模块。
本发明还涉及一种计算机设备,包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现动态计算视频传输所需码率的方法。
本发明还涉及一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,使所述处理器执行动态计算视频传输所需码率的方法。
本发明的有益效果在于:提供了一种可根据网络传输状态,动态调整视频码率以保证视频流畅度的方法,该方法通过定期监控网络传输状态,调整视频传输码率,保证视频清晰度的同时也保证了视频的流畅度,大大提升了用户体验。
附图说明
下面结合附图详述本发明的具体流程:
图1为本发明的流程示意图;
图2为本发明的视频清晰度比对流程示意图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
实施例1
请参阅图1,一种动态计算视频传输所需码率的方法,包括:
s1、预先配置最小视频码率值为初始视频码率,获取传输请求后,采用初始视频码率进行视频数据传输,经过第一预设时间后进入步骤s2;
其中,所述初始视频码率可以自定义配置。
s2、获取当前视频数据的网络传输指标,网络传输指标包括丢包率及网络延迟等指标;
s3、根据获取的丢包率及网络延迟指标,判断当前视频的网络传输指标是否达标,达标则进入步骤s4,否则进入步骤s5;
s4、提升视频码率进行视频数据传输,优选地提高10%视频码率进行传输,经过第二预设时间后返回步骤s2;
s5、判断当前视频码率是否大于初始视频码率,是则降低视频码率进行视频数据传输,优选地降低10%视频码率进行传输,经过第三预设时间后返回步骤s2,若当前视频码率不大于初始视频码率,则进入步骤s6;
s6、维持当前视频码率进行视频数据传输,经过第四预设时间后返回步骤s2。
其中,第一预设时间为初次检测网络质量;第二预设时间为提升码率再次检测;第三预设时间为降低码率再次检测;第四预设时间为维持码率再次检测;
第一和四预设在静态的码率下进行检测,为保证检测的准确性,使用较长时间检测,通常设置为1.0-3.0秒。
第二和三预设在动态的码率下进行检测,为保证检测的实时性,采用较短时间检测,通常设置为0.5-1.0秒。
从上述描述可知,本发明的有益效果在于:提供了一种可根据网络传输状态,动态调整视频码率以保证视频流畅度的方法,该方法通过定期监控网络传输状态,调整视频传输码率,保证视频清晰度的同时也保证了视频的流畅度,大大提升了用户体验。
实施例2
在实施例1的基础上,在s2步骤中,包括:
s21、获取当前视频网络丢包率数据,网络丢包率是指丢失数据包数量占发送数据包数量的比率,计算公式如下:
lr=(1.0f-(r1+...+rn)*1.0f/(s1+...+sn))*100
其中,ri:单次接收数据量,si:单次发送数据量;
s22、获取当前视频传输的网络延迟数据,网络延迟是数据从一端传输到另一端所需的时间,计算公式如下:
dt=((r1-s1)+...+(rn-sn))/n
其中,si:数据发送时间,ri:数据接收时间;
s23、将当前视频网络丢包率数据和当前视频传输的网络延迟数据打包为网络状态数据。
本实施例中,判断网络状态的标准如下:
网络状态很好(无丢包,网络延迟<10ms)
网络状态较好(无丢包,网络延迟<50ms)
网络状态较差(丢包率<=5%,网络延迟<100ms)
网络状态很差(丢包率<=20%,网络延迟<500ms)
因此,通过当前视频网络丢包率数据和当前视频传输的网络延迟数据可得知当前网络处于什么样的状态,即可根据标准来改变或保持当前视频码率以适应当前网络的数据传输。网络状态的标准可以自定义配置。
实施例3
请参阅图2,在实施例2的基础上,在步骤s3中,还包括:
s31、获取源端采集的视频序列清晰度数据(src);
本实施例中采集视频序列清晰度数据是基于dshow架构捕获摄像头图像的方式获取。
s32、远端收到源端同组视频序列后,计算获取的视频序列清晰度数据(dst)并回传给源端;
s33、比较源端采集的视频序列清晰度数据(src)和远端的获取的视频序列清晰度数据(dst)的清晰度数据差值(diff=src-dst);
s34、将清晰度数据差值(diff)与预设数值(threshold)作对比,若清晰度数据差值小于或等于预设数值(diff<=threshold),则保持当前视频码率进行视频数据传输,经过预设时间后进入步骤s2,否则,清晰度差值超过合理范围(diff>threshold)进入步骤s35;
s35、提高10%的视频码率进行视频数据传输,经过预设时间后进入步骤s2。
本实施例中,可以配置当网络状态一直处于很好时,可以直接进入步骤s31,监测对比源端和远端的视频序列清晰度数据的差值的步骤,加快提升视频码率进行视频数据传输的进度。
实施例4
在实施例3的基础上,在步骤s2中,还包括:判断视频是否还在传输的步骤。
本实施例中,当视频数据还在传输,则继续获取当前视频数据的网络传输指标;若当前没有视频数据在传输,则认为视频数据传输完成,等待下一次传输请求。
实施例5
本发明还涉及一种动态计算视频传输所需码率的装置,其特征在于:包括源端和远端,所述源端通过网络与所述远端连接,所述源端包括码率管理模块、传输模块和网络监控模块,
所述码率管理模块用于选择适当的视频传输码率输出给传输模块,及对比当前视频码率和初始视频码率,若需要降低码率时,码率管理模块对比当前视频码率和初始视频码率,如果当前视频码率大于初始视频码率,则降低视频码率进行传输,如果当前视频码率等于初始视频码率,则保持视频码率进行传输。
所述传输模块用于将视频数据传输至远端,及从远端获取反馈信息。
所述网络监控模块用于获取网络传输指标,网络监控模块定时获取当前视频数据的网络传输指标,并将当前视频的网络传输指标与预设的标准指标比对,并向所述码率管理模块发送视频码率调整信息。
实施例6
在实施例5的基础上,所述网络监控模块包括网络丢包率获取单元、网络延迟获取单元和网络传输指标比对单元,
所述网络丢包率获取单元用于获取当前视频网络丢包率数据,
所述网络延迟获取单元用于获取当前视频传输的网络延迟数据,
所述网络传输指标比对单元用于将获取的当前视频网络丢包率数据和当前视频传输的网络延迟数据打包为网络传输指标,并与预设的标准指标作比对。
本实施例中,网络丢包率是指丢失数据包数量占发送数据包数量的比率,计算公式如下:
lr=(1.0f-(r1+...+rn)*1.0f/(s1+...+sn))*100
其中,ri:单次接收数据量,si:单次发送数据量;
网络延迟是数据从一端传输到另一端所需的时间,计算公式如下:
dt=((r1-s1)+...+(rn-sn))/n
其中,si:数据发送时间,ri:数据接收时间;
本实施例中,判断网络状态的标准如下:
网络状态很好(无丢包,网络延迟<10ms)
网络状态较好(无丢包,网络延迟<50ms)
网络状态较差(丢包率<=5%,网络延迟<100ms)
网络状态很差(丢包率<=20%,网络延迟<500ms)
因此,通过当前视频网络丢包率数据和当前视频传输的网络延迟数据可得知当前网络处于什么样的状态,即可根据标准来改变或保持当前视频码率以适应当前网络的数据传输。网络状态的标准可以自定义配置。
实施例7
在实施例6的基础上,所述源端和远端均包括视频清晰度检测模块,所述远端还包括反馈模块,所述视频清晰度检测模块用于检测当前视频序列的清晰度数值,所述反馈模块用于计算获取的视频序列清晰度数据并回传给源端的视频清晰度检测模块。
本实施例中,当网络状态一直处于很好状态,源端的视频清晰度检测模块向远端发出清晰度对比请求,远端的视频清晰度检测模块在收到请求后,即获取与源端同组视频序列的视频序列清晰度数据,并通过反馈模块将该数据回传给源端,源端通过对比两组视频序列的清晰度数据得到清晰度数据差值,源端将清晰度数据差值与预设数值作对比,若清晰度数据差值小于或等于预设数值,则保持当前视频码率进行视频数据传输;若清晰度差值超过合理范围,则提高10%的视频码率进行视频数据传输。
本发明还涉及一种计算机设备,包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现动态计算视频传输所需码率的方法。
所述计算机设备可以是终端,也可以是服务器,其中,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式设备等具有通信功能的电子设备。服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
该计算机设备包括通过系统总线连接的处理器、存储器和网络接口,其中,存储器可以包括非易失性存储介质和内存储器。
该非易失性存储介质可存储操作系统和计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行一种动态计算视频传输所需码率的方法。
该处理器用于提供计算和控制能力,以支撑整个计算机设备的运行。
该内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行一种动态计算视频传输所需码率的方法。
该网络接口用于与其它设备进行网络通信。本领域技术人员可以理解,仅仅是与本申请方案相关的部分结构,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应当理解,在本申请实施例中,处理器可以是中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本发明还涉及一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,使所述处理器执行动态计算视频传输所需码率的方法。
所述存储介质可以是u盘、移动硬盘、只读存储器(read-onlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。