System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于webassembly的浏览器音视频播放方法技术_技高网

一种基于webassembly的浏览器音视频播放方法技术

技术编号:40559128 阅读:6 留言:0更新日期:2024-03-05 19:21
本发明专利技术提供了一种基于webassembly的浏览器音视频播放方法,以GOP为单位进行数据解码并在音视频播放过程中基于解码延迟梯度的算法实时评估当前解码器的解码能力,根据评估结果,通过选择不同的调整策略调整所述解码器的解码能力。本发明专利技术通过动态调整解码能力需求和解码线程数量之间的关系,在视频解码能力需求较少时,自动减少解码线程数量,释放CPU资源,减少CPU资源的浪费;在视频解码能力需求较大时,自动增加解码线程数量,以满足解码需求,实现高清视频可以在不同配置机器的浏览器上流畅播放的目的;当解码能力达到峰值时,采用丢帧策略,从而缓解解码器的解码压力,保证视频播放的实时性。

【技术实现步骤摘要】

本专利技术涉及音视频流解码播放,尤其是一种基于webassembly的浏览器音视频播放方法


技术介绍

1、随着视频播放应用的快速发展,人们对于视频播放的流畅度有了更高的要求,大量的视频网站也提供了对应的web播放器用于浏览器端的视频播放,但是如何提升对web端视频的解码能力以实现视频的流畅播放,成为业内亟待解决的技术难题,尤其是对于web端h.265格式的高清视频的解码能力的提升。

2、申请公布号为cn 112291628 a的专利文件中公开了以gop为单位将视频帧分配到不同的线程上并行解码,其中解码线程数和cpu核数一致,采用该技术方案,在单位时间内,多核cpu上能解码的帧数会变多,可以在一定范围内提高对视频的解码能力,但该方案存在以下不足:由于视频的分辨率、帧率、图像的复杂度以及机器的性能都会影响解码能力,如果使用和cpu核数一致的解码线程数量对视频进行并行解码,对于解码能力需求较小的视频,也需要对解码后的视频帧进行排序,会导致视频播放延迟较大,对于cpu资源也造成了一定的浪费;对于解码能力需求较大的视频,当解码线程的最大解码能力仍然不能满足需求时,视频播放仍会有延迟累积,卡顿等问题,如果当前机器性能较差,cpu核数较少,那么和cpu核数一致的解码线程数量也无法满足当前解码能力需求,同样会造成视频播放延迟、卡顿,影响用户体验。鉴于此,提出本申请。


技术实现思路

1、本专利技术主要目的在于解决上述问题和不足,提供一种基于webassembly的浏览器音视频播放方法,在音视频播放过程中实时评估当前解码器的解码能力,选择不同的调整策略,以实现解码能力需求和解码线程数量之间自适应的目的。

2、一种基于webassembly的浏览器音视频播放方法,所述方法包括,

3、s1、获取待播放的音视频流,解封装得到所述音视频流中有效音视频数据;

4、s2、启动解码线程,调用解码器对所述有效音视频数据进行解码;

5、s3、启动渲染线程播放解码后的音视频;

6、s4、实时评估当前解码器的解码能力,根据评估结果选择不同的调整策略调整所述解码器的解码能力。

7、进一步的,所述步骤s4中,所述实时评估当前解码器的解码能力为基于解码延时梯度算法计算预设时间段内的平均解码延迟梯度,通过所述平均解码延迟梯度的数值范围评估解码器的解码能力;所述调整策略包括调整解码线程数量或者保持当前解码线程数量或者丢帧策略。

8、进一步的,所述步骤s4中所述实时评估当前解码器的解码能力过程为:

9、s41、计算所述有效音视频数据中相邻两个视频帧之间的解码延迟梯度dm(i),所述解码延迟梯度dm(i)定义为解码相邻两个视频帧解码完成时间的时间间隔减去其解码时间戳dts的时间间隔所得到的变化量;

10、s42、计算预设时间段内所述有效音视频数据中所有相邻两个视频帧之间的解码延迟梯度dm(i)的平均值,得到平均解码延迟梯度△dm(j),通过平均解码延迟梯度△dm(j)评估当前解码器的解码能力;

11、s43、当△dm(j)>0,则当前解码器的解码能力不足,通过增加解码线程数量提高当前解码器的解码能力;

12、s44、当△dm(j)<0,则当前解码器的解码能力满足播放需求,则不对解码线程数量进行调整,和/或减少解码线程数量,以释放cpu资源。

13、进一步的,所述解码延迟梯度dm(i)的计算公式为:

14、dm(i)=[(ti–ti-1)–(dtsi–dtsi-1)]/(dtsi–dtsi-1);

15、式中,

16、i≥2;

17、dtsi:第i个视频帧解码时间戳;

18、dtsi-1:第i-1个视频帧解码时间戳;

19、ti:第i个视频解码完成时间;

20、ti-1:第i-1个视频解码完成时间。

21、进一步的,在所述步骤s43通过增加解码线程数量提高当前解码器的解码能力时还包括对音视频播放速率的调整,过程为,首先计算音视频播放速率playrate,然后计算以playrate播放音视频数据的播放时间t,计算公式为:playrate=1/(1+增加线程数量),t=(1+增加线程数量)×gop长度。

22、进一步的,在所述步骤s43通过增加解码线程数量提高当前解码器的解码能力后增加一个步骤,计算解码能力调整后下一个预设时间段内的平均解码延迟梯度△dm(j+1)并与所述△dm(j)进行比较,当|△dm(j+1)–△dm(j)|<0.05时,则当前解码器的解码能力达到峰值,采用丢帧策略,以保证音视频播放的实时性。

23、进一步的,所述解码线程最大数量为cpu的核数。

24、进一步的,所述步骤s1包括,

25、s11、启动拉流线程,获取待播放的音视频流,调用解封装模块对获得的所述音视频流进行解封装;

26、s12、判断所述音视频流是否是flv格式音视频流,以及是否包含音视频数据;

27、s13、根据flv格式识别出所述flv格式音视频流对应的数据封包中的flvtag;

28、s14、以flv tag为单位进行数据解析,提取出所述flv格式音视频流对应的有效音视频数据。

29、进一步的,所述步骤s1中还包括基于webassembly对解码器编译,生成wasm解码模块供浏览器调用,所述wasm解码模块为使用emscripten编译工具对c/c++语言编写的解码库进行编译所得。

30、进一步的,所述步骤s2中调用解码器对所述有效音视频数据进行解码过程包括,

31、s21、调用步骤s1中所述的有效音视频数据对所述解码线程进行初始化;

32、s22、主线程将步骤s1中解封装后的音视频数据以gop为单位分配到所述解码线程中,将所述音视频数据解码成原始音视频数据;

33、s23、所述解码线程将所述原始音视频数据回调给javascript模块并缓存到原始数据队列等待渲染播放。

34、综上所述,本专利技术提供的一种基于webassembly的浏览器音视频播放方法,与现有技术相比,具有以下优点:

35、(1)在浏览器音视频播放过程中基于解码延迟梯度的算法实时评估当前解码器的解码能力,选择不同的调整策略调整解码器的解码能力,动态调整解码能力需求和解码线程数量之间的关系,在视频解码能力需求较少时,自动减少解码线程数量,释放cpu资源,减少cpu资源的浪费;

36、(2)通过以gop为单位进行数据解码以及动态调整解码器的解码能力和解码线程数量之间的关系,实现解码器解码能力的大幅提升,尤其是对于h.265编码格式视频的解码能力,可以达到在不同配置机器的浏览器上实现流畅播放的目的,包括在一些性能稍差的机器,大大的提升了用户体验;

37、(3)在增加解码线程数本文档来自技高网...

【技术保护点】

1.一种基于webassembly的浏览器音视频播放方法,其特征在于:所述方法包括,

2.如权利要求1所述的一种基于webassembly的浏览器音视频播放方法,其特征在于:所述步骤S4中,所述实时评估当前解码器的解码能力为基于解码延时梯度算法计算预设时间段内的平均解码延迟梯度,通过所述平均解码延迟梯度的数值范围评估解码器的解码能力;所述调整策略包括调整解码线程数量或者保持当前解码线程数量或者丢帧策略。

3.如权利要求2所述的一种基于webassembly的浏览器音视频播放方法,其特征在于:所述步骤S4中所述实时评估当前解码器的解码能力过程为:

4.如权利要求3所述的一种基于webassembly的浏览器音视频播放方法,其特征在于:所述解码延迟梯度Dm(i)的计算公式为:

5.如权利要求3所述的一种基于webassembly的浏览器音视频播放方法,其特征在于:在所述步骤S43通过增加解码线程数量提高当前解码器的解码能力时还包括对音视频播放速率的调整,过程为,首先计算音视频播放速率PlayRate,然后计算以PlayRate播放音视频数据的播放时间T,计算公式为:PlayRate=1/(1+增加线程数量),T=(1+增加线程数量)×GOP长度。

6.如权利要求3所述的一种基于webassembly的浏览器音视频播放方法,其特征在于:在所述步骤S43通过增加解码线程数量提高当前解码器的解码能力后增加一个步骤,计算解码能力调整后下一个预设时间段内的平均解码延迟梯度△Dm(j+1)并与所述△Dm(j)进行比较,当|△Dm(j+1)–△Dm(j)|<0.05时,则当前解码器的解码能力达到峰值,采用丢帧策略,以保证音视频播放的实时性。

7.如权利要求3所述的一种基于webassembly的浏览器音视频播放方法,其特征在于:所述解码线程最大数量为CPU的核数。

8.如权利要求1所述的一种基于webassembly的浏览器音视频播放方法,其特征在于:所述步骤S1包括,

9.如权利要求1所述的一种基于webassembly的浏览器音视频播放方法,其特征在于:所述步骤S1中还包括基于Webassembly对解码器编译,生成wasm解码模块供浏览器调用,所述wasm解码模块为使用Emscripten编译工具对C/C++语言编写的解码库进行编译所得。

10.如权利要求1所述的一种基于webassembly的浏览器音视频播放方法,其特征在于:所述步骤S2中调用解码器对所述有效音视频数据进行解码过程包括,

...

【技术特征摘要】

1.一种基于webassembly的浏览器音视频播放方法,其特征在于:所述方法包括,

2.如权利要求1所述的一种基于webassembly的浏览器音视频播放方法,其特征在于:所述步骤s4中,所述实时评估当前解码器的解码能力为基于解码延时梯度算法计算预设时间段内的平均解码延迟梯度,通过所述平均解码延迟梯度的数值范围评估解码器的解码能力;所述调整策略包括调整解码线程数量或者保持当前解码线程数量或者丢帧策略。

3.如权利要求2所述的一种基于webassembly的浏览器音视频播放方法,其特征在于:所述步骤s4中所述实时评估当前解码器的解码能力过程为:

4.如权利要求3所述的一种基于webassembly的浏览器音视频播放方法,其特征在于:所述解码延迟梯度dm(i)的计算公式为:

5.如权利要求3所述的一种基于webassembly的浏览器音视频播放方法,其特征在于:在所述步骤s43通过增加解码线程数量提高当前解码器的解码能力时还包括对音视频播放速率的调整,过程为,首先计算音视频播放速率playrate,然后计算以playrate播放音视频数据的播放时间t,计算公式为:playrate=1/(1+增加线程数量),t=(1+增加线程数量)×gop长度。

...

【专利技术属性】
技术研发人员:陈斌王龙马国庆彭飞金岩孙云雷吕昌昌
申请(专利权)人:海纳云物联科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1