DVPP媒体数据处理视频编码问题案例

这篇具有很好参考价值的文章主要介绍了DVPP媒体数据处理视频编码问题案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

DVPP(Digital Vision Pre-Processing)是昇腾AI处理器内置的图像处理单元,通过AscendCL媒体数据处理接口提供强大的媒体处理硬加速能力,主要功能包括图像编解码、视频编解码、图像抠图缩放等。

本期就分享几个关于DVPP视频编码问题的典型案例,并给出原因分析及解决方法:

1. 参数设置不合理,导致视频编码耗时长或编码失败

2. 发送待编码帧成功,但视频编码无输出

3. 发送待编码帧失败

01 参数设置不合理,导致视频编码耗时长或编码失败

问题现象描述

视频编码耗时长或编码失败。运行编码应用进程后,使用dvpp的proc信息排查问题,步骤如下:登录运行编码应用进程的环境,在有读、写、执行权限的目录下执行msnpureport -a命令,导出proc日志信息。按导出时间,进入对应时间戳的目录下,打开“module_info\dev-os-0\dvpp\dvpp_proc.log”日志。proc信息中关键信息含义如下:EncStart表示启动编码的帧数,EndSuccessed表示成功编码的帧数,Lost和Disc(Disacrd)表示编码失败的帧数,Recode表示重编的次数。

1、日志中出现类似下面红框的信息:Lost和Disc的数量为0或很低,但是Recode的数量比较大,表示大部分帧能够编码成功,但是重编次数太多。

DVPP媒体数据处理视频编码问题案例

2、日志中出现类似下面红框的信息:Lost和Disc的数量比较大,同时Recode的数量也比较大,表示有比较多的帧编码失败了。

DVPP媒体数据处理视频编码问题案例

原因分析

视频编码耗时长或编码失败可能与编码缓冲区内存大小buf_size参数的设置有关,原理如下:当实际的编码结果大小大于编码缓冲区中的可用内存大小buf_size时,编码模块会自动调整参数重编,减小编码结果数据大小。如果重编次数全部用完,但是编码结果大小依然大于编码缓冲区中的可用内存大小,此时编码模块会将该帧丢弃。

因此buf_size设置的太小,缓冲帧数少,导致出现重编的概率高,进而导致编码时延增加,帧率变低,性能下降,甚至出现丢帧概率高的情况。

处理步骤

视频编码场景下,创建视频编码通道时,合理设置每个通道的buf_size参数,以节省内存使用开销,推荐将buf_size设置为:原图宽*原图高*3/2后再64对齐,且取值范围:[32*1024, 1*1024*1024*1024],以Byte为单位。否则可能出现以下异常情况:

  • 反复重编,进而导致编码时延变长、性能下降、图像质量下降;
  • 编码失败,获取不到编码结果。

02 发送待编码帧成功,但视频编码无输出

现象描述

创建视频编码通道后,发送帧成功,但调用hi_mpi_venc_get_stream接口获取编码后码流数据时,返回值为0xa008800e,获取不到编码后码流数据。

可能原因

发送帧成功,但获取编码后码流数据失败可能原因有以下:

  • 用户传入的输入图像内存不是使用dvpp内存申请接口hi_mpi_dvpp_malloc申请的。
  • 用户传入的输入图像内存大小和图像分辨率不匹配。

处理步骤

针对分析的可能原因,请参考以下方法处理:

  1. 查看日志是否有出现watch_dog相关的信息,如下图所示,若出现watch_dog信息,基本可以确认是内存使用存在问题。
    [Chnl]:chnl_watch_dog_timer_isr [Line]:1141 find VEDU_0  down,now reset it
    [Chnl]:chnl_watch_dog_blackbox [Line]:1097 vpu_id is 0, venc watchdog fail enter blackbx
  2. 排查应用代码中输入图像内存的申请方式,如果不是使用dvpp内存申请接口hi_mpi_dvpp_malloc申请的,视频编码时将无法正常访问该内存,导致编码无输出,需要修改为使用hi_mpi_dvpp_malloc申请输入图像内存。
  3. 排查应用代码中输入图像内存和分辨率是否匹配,比如YUV420SP NV12或NV21格式的YUV图像,一帧图像大小为宽*高*1.5,如果实际送给申请的输入图像内存大小比宽*高*1.5小的话,会产生访问越界等不可预期的行为,也会导致编码无输出。需要保证申请的内存大小和实际设置的分辨率参数匹配。

03 发送待编码帧失败 

现象描述

视频编码场景下,调用hi_mpi_venc_send_frame接口发送待编码帧,接口返回值非0值,表示发送帧失败。

可能原因

导致发送帧失败的可能原因有以下:

  • 用户传入的图像帧参数不在规定的合理范围内或设置了暂不支持的参数。
  • 用户送帧的频率太快,大于性能规格。

处理步骤

针对分析的可能原因,请参考以下方法处理:

1、如果返回值为0xa00880030xa0088008,则说明用户传入的图像帧参数不在规定的合理范围内或设置了暂不支持的参数。

具体是哪个参数传入有问题可以进一步查看日志信息,如下图所示,是传入的YUV格式不正确。

[Venc]:hevc_check_pixel_format [Line]:1110 H.265 don't support format 5,should be NV12(1) or NV21(2)

常见参数设置问题如下

(1)入参的结构体没有进行memset初始化,结构体的部分参数没有主动设置,导致这部分参数值是一些随机值;

(2)头文件不匹配,导致枚举类型传入和预期不符合; 

(3)参数支持范围不了解,各个参数的支持范围可查看hi_mpi_venc_send_frame接口的详细介绍。

2、如果返回值为0xa008800d,则说明视频编码的输入空闲队列已满,此时无法再继续往编码模块内部送入数据帧。

这种问题一般是由于送帧的频率太快,大于昇腾AI处理器的处理速度,导致输入队列堆积,视频编码的输入空闲队列长度为6帧,只要堆积到了6帧,再继续送帧就会报错。

这种情况,建议在应用代码中控制调用hi_mpi_venc_send_frame的时间间隔,比如编码帧率30fps,调用的间隔可以控制在33ms一帧。

04 更多介绍 

[1]昇腾文档中心

[2]昇腾社区在线课程

[3]昇腾论坛文章来源地址https://www.toymoban.com/news/detail-490926.html

到了这里,关于DVPP媒体数据处理视频编码问题案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 多媒体数据处理实验3:图像特征提取与检索

    1. 算法描述 功能:   使用BOF(Bag of Features)算法提取图像特征,在corel数据集(10*100)张图片上实现以图搜图,即输入数据集中某一张图,在剩下的999张图里搜索最邻近的10张图。 2.算法流程: 用 SIFT算法 提取图像的特征。每幅图像提取出几百至几千个特征点,将所有图像的特

    2024年02月07日
    浏览(49)
  • 大数据HCIE成神之路之数据预处理(6)——特征编码

    提问:什么是独热编码? 回答:独热编码是一种常用的数据编码方法,用于将分类变量转换为 二进制 的表示形式。它将每个类别表示为一个只包含 0和1 的二进制向量,其中每个类别对应一个维度,维度上的值为1表示该 样本属于该类别 ,为0表示 不属于该类别 。 对于离散

    2024年02月03日
    浏览(26)
  • Python 标准类库-因特网数据处理之Base64数据编码

    该模块提供将二进制数据编码为可打印ASCII字符并将这种编码解码回二进制数据的功能。它为RFC 3548中指定的编码提供编码和解码功能。定义了Base16、Base32和Base64算法,以及事实上的标准Ascii85和Base85编码。 RFC 3548 编码适用于对二进制数据进行编码,以便可以安全地通过电子邮

    2024年02月06日
    浏览(37)
  • 「专题速递」数据驱动赋能、赛事直播优化、RTC技术、低延时传输引擎、多媒体处理框架、GPU加速...

    点击文末阅读原文, 免费报名【抖音背后的体验增长实战揭秘】专场 随着全行业视频化的演进,营销、知识、商业和空间的交互体验正在被重塑。这种变化不仅仅是一种抽象的趋势,更是关系到用户留存和业务增长的关键因素。面对这样的挑战,一个关键的问题摆在我们面

    2024年02月06日
    浏览(37)
  • 音视频数据处理-H265/HEVC视频码流分析

    一、H265概述 H265/HEVC(Hight Efficiency Video Coding)是由ITU-T和ISO/IEC两大组织在H264/AVC的基础之上推出的新一代高效视频编码标准,主要为应对高清和超高清视频在网络传输和数据存储方面带来的挑战。上一篇文章对H264/AVC视频码流进行了详细的分析,本文继续从数据处理的角度对

    2024年02月11日
    浏览(35)
  • 如何基于香橙派AIpro对视频/图像数据进行预处理

    本文分享自华为云社区《如何基于香橙派AIpro对视频/图像数据进行预处理》,作者: 昇腾CANN。 受网络结构和训练方式等因素的影响,绝大多数神经网络模型对输入数据都有格式上的限制。在计算机视觉领域,这个限制大多体现在图像的尺寸、色域、归一化参数等。如果源图

    2024年04月22日
    浏览(37)
  • 基于深度学习的视频结构化:从信息提取到更高效的数据处理

    作者:禅与计算机程序设计艺术 1.1. 背景介绍 近年来,随着深度学习技术的发展,计算机视觉领域也取得了显著的进步。特别是,基于深度学习的图像处理算法在图像识别、语音识别等方面取得了突破性的进展。同时,视频结构化作为视频内容分发、存储和推荐的重要环节,

    2024年02月12日
    浏览(31)
  • C3D行为识别(一):UCF101视频数据集预处理

    基于视频的行为识别常见的数据库有UCF101、HMDB-51、Something-Something V2、AVA v2.2、Kinetic-700等。其中UCF101的标记方式是针对一段视频做一个类别的标记,AVA v2.2的标记共包含五个部分,video_id(视频名称)、middle_Frame_timestam(关键帧位置)、person_box(视频中人物的边界框)、acti

    2023年04月24日
    浏览(39)
  • python实现视频抽帧,文件批量操作,文件批量处理(数据集制作的工具箱)

    环境准备 数据集制作 文件批量重命名 文件批量移动 将文件批量按照一定格式进行重命名 修改xml文件内容的方法 Pathlib库的常用接口 在计算机视觉项目中,文件批量操作和文件批量预处理是必不可少的步骤。它们涉及处理大量的图像文件,包括读取、处理、保存和预处理。

    2024年02月09日
    浏览(35)
  • 怎么借助ChatGPT处理数据结构的问题

    目录 使用ChatGPT进行数据格式化转换 代码示例 ChatGPT格式化数据提示语 代码示例 批量格式化数据提示语 代码示例 ChatGPT生成的格式化批处理代码 使用ChatGPT合并不同数据源的数据 合并数据提示语 自动合并数据提示语 ChatGPT生成的自动合并代码 结论 数据合并是处理多个数据源

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包