私は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 ...
この問題をどのように克服できるかをご存知ですか?