无GPU无核显用gstreamer实现推流视频的硬件加速视频压缩和转码 | gstreamer插件选择&一边查一边猜的测试过程出现问题和解决

4 篇文章 0 订阅
4 篇文章 0 订阅

背景提要

安全堡垒机中需要保存大量录屏视频,包括操作员的视频操作指导、报错前的故障内容等,由于视频数量多、体积大,而项目需要长时间保存这些视频,这耗尽了存储资源,影响了系统功能的执行。因此考虑对推流视频进行压缩,在保证视频质量的前提下,压缩视频所需的占用空间。此外,经过测试发现ffmpeg视频压缩需要花费大量时间,所以还需实现对视频压缩过程进行加速

一边猜一边查的测试过程

列出插件信息:

gst-inspect-1.0 --plugin

关于gstreamer的硬件加速:它的CPU是有加速IP核的,而我们项目中厂站使用的CPU是i.MX 8MP,查看Gstreamer参考文档找到可以做硬件加速的相关插件

关于视频压缩的编解码:

查看vpu相关的插件(查找和硬件加速相关的插件):

gst-inspect-1.0 | grep vpu

可执行的加速编解码指令:

gst-launch-1.0 -e filesrc location=/home/kuangan/Videos/vod/5ERBMYNW3D-10.200.255.153-2023-06-02-14:13:04.flv ! flvdemux ! vpudec ! vpuenc_h264 ! mp4mux ! filesink location=/home/kuangan/Videos/vod/5ERBMYNW3D-.mp4

根据GPT的建议,视频压缩指令使用Hantro VPU IP进行硬件加速测试:

gst-launch-1.0 filesrc location=/home/kuangan/Videos/vod/5ERBMYNW3D-.mp4

 ! decodebin ! videoconvert ! vpuenc codec=std_avc ! mp4mux ! filesink location=/home/kuangan/Videos/vod/5ERBMYNW3D-comp.mp4

视频压缩测试:

gst-launch-1.0 filesrc location=/home/kuangan/Videos/vod/5ERBMYNW3D-.mp4 ! decodebin ! videoconvert ! x264enc pass=qual quantizer=20 tune=zerolatency ! mp4mux ! filesink location=/home/kuangan/Videos/vod/5ERBMYNW3D-comp.mp4

修改指令后执行:

虽然成功操作了转码指令,但是视频大小为1,内容看不了

可能是指令插件之间的连接存在问题,没有转码成功:

gst-launch-1.0 -e filesrc location=/home/kuangan/Videos/vod/5ERBMYNW3D-10.200.255.153-2023-06-02-14:13:04.flv ! flvdemux name=demux demux.video ! queue ! h264parse ! mp4mux ! filesink location=/home/kuangan/Videos/vod/5ERBMYNW3D-.mp4

上述指令可以正常执行:

gst-launch-1.0 -e filesrc location=/home/kuangan/Videos/vod/8VHBGKXTLR-10.200.255.132-2023-07-04-14:15:48.flv ! flvdemux name=demux demux.video ! queue ! h264parse ! vpudec ! vpuenc_h264 !  mp4mux ! filesink

location=/home/kuangan/Videos/vod/00002.mp4

一旦添加了 ! vpudec ! vpuenc_h264 !就格式不可用

可能是参数格式写错了

换一下调用硬件加速模块书写的位置尝试

MP4文件成功出来了,而且也可以播放

但换了个位置放硬件加速编解码插件,速度反而慢了
需要多做几组尝试,也许是因为文件太小看不出来,也许是编解码插件需要替换部分插件

对比测试1

gst-launch-1.0 -e filesrc location=/home/kuangan/Videos/vod/PPZEZYJ2XZ-10.200.255.153-2023-06-01-16:31:54.flv ! flvdemux name=demux demux.video  ! vpudec ! vpuenc_h264 ! queue ! h264parse  !  mp4mux ! filesink location=/home/kuangan/Videos/vod/00003.mp4

内容都是2min,可播放,但用硬件加速后MP4size似乎变小了

gst-launch-1.0 -e filesrc location=/home/kuangan/Videos/vod/PPZEZYJ2XZ-10.200.255.153-2023-06-01-16:31:54.flv ! flvdemux name=demux demux.video ! queue ! h264parse  !  mp4mux ! filesink location=/home/kuangan/Videos/vod/00003.mp4

没有使用硬件加速模块,速度很快,size不变,内容可看也是2min

对比测试2

gst-launch-1.0 -e filesrc location=/home/kuangan/Videos/vod/NPQSBZZFMK-10.200.255.132-2023-07-04-14:11:22.flv ! flvdemux name=demux demux.video ! queue ! h264parse  !  mp4mux ! filesink location=/home/kuangan/Videos/vod/00004.mp4

使用硬件加速后,时间用得更多,但是size变小了一点,内容可播放

gst-launch-1.0 -e filesrc location=/home/kuangan/Videos/vod/NPQSBZZFMK-10.200.255.132-2023-07-04-14:11:22.flv ! flvdemux name=demux demux.video ! vpudec ! vpuenc_h264 ! queue ! h264parse  !  mp4mux ! filesink location=/home/kuangan/Videos/vod/00004.mp4

问GPT关于执行执行的效果↓

以上过程使用了gstreamer的硬件加速编解码插件进行视频压缩转码的测试,但还没对影响视频质量压缩效率的参数进行调参测试,接下来测试不同参数对压缩效果的影响,筛选出最合适的方案。

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值