生産者が接続されていない状態で消費者が稼働するようにすることは可能ですか?

生産者が接続されていない状態で消費者が稼働するようにすることは可能ですか?

私は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 ...

この問題をどのように克服できるかをご存知ですか?

ベストアンサー1

おすすめ記事