一种低配设备上的网页h265视频解码方法
技术领域
1.本发明涉及一种解码方法,更具体的说是涉及一种低配设备上的网页h265视频解码方法。
背景技术:2.常规播放h265视频的插件采用软解的方式进行,该方式需要消耗大量的cpu资源,如果渲染出视频全部帧,可能导致低配置的硬件设备无法正常工作。
3.因而现有技术中有专利号为2019108671134名称为视频解码方法、装置和计算机设备,其内通过确定待解码视频中的关键帧,然后确定待挑选帧和待解码帧,并采用不同的解码方式对待挑选帧和待解码帧进行解码,以此实现缓解视频解码计算压力这一效果,然而其本质上还是对于待解码视频的所有帧进行的渲染,因此虽然缓解了一定的解码压力,但是还是会存在低配置的硬件设备无法正常工作的问题。
技术实现要素:4.针对现有技术存在的不足,本发明的目的在于提供一种能够使得低配置的硬件设备能够正常工作的低配设备上的网页h265视频解码方法。
5.为实现上述目的,本发明提供了如下技术方案:一种低配设备上的网页h265视频解码方法,包括如下步骤:
6.步骤一,获取待解码视频,并在待解码视频中设置关键帧;
7.步骤二,计算解码延时时间;
8.步骤三,根据步骤二中获取的延时时间判断解码是否及时,并在解码不及时的时候,丢弃不重要的帧,只渲染关键帧。
9.作为本发明的进一步改进,所述步骤一中设置关键帧的具体步骤如下:
10.步骤一一,获取websocket推流数据,并遍历数据,获取各个帧的值;
11.步骤一二,判断各个帧的值是否处于大于16小于32的范围内,若不处于范围内,则不做任何处理,若处于范围内,则将该帧设置为关键帧。
12.作为本发明的进一步改进,所述步骤二中计算解码延时时间的具体步骤如下:步骤二一,输入当前帧时间戳;
13.步骤二二,判断输入当前帧时间戳是否为空,若为空则延时时间等于-1,之后返回该延时时间后结束,若未为空,则继续下一步;
14.步骤二三,判断首帧的时间戳是否为空,若为空则延时时间等于当前时间戳减去开始时间戳减去当前输入帧的时间戳再加上首帧的时间戳,之后返回该延时时间后结束,若未为空,则继续下一步;
15.步骤二四,将输入帧的时间戳赋值给首帧的时间戳,将当前时间戳赋值给开始时间戳,延时时间等于-1,返回该延时时间后结束。
16.作为本发明的进一步改进,所述步骤三中解码丢帧的具体步骤如下:
17.步骤三一,获取经过解码处理的视频流数组;
18.步骤三二,判断视频流数组长度是否大于0,若未大于0,则返回上述步骤重新获取经过解码处理的视频流数组,若大于0则继续下一步;
19.步骤三三,判断丢帧标识是否为是,若为是则进入关键帧判断流程后返回步骤三二,若丢帧标识为否则进入渲染步骤后返回步骤三二。
20.作为本发明的进一步改进,所述关键帧判断流程具体步骤如下:
21.步骤三三一,遍历视频流数组,判断其内各个帧是否为关键帧,若不为关键帧则丢弃该帧,若为关键帧则解码该关键帧,同时将丢帧标识置为否;
22.步骤三三二,延时10毫秒后继续执行返回至步骤三二。
23.作为本发明的进一步改进,所述渲染步骤具体如下:
24.步骤1,判断延时时间是否大于缓存时间,若不大于缓存时间,则遍历视频流数组逐帧解码后重新判断延时时间是否大于缓存时间,若大于缓存时间则继续下一步;
25.步骤2,重置延时时间,同时将丢帧表示置为是,延时10毫秒后继续执行返回至步骤三二。
26.本发明的有益效果,通过步骤一的设置,便可有效的设置出关键帧,然后通过步骤二和步骤三的设置,便可通过延时时间来判断解码是否及时,并在解码不及时的时候丢弃不重要的帧,如此很好的实现了低配置的硬件设备能够正常工作的效果。
附图说明
27.图1为设置关键帧的流程图;
28.图2为计算解码延时的流程图;
29.图3为解码丢帧的流程图。
具体实施方式
30.下面将结合附图所给出的实施例对本发明做进一步的详述。
31.参照图1所示,本实施例的一种低配设备上的网页h265视频解码方法,包括如下步骤:
32.步骤一,获取待解码视频,并在待解码视频中设置关键帧;
33.步骤二,计算解码延时时间;
34.步骤三,根据步骤二中获取的延时时间判断解码是否及时,并在解码不及时的时候,丢弃不重要的帧,只渲染关键帧,通过上述三个步骤的设置,便可有效的在解码不及时的时候,丢弃不重要的帧,相比于现有技术中采用全部渲染的方式,很好的实现了低配置的硬件设备能够正常工作的效果。
35.作为改进的一种具体实施方式,所述步骤一中设置关键帧的具体步骤如下:
36.步骤一一,获取websocket推流数据,并遍历数据,获取各个帧的值;
37.步骤一二,判断各个帧的值是否处于大于16小于32的范围内,若不处于范围内,则不做任何处理,若处于范围内,则将该帧设置为关键帧,通过上述步骤的设置,便可利用值的计算有效的判断该帧是否为关键帧,整体设置过程简单快速,其中,websocket推流数据经代码解析出来是一个数组的形式,每个数组项就是每一帧的值。
38.作为改进的一种具体实施方式,所述步骤二中计算解码延时时间的具体步骤如下:
39.步骤二一,输入当前帧时间戳;
40.步骤二二,判断输入当前帧时间戳是否为空,若为空则延时时间等于-1,之后返回该延时时间后结束,若未为空,则继续下一步;
41.步骤二三,判断首帧的时间戳是否为空,若为空则延时时间等于当前时间戳减去开始时间戳减去当前输入帧的时间戳再加上首帧的时间戳,之后返回该延时时间后结束,若未为空,则继续下一步;
42.步骤二四,将输入帧的时间戳赋值给首帧的时间戳,将当前时间戳赋值给开始时间戳,延时时间等于-1,返回该延时时间后结束,通过上述步骤的设置,便可以及当前帧时间戳和首帧的时间戳的情况来对延时时间进行有效的计算,延时时间是指一帧数据从浏览器接收到该数据到这帧数据开始被渲染的中间时间。计算出延时时间就可以判断当前设备能不能及时的处理所有的数据帧,如果延时时间大于自己设定的值的话(设定时间默认为一秒钟),就判断为当前设备不能及时处理所有的数据帧,从而开始进入丢帧的流程。如果都能在设定时间内处理完,就不对数据帧做任何处理。
43.作为改进的一种具体实施方式,所述步骤三中解码丢帧的具体步骤如下:
44.步骤三一,获取经过解码处理的视频流数组;
45.步骤三二,判断视频流数组长度是否大于0,若未大于0,则返回上述步骤重新获取经过解码处理的视频流数组,若大于0则继续下一步;
46.步骤三三,判断丢帧标识是否为是,若为是则进入关键帧判断流程后返回步骤三二,若丢帧标识为否则进入渲染步骤后返回步骤三二,通过上述三个步骤的设置,便可简单有效的完成解码丢帧流程。
47.作为改进的一种具体实施方式,所述关键帧判断流程具体步骤如下:
48.步骤三三一,遍历视频流数组,判断其内各个帧是否为关键帧,若不为关键帧则丢弃该帧,若为关键帧则解码该关键帧,同时将丢帧标识置为否;
49.步骤三三二,延时10毫秒后继续执行返回至步骤三二,通过上述步骤的设置,便可有效的判断出是否为关键帧,同时将不重要的帧有效的进行丢弃。
50.作为改进的一种具体实施方式,所述渲染步骤具体如下:
51.步骤1,判断延时时间是否大于缓存时间,若不大于缓存时间,则遍历视频流数组逐帧解码后重新判断延时时间是否大于缓存时间,若大于缓存时间则继续下一步;
52.步骤2,重置延时时间,同时将丢帧表示置为是,延时10毫秒后继续执行返回至步骤三二,通过上述方式便可利用延时时间来判断是否能够实现及时解码,同时在不能够及时解码的情况下将帧置为丢弃帧然后进行关键帧的判断,并在判断为不重要的帧的时候进行丢弃了。
53.综上所述,本实施例的解码方法,采用了在解码不及时的时候,丢弃不重要的帧,只渲染关键帧的方式,很好的实现了低配置的硬件设备能够正常工作的效果。
54.以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也
应视为本发明的保护范围。