亲爱的
我想在gstreamer上使用以下立体摄像机。
https://www.amazon.com/dp/B07C2NTMRC/
・项目名称:SVPRO 720p HD网路摄影机
・ USB端口类型:USB 2.0
・分辨率:1080x720
我同时设置了两个外壳,以便同时从立体声相机获取两个图像。
我尝试分别使用以下代码同时获取左右两边的摄像机图像。
###Stereo_Camera_Left###
#!/bin/bash
gst-launch-1.0 -e \
v4l2src device="/dev/video0" \
! decodebin \
! videoscale \
! videorate \
! capsfilter caps="video/x-raw,width=80,height=60,framerate=\(fraction\)2/1" \
! videoconvert \
! autovideosink
###Stereo_Camera_Right###
#!/bin/bash
gst-launch-1.0 -e \
v4l2src device="/dev/video1" \
! decodebin \
! videoscale \
! videorate \
! capsfilter caps="video/x-raw,width=80,height=60,framerate=\(fraction\)2/1" \
! videoconvert \
! autovideosink
但是,左摄像机或右摄像机显示以下错误。 只能获取一张图像。
libv4l2: error turning on stream: No space left on device
0:00:05.092236993 6216 0x1202940 ERROR v4l2bufferpool gstv4l2bufferpool.c:635:gst_v4l2_buffer_pool_streamon:<v4l2src0:pool:src> error with STREAMON 28 (No space left on device)
0:00:05.092283101 6216 0x1202940 WARN v4l2bufferpool gstv4l2bufferpool.c:1054:gst_v4l2_buffer_pool_poll:<v4l2src0> error: poll error 1: No space left on device. (28)
0:00:05.092331654 6216 0x1202940 WARN v4l2src gstv4l2src.c:884:gst_v4l2src_create:<v4l2src0> error: Failed to allocate a buffer
0:00:05.092354187 6216 0x1202940 WARN basesrc gstbasesrc.c:2948:gst_base_src_loop:<v4l2src0> error: Internal data flow error
0:00:05.092362693 6216 0x1202940 WARN basesrc gstbasesrc.c:2948:gst_base_src_loop:<v4l2src0> error: streaming task paused, reason error (-5)
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Could not read from resource
Additional debug info:
gstv4l2bufferpool.c(1054): gst_v4l2_buffer_pool_poll (): /GstPipeline:pipeline
是否可以同时获取此立体摄像机的两个图像?
答案 0 :(得分:0)
这里有两种可能的方法:
1)BASH逻辑。最后通过&
在后台运行第一个命令,然后启动第二个命令。
gst-launch-1.0 -e v4l2src device="/dev/video0" ! decodebin ! videoscale ! videorate ! capsfilter caps="video/x-raw,width=80,height=60,framerate=\(fraction\)2/1" ! videoconvert ! autovideosink &
gst-launch-1.0 -e v4l2src device="/dev/video1" ! decodebin ! videoscale ! videorate ! capsfilter caps="video/x-raw,width=80,height=60,framerate=\(fraction\)2/1" ! videoconvert ! autovideosink
2)推荐的“更正确”方法-将所有逻辑整合到一个管道中:
gst-launch-1.0 -e v4l2src device="/dev/video0" ! decodebin ! videoscale ! videorate ! capsfilter caps="video/x-raw,width=80,height=60,framerate=\(fraction\)2/1" ! videoconvert ! autovideosink v4l2src device="/dev/video1" ! decodebin ! videoscale ! videorate ! capsfilter caps="video/x-raw,width=80,height=60,framerate=\(fraction\)2/1" ! videoconvert ! autovideosink
答案 1 :(得分:0)
我在使用类似的立体相机时遇到了类似的问题-设备上没有剩余空间。我试图以640x480的分辨率捕获视频。将两个摄像头的捕获宽度和高度降低到320x240,就解决了这个问题,我能够从立体声摄像头获取同步视频。
我认为该错误可能是设备USB带宽的限制。