나는 v4l2loopback을 가지고 놀고 있으며 생산자가 없을 때 기본 시간 초과 이미지로 gstreamer 소비자를 실행하려고 시도하고 있지만 실패합니다.
v4l2loopback 장치를 설정하는 방법:
sudo utils/v4l2loopback-ctl set-fps /dev/video20 20
v4l2-ctl -d /dev/video20 -c timeout=50
sudo utils/v4l2loopback-ctl set-caps /dev/video20 "UYVY:640x480@20/1"
sudo utils/v4l2loopback-ctl set-timeout-image /dev/video20 <path_to_black_image>
생산자 및 소비자 명령:
#Producer
gst-launch-1.0 videotestsrc pattern=ball ! video/x-raw,width=640,height=480,format=UYVY,framerate=20/1 ! timeoverlay ! v4l2sink device=/dev/video20
#Consumer
gst-launch-1.0 v4l2src device=/dev/video20 ! video/x-raw,format=UYVY,width=640,height=480 ! videoconvert ! fpsdisplaysink video-sink=xvimagesink
생산자가 루프백 장치에 먼저 연결한 다음 소비자에 연결하면 완벽하게 작동합니다. 이 경우 생산자가 제거되면 소비자는 구성된 FPS를 사용하여 시간 초과 이미지를 재생합니다.
그런데 생산자 없이 소비자를 실행하려고 하면 다음과 같은 오류가 발생합니다.
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Failed to allocate required memory.
Additional debug info:
gstv4l2src.c(658): gst_v4l2src_decide_allocation (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
Buffer pool activation failed
Execution ended after 0:00:00.006248059
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
이 문제를 어떻게 극복할 수 있을지 아시나요?