微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Gstreamer动态管道:HDMI摄像机上的摄像机预览文件上的视频录制

如何解决Gstreamer动态管道:HDMI摄像机上的摄像机预览文件上的视频录制

您好,当我尝试使用此管道时,我对Caps有问题:gst-launch-1.0 v4l2src!帽子! nvvidconv!帽子!三通! queue1! nvvideosink 我得到:WARNING: erroneous pipeline: no element "caps"

谢谢

解决方法

GstElement和GstCaps是两个不同的东西。

Caps类似于可以定义流媒体类型和某些流规范的结构。它不是GstElement。因此,您应该使用capsfilter元素(即GstElement),然后将其设置为大写。

您的管道应如下所示:

v4l2src! capsfilter caps =“ video / x-raw,width = 640,height = 480,format = I420”! nvvidconv!三通!排队! nvvideosink
(小心,您的上限可能需要像'video / x-raw(memory:NVMM)'一样放在GPU上。我在下面的解释中继续阅读。

您可以根据需要安排格式。如果不确定相机的格式,请不要设置,例如:caps =“ video / x-raw,width = 640,height = 480”

使用Capsfilter时,您将强制管道获取THAT流设置。例如,如果您的相机不支持640x480,则流水线会崩溃!
如果不确定相机的规格,只需使用nvvidconv或videoconvert元素即可为您转换流。

如果不确定应该做什么,请尝试以下管道:
v4l2src! nvvidconv! nvvideosink

警告:nvvidconv和nvvideosink可能在GPU上运行。因此,如果您尝试将videoconvert与nvvideosink一起使用,则程序可能会崩溃,因为videoconvert可在CPU上运行,而nvvideosink可能无法在CPU上运行。

看看 https://forums.developer.nvidia.com/t/window-playback-using-nvvideosink/42346,他构建了可以在GPU上运行的管道。他使用nvcamerasrc从GPU获取数据流。 v4l2src仅从CPU获取。
您决定从CPU还是GPU获取流。尝试在创建管道时也查看以下链接: https://forums.developer.nvidia.com/t/gstreamer-input-nvcamerasrc-vs-v4l2src/50658/2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。