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



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

感谢

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

Caps就像一个可以定义流媒体类型和一些流规范的结构。它不是GstElement。因此,你应该使用一个GstElement的capsfilter元素,然后将你的caps设置到它中

你的管道应该是这样的:

v4l2src!capsfilter caps=";video/x-raw,宽度=640,高度=480,格式=I420"!nvvidconv!发球!队列nvvideosink
(小心,你的帽子可能需要在GPU上,比如"video/x-raw(内存:NVMM("。我在下面解释了继续阅读。

你可以随心所欲地安排你的格式。如果你不确定你的相机的格式,就不要设置它,比如:caps="video/x-raw,宽度=640,高度=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

最新更新