如何在GStreamer中使用nvargus摄像头采集4K分辨率PNG格式单帧图像
问题原因
报错的核心是nvarguscamerasrc输出的帧存储在英伟达专属的NVMM硬件显存空间,而CPU侧的pngenc编码器无法直接读取NVMM内存的数据,且pngenc默认不支持NV12格式输入,需要先做内存搬运和格式转换。
单帧采集PNG的调整后命令
gst-launch-1.0 nvarguscamerasrc sensor-id=0 num-buffers=1 ! "video/x-raw(memory:NVMM),format=NV12,width=3840,height=2160" ! nvvidconv ! "video/x-raw,format=RGB" ! pngenc ! filesink location=test1.png
新增的nvvidconv是Jetson平台的硬件转换组件,负责将NVMM显存里的NV12格式帧,拷贝到CPU内存并转换为pngenc支持的RGB格式。
每5秒自动采集一帧的命令
如果你需要持续按5秒间隔批量采集,可以用以下pipeline:
gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! "video/x-raw(memory:NVMM),format=NV12,width=3840,height=2160,framerate=30/1" ! nvvidconv ! videorate drop-only=true ! "video/x-raw,format=RGB,framerate=1/5" ! pngenc ! multifilesink location=capture_%04d.png max-files=100
参数说明:
videorate drop-only=true仅丢弃多余帧不生成插帧,保证采集的都是真实相机输出framerate=1/5配置为每5秒输出1帧multifilesink自动按序号命名输出文件,max-files=100为最多存储100帧,可根据需求调整数值
内容的提问来源于stack exchange,提问作者Akshay Acharya
相关产品推荐
相关产品推荐

