一种自恢复的视频解码方法技术

技术编号:31161796 阅读:25 留言:0更新日期:2021-12-04 10:30
本发明专利技术一种自恢复的视频解码方法,首先,移植ffmpeg到海思平台,对ffmpeg进行源码修改使其适配海思芯片。其次,启动ffmpeg的动态库对网络传输的数据进行参数帧和图像帧的组合,获取完整图像信息,然后,建立过滤机制,动态筛选错误帧,分析编码规律,调整错误数据包内数据帧顺序,将可解码的数据包再传送给海思芯片的硬解码模块。最后,创建获取图像线程,从解码通道获取已解码的图像数据,启动自恢复脚本监控解码程序防止异常退出,从而完成解码任务。从而完成解码任务。从而完成解码任务。

【技术实现步骤摘要】
一种自恢复的视频解码方法


[0001]本专利技术属于linux系统下视频解码技术,特别是一种自恢复的视频解码方法。

技术介绍

[0002]Hi3559AV100是专业的8K Ultra HD Mobile Camera SOC,它提供了8K30/4K120广播级图像质量的数字视频录制,支持多路Sensor输入,支持H.265编码输出或影视级的RAW数据输出,并集成高性能ISP处理,同时采用先进低功耗工艺和低功耗架构设计,为用户提供了卓越的图像处理能力。Hi3559AV100支持业界领先的多路4K Sensor输入,多路ISP图像处理,支持HDR10高动态范围技术标准,并支持多路全景硬件拼接。在支持8K30/4K120视频录制下,Hi3559AV100提供硬化的6

Dof数字防抖,减少了对机械云台的依赖。
[0003]但是Hi3559AV100属于硬解码范畴,在协议帧不完全符合解码协议,或者错误帧比较多的情况下,解码效率比较低下或者不能解码,并且对于带有参数帧的图像信息,硬解码模块无法提取参数信息。另外,硬解码模块存在本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种自恢复的视频解码方法,其特征在于,包括如下步骤:1)配置ffmpeg的编译属性和参数,将ffmpeg动态库移植到海思平台;2)创建网络接收任务接收主机传送的原始压缩数据;3)创建获取数据包线程,使用ffmpeg动态库获取含有带有含参数帧的图像数据包;4)建立过滤机制,筛选错误帧,组合成可解码的数据包发送到芯片的硬解码模块;5)获取解码模块内的解码图像;6)启动自恢复脚本监控解码程序。2.根据权利要求1所述的一种自恢复的视频解码方法,其特征在于:步骤6)所述启动自恢复脚本监控解码程序的方法,具体为:61)在系统/etc/rcS/路径下设置自恢复脚本S09Decode;62)获取decode_video运行时的进程号;63)使用ps命令获取decode_video进程的运行状态;64)如果decode_video的运行状态为运行状态stillRunning,则延时5ms,并返回步骤62);如果decode_video为退出状态则执行下一步;65)在decode的初始化函数中添加退出解码通道,释放视频缓存块,释放系统资源;66)使用cd命令进入到decode_video所在目录,执行decode程序;67)返回到步骤62)。3.根据权利要求1所述的一种自恢复的视频解码方法,其特征在于:步骤1)所述将ffmpeg动态库到海思平台,具体为:11)首先,配置ffmpeg编译属性,根据平台类型、cpu类型、编码解码器属性、格式转换属性、交叉编译属性配置参数;12)修改acodec.h文件,增加变量:参数帧长度sei_len和数组sei_buf,同时,根据应用层需求确定其参数帧大小SEI_BUF_SIZE;13)在hevc_sei.c文件中的decode_nal_sei_prefix函数中添加获取参数帧功能:获取函数中的参数size,将size赋值给sei_len,判断size是否小于等于SEI_BUF_SIZE,如果满足条件则拷贝上下文参数数组gb内数据到sei_buf,拷贝的长度为size,拷贝的sei_buf的数组下标i为gb数组的索引index除以8,即sei_buf[i]=gb_buf[index/8];14)然后,执行configure命令,在配置文件夹的子文件夹lib下将生成的解码库libavcodec、libavformat、libavutil、libswscale;15)最后,将动态库拷贝到解码板卡的/usr/lib路径下。4.根据权利要求1所述的一种自恢复的视频解码方法,其特征在于:步骤2)所述接收主机传送的原始压缩图像,具体为:21)首先,获取配置文件中的接收ip和端口;22)然后,以接收ip地址和端口号为参数创建和绑定网络套接字,待创建成功后进行步骤23);23)其次,清零接收缓冲区,等待接收到网络发送的图像数据后,进入步骤24);24)判断本次接收的图像数据的长度是否大于零,如果大于零则进行下一步,否则回到步骤23);25)判断协议帧头是否符合协议要求,如不符合就丢弃该帧;如果符合则将图像帧存入
数据接收区。5.根据权利要求1所述的一种自恢复的视频解码方法,其特征在于:步骤3)所述创建获取数据包线程,具体为:321)获取从网络读取的图像数据数组首地址指针bufPtr和长度bufLen;322)判断当前的数据长度bufLen是否大于0,如果是则继续下一步,如果不是,则退出本次数据的解码过程,等待网络下次发送数据;323)传送数据数组首地址指针bufPtr和长度bufLen给软解码模块,使用库函数av_parser_parse2对数据按帧进行分割,如果从数组能成功获得一个完整的图像帧数据包则记录继续下一步,如果不是则退出本次解码过程,等待下次网络传送的图像数据数组;324)保存本次数据数组中图像帧分割的数据包长度ret,从数据数组总长度bufLen剔除本次分割的图像帧数据包长度ret,并向前移动首地址指针bufPtr,移动次数等于图像帧数据包长度ret;325)将本次分割的图像完整数据包放到待解码队列中。6.根据权利要求1所述的一种自恢复的视频解码方法,其特征在于:步骤4)所述建立过滤机制,筛选错误帧的方法,具体为:41)判断图像类型,分析不同类型需要的slice个数图像数据包中含P帧的个数,并记录在该通道的数据结构变量PSliceNumber;42)判断当前数据包大小是否大于协议帧规定的最大数,如果大于则退出本次数据包的过滤过程,待接收到新的图像数据包后返回步骤41),否则进行下一步;43)循环遍历本次数据包内的数据,依次判断当前帧是否符合h265协议帧头,如果符合则进行下一步,如果不符合则跳转到步骤49);44)判断当前帧是否为P帧或者I帧,如果是,则需要增加本通道本次传输的数据包内sllice个数temp_PSliceNumber,进入下一步;如果不是则跳转到步骤46);45)如果当前数据包的temp_PSliceNumber等于2,则再次判断p_slice是否为0,如...

【专利技术属性】
技术研发人员:高娟
申请(专利权)人:天津津航计算技术研究所
类型:发明
国别省市:

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

1