技术新讯 > 电子通信装置的制造及其应用技术 > 一种视频编码方法与流程  >  正文

一种视频编码方法与流程

  • 国知局
  • 2024-10-09 14:43:16

本技术涉及视频编码,特别涉及一种视频编码方法。

背景技术:

1、实时音视频通信系统(rtc,real time communication)中主要使用基于分组的传输协议来传输音视频数据。从发送端采集到接收端解码渲染过程中,音视频数据要经过多个网络节点,各网络节点有相应的带宽瓶颈。rtc传输音数据时对链路进行实时带宽估计,根据带宽估计的结果来控制端到端的音视频数据量。

2、rtc传输视频数据的码率控制通常由两部分组成,一部分是视频编码过程的码率控制,另一部分是视频发送时的码率控制。视频编码的码率控制主要有提高编码质量、降低延时、提高编码速率控制准确度等目的。视频编码技术的特性使这几个目标之间相互矛盾,实际工程应用中通常结合多种因素来设计定制化的策略。

3、对编码过程进行精细化控制以提高编码准确的技术方案中,会增大空域和时域上的编码质量差异,进而劣化最终的编码质量。

4、对编码过程进行精细化控制以提高编码质量的技术方案中,通常对特殊类型帧(关键帧、运动帧、屏幕切换帧等)会有特殊编码参数设计,此类设计会在编码特殊帧时产生明显的码率峰值,进而降低编码控制准确度。

5、同时,码率控制方案设计越是精细化,越能够在质量、延迟、准确度方面取得平衡,会与编码器实现方式、视频编码协议和业务场景等耦合越深入,一旦编码参数、使用场景、编码器实现等等因素发生变化,其方法反而会恶化系统的性能,通用性非常低。由此可见,现有的视频编码方法存在视频编码的质量、延迟、准确性无法兼顾的问题。

技术实现思路

1、本技术提供了一种视频编码方法,可以解决视频编码的质量、延迟、准确性无法兼顾的问题。

2、第一方面,本技术实施例提供了一种视频编码方法,该视频编码方法包括:

3、获取目标视频的目标码率、在第n个时刻的前n-1个时刻的编码帧数量和码率预算值、在第n个时刻的多个未编码帧、在第n-1个时刻的编码状态;第n个时刻为当前时刻,目标码率为目标视频的预设的编码码率,码率预算值为编码码率的最大值,码率预算值大于等于目标码率,编码状态用于描述目标视频的码率预算值的状态;

4、根据目标码率、第n-1个时刻的码率预算值计算当前时刻的当前码率预算值;

5、基于前n-1个时刻的编码帧数量和码率预算值、当前码率预算值和未编码帧的数量,计算当前时刻的当前码率预算趋势值以及第n-1个时刻的历史码率预算趋势值;

6、根据当前码率预算趋势值和历史码率预算趋势值,获取在当前时刻码率预算值的连续下降趋势系数和连续上升趋势系数;连续下降趋势系数用于描述在当前时刻与第n-1个时刻之间码率预算值的降低状况,连续上升趋势系数用于描述在当前时刻与第n-1个时刻之间码率预算值的提升状况;

7、基于目标视频在第n-1个时刻的编码状态、连续下降趋势系数、连续上升趋势系数、当前码率预算值获取当前时刻的帧丢弃周期;帧丢弃周期用于描述丢弃未编码帧的间隔;

8、根据当前码率预算值和帧丢弃周期依次对当前时刻的所有未编码帧进行编码。

9、可选的,根据目标码率、第n-1个时刻的码率预算值计算当前时刻的当前码率预算值,包括:

10、通过公式:

11、bn=bn-1+(tn-tn-1)×r×rf

12、计算当前时刻的当前码率预算值bn;

13、其中,bn-1表示第n-1个时刻的码率预算值,tn表示当前时刻对应的系统时间,tn-1表示第n-1个时刻对应的系统时间,r表示目标码率,rf表示码率控制强度系数。

14、可选的,基于前n-1个时刻的编码帧数量和码率预算值、当前码率预算值和未编码帧的数量,计算当前时刻的当前码率预算趋势值以及第n-1个时刻的历史码率预算趋势值,包括:

15、基于前n-1个时刻的码率预算值以及当前码率预算值计算码率预算平均值;

16、基于前n-1个时刻的编码帧数量以及未编码帧的数量计算编码帧平均数量;

17、根据码率预算平均值、编码帧平均数量、前n-1个时刻的编码帧数量和码率预算值、当前码率预算值、未编码帧的数量,计算当前时刻的当前码率预算趋势值;

18、根据码率预算平均值、未编码帧的平均数量、前n-1个时刻的编码帧数量和码率预算值,计算第n-1个时刻的历史码率预算趋势值。

19、可选的,基于前n-1个时刻的码率预算值以及当前码率预算值计算码率预算平均值,包括:

20、通过公式:

21、

22、计算码率预算平均值bavg;

23、其中,bt表示第t个时刻的码率预算值,当t=n时,bn表示当前码率预算值,n表示当前时刻;

24、基于前n-1个时刻的编码帧数量以及未编码帧的数量计算编码帧平均数量,包括:

25、通过公式:

26、

27、计算未编码帧的平均数量cavg;

28、其中,ct表示第t个时刻的编码帧数量,当t=n时,cn表示未编码帧的数量。

29、可选的,根据码率预算平均值、编码帧平均数量、前n-1个时刻的编码帧数量和码率预算值、当前码率预算值、未编码帧的数量,计算当前时刻的当前码率预算趋势值,包括:

30、通过公式:

31、

32、计算当前时刻的当前码率预算趋势值qn;

33、根据码率预算平均值、未编码帧的平均数量、前n-1个时刻的编码帧数量和码率预算值,计算第n-1个时刻的历史码率预算趋势值,包括:

34、通过公式:

35、

36、计算第n-1个时刻的历史码率预算趋势值qn-1。

37、可选的,根据当前码率预算趋势值和历史码率预算趋势值,获取在当前时刻码率预算值的连续下降趋势系数和连续上升趋势系数,包括:

38、若历史码率预算趋势值小于-qth,且当前码率预算趋势值小于-qth,则将当前时刻的连续下降趋势系数设定为第n-1个时刻的连续下降趋势系数加1,当前时刻的连续上升趋势系数设定为0;其中,qth表示码率预算趋势阈值;

39、若历史码率预算趋势值大于qth,且当前码率预算趋势值大于qth,则将当前时刻的连续上升趋势系数设定为第n-1个时刻的连续上升趋势系数加1,当前时刻的连续下降趋势系数设定为0;

40、若历史码率预算趋势值小于-qth,且当前码率预算趋势值大于qth,则将,则将当前时刻的连续下降趋势系数和连续上升趋势系数均设定为0;

41、若历史码率预算趋势值大于qth,且当前码率预算趋势值小于-qth,则将,则将当前时刻的连续下降趋势系数和连续上升趋势系数均设定为0。

42、可选的,编码状态为预算充足状态、预算下降状态、预算上升状态、预算亏空状态中的一者;

43、基于目标视频在第n-1个时刻的编码状态、连续下降趋势系数、连续上升趋势系数、当前码率预算值获取当前时刻的帧丢弃周期,包括:

44、当目标视频在第n-1个时刻的编码状态为预算充足状态时,若当前时刻的连续下降趋势系数大于等于下降系数阈值,则目标视频在当前时刻的编码状态为预算下降状态,将帧丢弃周期设定为帧丢弃周期上限值,并将连续下降趋势系数设定为0;

45、若当前时刻连续下降趋势系数小于下降系数阈值,则目标视频在当前时刻的编码状态为预算充足状态,帧丢弃周期为第n-1个时刻的帧丢弃周期。

46、可选的,基于目标视频在第n-1个时刻的编码状态、连续下降趋势系数、连续上升趋势系数、当前码率预算值获取当前时刻的帧丢弃周期,还包括:

47、当目标视频在第n-1个时刻的编码状态为预算下降状态时,若当前时刻的码率预算值大于码率预算下限值,则目标视频在当前时刻的编码状态为预算下降状态,将帧丢弃周期设定为帧丢弃周期上限值减一;

48、若当前时刻的连续上升趋势系数大于等于上升系数阈值,则目标视频在当前时刻的编码状态为预算上升状态,将连续上升趋势系数设定为0,判断第n-1个时刻的帧丢弃周期是否小于帧丢弃周期上限值,若是,则将帧丢弃周期设定为第n-1个时刻的帧丢弃周期加1,否则,将帧丢弃周期设定为帧丢弃周期上限值;

49、若当前时刻的码率预算值小于等于码率预算下限值,则目标视频在当前时刻的编码状态为预算亏空状态,判断第n-1个时刻的帧丢弃周期是否大于帧丢弃周期下限值,若是,则将帧丢弃周期设定为第n-1个时刻的帧丢弃周期减1,否则,将帧丢弃周期设定为帧丢弃周期下限值。

50、可选的,基于目标视频在第n-1个时刻的编码状态、连续下降趋势系数、连续上升趋势系数、当前码率预算值获取当前时刻的帧丢弃周期,还包括:

51、当目标视频在第n-1个时刻的编码状态为预算上升状态时,若当前时刻的码率预算值小于码率预算上限值,则目标视频在当前时刻的编码状态为预算上升状态,判断第n-1个时刻的帧丢弃周期是否小于帧丢弃周期上限值,若是,则将帧丢弃周期设定为第n-1个时刻的帧丢弃周期加1,否则,将帧丢弃周期设定为帧丢弃周期上限值;

52、若当前时刻的码率预算值大于等于码率预算上限值,则目标视频在当前时刻的编码状态为预算充足状态,帧丢弃周期为0;

53、若当前时刻的连续下降趋势系数大于等于下降系数阈值,则目标视频在当前时刻的编码状态为预算下降状态,将连续下降趋势系数设定为0,帧丢弃周期为第n-1个时刻的帧丢弃周期。

54、可选的,基于目标视频在第n-1个时刻的编码状态、连续下降趋势系数、连续上升趋势系数、当前码率预算值获取当前时刻的帧丢弃周期,还包括:

55、当目标视频在第n-1个时刻的编码状态为预算亏空状态时,若当前时刻的连续上升趋势系数小于上升系数阈值,则目标视频在当前时刻的编码状态为预算亏空状态,判断第n-1个时刻的帧丢弃周期是否大于帧丢弃周期下限值,若是,则将帧丢弃周期设定为第n-1个时刻的帧丢弃周期减1,否则,将帧丢弃周期设定为帧丢弃周期下限值;

56、若当前时刻的连续上升趋势系数大于等于上升系数阈值,则目标视频在当前时刻的编码状态为预算上升状态,判断第n-1个时刻的帧丢弃周期是否小于帧丢弃周期上限值,若是,则将帧丢弃周期设定为第n-1个时刻的帧丢弃周期加1,否则,将帧丢弃周期设定为帧丢弃周期上限值。

57、第二方面,本技术实施例提供了一种视频编码装置,包括:

58、第一获取模块,获取目标视频的目标码率、在第n个时刻的前n-1个时刻的编码帧数量和码率预算值、在第n个时刻的多个未编码帧、在第n-1个时刻的编码状态;第n个时刻为当前时刻,目标码率为目标视频的预设的编码码率,码率预算值为编码码率的最大值,码率预算值大于等于目标码率,编码状态用于描述目标视频的码率预算值的状态;

59、第一计算模块,根据目标码率、第n-1个时刻的码率预算值计算当前时刻的当前码率预算值;

60、第二计算模块,基于前n-1个时刻的编码帧数量和码率预算值、当前码率预算值和未编码帧的数量,计算当前时刻的当前码率预算趋势值以及第n-1个时刻的历史码率预算趋势值;

61、第二获取模块,根据当前码率预算趋势值和历史码率预算趋势值,获取在当前时刻码率预算值的连续下降趋势系数和连续上升趋势系数;连续下降趋势系数用于描述在当前时刻与第n-1个时刻之间码率预算值的降低状况,连续上升趋势系数用于描述在当前时刻与第n-1个时刻之间码率预算值的提升状况;

62、帧丢弃周期获取模块,基于目标视频在第n-1个时刻的编码状态、连续下降趋势系数、连续上升趋势系数、当前码率预算值获取当前时刻的帧丢弃周期;帧丢弃周期用于描述丢弃未编码帧的间隔;

63、编码模块,根据当前码率预算值和帧丢弃周期依次对当前时刻的所有未编码帧进行编码。

64、第三方面,本技术实施例提供了一种终端设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,该处理器执行上述计算机程序时实现上述的视频编码方法。

65、第四方面,本技术实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述的视频编码方法。

66、本技术的上述方案有如下的有益效果:

67、在本技术的实施例中,通过获取目标视频的目标码率、在第n个时刻的前n-1个时刻的编码帧数量和码率预算值、在第n个时刻的多个未编码帧、在第n-1个时刻的编码状态,然后根据目标码率、第n-1个时刻的码率预算值计算当前时刻的当前码率预算值,再基于前n-1个时刻的编码帧数量和码率预算值、当前码率预算值和未编码帧的数量,计算当前时刻的当前码率预算趋势值以及第n-1个时刻的历史码率预算趋势值,然后根据当前码率预算趋势值和历史码率预算趋势值,获取在当前时刻码率预算值的连续下降趋势系数和连续上升趋势系数,然后基于目标视频在第n-1个时刻的编码状态、连续下降趋势系数、连续上升趋势系数、当前码率预算值获取当前时刻的帧丢弃周期,最后根据当前码率预算值和帧丢弃周期依次对当前时刻的所有未编码帧进行编码。其中,基于目标码率计算码率预算值,考虑了目标视频的实际码率目标,使得码率预算值具有实际性,根据具有实际性的码率预算值进行后续的视频编码步骤,能够保证视频编码的准确性,同时,利用码率预算值进行视频编码,可以在满足目标码率的同时预留空余预算,便于对特殊的未编码帧进行特殊处理,提高视频编码的质量和稳定性,引入帧丢弃周期进行视频编码,使得当前时刻进行编码的未编码帧减少,降低编码的输出速度,避免出现编码过快导致输出堵塞的状况,降低延迟。

68、本技术的其它有益效果将在随后的具体实施方式部分予以详细说明。

本文地址:https://www.jishuxx.com/zhuanli/20241009/306244.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。