一种基于多解码器动态融合的视频播放优化方法技术

技术编号:38426642 阅读:12 留言:0更新日期:2023-08-07 11:23
本发明专利技术公开了一种基于多解码器动态融合的视频播放优化方法,建立了视频特征与解码器的映射关系,在视频文件播放时能够根据视频特征自动选择解码错误率低或解码效率更高的解码器,同时,通过主从解码器的设置及多解码器的动态融合,当出现解码错误时能够动态切换至从解码器或其他解码器,进而实现了视频解码的动态容错和动态择优,显著提升了视频播放的容错能力与播放体验。错能力与播放体验。

【技术实现步骤摘要】
一种基于多解码器动态融合的视频播放优化方法


[0001]本专利技术属于计算机应用开发
,具体涉及一种基于多解码器动态融合的视频播放优化方法。

技术介绍

[0002]目前流媒体等视频文件的编码格式非常多,不同的编码格式往往需要适配不同的解码器,此外,对于编码格式及编码码率等属性不同的视频文件不同解码器的解码正确率也不尽相同,因此,同一操作系统中往往需要安装多种解码器,以适应不同的视频文件。例如,安卓系统的MediaCodec解码框架后端可以使用多种执行实际解码操作的解码器,包括芯片厂商的解码器、安卓系统自带的软解码器、ffmpeg的硬解码器、ffmpeg的软解码器、VAAPI引擎、VDPAU库引擎等等。
[0003]现有操作系统中当应用程序启动时往往会确定默认的编解码器,例如,安卓系统的视频解码器是在应用初始化解码框架时确定的,并且当视频文件出现解码错误时无法切换到其他解码器,进而导致视频文件无法正确播放。

技术实现思路

[0004]有鉴于此,本专利技术提供了一种基于多解码器动态融合的视频播放优化方法,实现了基于多解码器动态融合的视频文件动态容错播放。
[0005]本专利技术提供的一种基于多解码器动态融合的视频播放优化方法,包括以下步骤:步骤1、获取操作系统当前可用的解码器,采用各解码器分别完成具有不同视频特征的视频文件的解码得到解码器的解码属性,建立视频特征与解码器的映射关系;所述视频特征包括视频文件的视频编码格式及I帧量化值;步骤2、在应用程序启动过程中记录解码框架的初始化参数,并为所有解码器创建实例后采用初始化参数完成各实例的初始化;步骤3、当应用程序读取待播放视频文件时,计算待播放视频文件的第一视频特征,若映射关系中存在与第一视频特征相匹配的目标解码器,则从目标解码器中选取两个解码器分别作为主解码器和从解码器,若不存在则随机选取两个解码器分别作为主解码器和从解码器;并为主解码器和从解码器添加已使用标签;步骤4、当应用程序解码视频帧时,主解码器执行标准解码流程解码当前视频帧,若主解码器产生解码错误则执行步骤6,否则执行步骤7;同时,在当前视频帧为I帧时从解码器执行标准解码流程解码当前视频帧,若从解码器产生解码错误则执行步骤5,否则执行步骤7;步骤5、从目标解码器中选择没有已使用标签的解码器作为新的从解码器,并为新的从解码器添加已使用标签,执行步骤7;若目标解码器中不存在没有已使用标签的解码器则将从解码器设置为空,执行步骤7;步骤6、若从解码器为空则从目标解码器中重新选择解码器作为新的主解码器,如
果新的主解码器与当前主解码器相同则忽略当前视频帧并读取下一个视频帧,记录主解码器的错误帧数、已解码帧数和解码总时间再执行步骤4,如果新的主解码器与当前主解码器不同则加载新的主解码器读取下一个I帧视频帧,记录主解码器的错误帧数、已解码帧数和解码总时间执行步骤4;若从解码器不为空,则将从解码器变更为主解码器,再从目标解码器中选择没有已使用标签的解码器作为新的从解码器,并为新的从解码器添加已使用标签,若目标解码器中不存在没有已使用标签的解码器则将从解码器设置为空,记录主解码器的错误帧数、已解码帧数和解码总时间执行步骤4;步骤7、播放解码后的视频帧,若待播放视频文件未播放完毕则执行步骤4,否则根据记录错误帧数、已解码帧数和解码总时间计算解码属性,并采用解码属性更新映射关系,结束本流程。
[0006]进一步地,所述步骤1中所述I帧量化值的计算方式为:若I帧的间隔为固定间隔,则I帧量化值为视频文件前N个I帧量化值的平均值;若I帧的间隔为自动间隔,则I帧量化值为视频文件前N个I帧的码流阈值与宏块SAD值的平均值。
[0007]进一步地,所述视频特征的比较方式为:当视频编码格式相同且I帧量化值之间的偏差小于设定阈值时,则认为两个视频特征相同。
[0008]进一步地,所述偏差的计算方式为:两个I帧量化值之差的绝对值与较大的I帧量化值的比值。
[0009]进一步地,所述解码属性包括:错误帧率及平均解码时间,其中,错误帧率是指错误帧数与已解码帧数的比值。
[0010]进一步地,所述步骤3中所述计算待播放视频文件的第一视频特征的方式为:获取待播放视频文件的视频编码格式,并预先读取若干I帧计算待播放视频文件的I帧量化值。
[0011]进一步地,所述步骤3中所述从目标解码器中选取两个解码器分别作为主解码器和从解码器的方式为:优先选择具有最小错误帧率的解码器,若存在多个具有相同错误帧率的解码器则优先从中选择具有最短平均解码时间的解码器。
[0012]进一步地,所述步骤3中所述随机选取两个解码器分别作为主解码器和从解码器的方式为:按硬解码器优先的原则进行选取。
[0013]有益效果
[0014]本专利技术建立了视频特征与解码器的映射关系,在视频文件播放时能够根据视频特征自动选择解码错误率低或解码效率更高的解码器,同时,通过主从解码器的设置及多解码器的动态融合,当出现解码错误时能够动态切换至从解码器或其他解码器,进而实现了视频解码的动态容错和动态择优,显著提升了视频播放的容错能力与播放体验。
具体实施方式
[0015]下面列举实施例,对本专利技术进行详细描述。
[0016]本专利技术提供了一种基于多解码器动态融合的视频播放优化方法,其核心思想是:基于操作系统中已安装的解码器,建立视频特征与解码器的映射关系,当应用程序初始化解码框架时为各解码器创建实例,并根据待播放视频文件的视频特征及映射关系确定主从解码器,并通过主从解码器的切换等方式动态处理解码错误,以实现视频文件的容错播放。
[0017]本专利技术提供的一种基于多解码器动态融合的视频播放优化方法,具体包括以下步
骤:步骤1、获取操作系统当前可用的所有解码器,采用各解码器分别完成具有不同视频特征的视频文件的解码得到各解码器的解码属性,建立视频特征与解码器的映射关系。
[0018]其中,视频特征包括视频文件的视频编码格式及I帧量化值。对于I帧的间隔为固定间隔的视频文件,则其I帧量化值为视频文件前N个I帧量化值的平均值;对于I帧的间隔为自动间隔的视频文件,则其I帧量化值为视频文件前N个I帧的码流阈值与宏块SAD值的平均值。N的取值根据实际情况确定。
[0019]本专利技术中视频特征的比较方式为:当视频编码格式相同,且I帧量化值之间的偏差小于设定阈值,则认为两个视频特征相同。偏差的计算方式可为两个I帧量化值之差的绝对值与较大的I帧量化值的比值。
[0020]编码器的解码属性包括错误帧率及平均解码时间,其中,错误帧率是指错误帧数与已解码帧数的比值。本专利技术中采用错误帧率而不是错误帧数表示解码属性,能够更准确的反应解码器的解码性能,规避了可能产生的某个解码器解码完少量数据帧就出错而导致的虽然错误帧数少但解码正确率较低的情况。
[0021]获取操作系统当前可用的所有解码器的方式,可采用安卓系统的MediaCodec遍历或Linux系统的包管理器遍历视频解码库,遍历当前操作系统多媒体框架支持的所本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于多解码器动态融合的视频播放优化方法,其特征在于,包括以下步骤:步骤1、获取操作系统当前可用的解码器,采用各解码器分别完成具有不同视频特征的视频文件的解码得到解码器的解码属性,建立视频特征与解码器的映射关系;所述视频特征包括视频文件的视频编码格式及I帧量化值;步骤2、在应用程序启动过程中记录解码框架的初始化参数,并为所有解码器创建实例后采用初始化参数完成各实例的初始化;步骤3、当应用程序读取待播放视频文件时,计算待播放视频文件的第一视频特征,若映射关系中存在与第一视频特征相匹配的目标解码器,则从目标解码器中选取两个解码器分别作为主解码器和从解码器,若不存在则随机选取两个解码器分别作为主解码器和从解码器;并为主解码器和从解码器添加已使用标签;步骤4、当应用程序解码视频帧时,主解码器执行标准解码流程解码当前视频帧,若主解码器产生解码错误则执行步骤6,否则执行步骤7;同时,在当前视频帧为I帧时从解码器执行标准解码流程解码当前视频帧,若从解码器产生解码错误则执行步骤5,否则执行步骤7;步骤5、从目标解码器中选择没有已使用标签的解码器作为新的从解码器,并为新的从解码器添加已使用标签,执行步骤7;若目标解码器中不存在没有已使用标签的解码器则将从解码器设置为空,执行步骤7;步骤6、若从解码器为空则从目标解码器中重新选择解码器作为新的主解码器,如果新的主解码器与当前主解码器相同则忽略当前视频帧并读取下一个视频帧,记录主解码器的错误帧数、已解码帧数和解码总时间再执行步骤4,如果新的主解码器与当前主解码器不同则加载新的主解码器读取下一个I帧视频帧,记录主解码器的错误帧数、已解码帧数和解码总时间执行步骤4;若从解码器不为空,则将从解码器变更为主解码器,再从目标解码器中选择没有已使用标签的解码器作为新的从解码器,并为新的从解码器添加已使用标签,若目标解码器中不存在...

【专利技术属性】
技术研发人员:温研刘东
申请(专利权)人:北京麟卓信息科技有限公司
类型:发明
国别省市:

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

1