您好,当我尝试使用此管道时,我对Caps有问题:gst-launch-1.0 v4l2src!帽子! nvvidconv!帽子!三通! queue1! nvvideosink
我得到:WARNING: erroneous pipeline: no element "caps"
谢谢
答案 0 :(得分:0)
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