I’ve encountered this issue with all complex gstreamer pipelines. After a fresh reboot the pipeline usually starts relatively quickly. For simpler pipelines it starts within 10 seconds. For the pipeline below it started within 30 seconds. After I shutdown the pipeline, it look ~8 minutes to start it again. Has anyone else experienced this?
gst-launch-1.0 -e videomixer name=mix \
sink_0::xpos=0 sink_0::ypos=0 sink_0::zorder=0 \
sink_1::xpos=50 sink_1::ypos=50 sink_1::zorder=1 \
sink_2::xpos=950 sink_2::ypos=50 sink_2::zorder=2 \
sink_3::xpos=515 sink_3::ypos=560 sink_3::zorder=3 \
! queue ! omxvp8enc quality-level=2 ! video/x-vp8 ! queue ! rtpvp8pay ! udpsink host=127.0.0.1 port=5004 sync=false \
v4l2src device=/dev/camera_front ! video/x-raw,width=1280,height=720 ! videorate ! video/x-raw,framerate=10/1 ! queue ! mix.sink_0 \
v4l2src device=/dev/camera_left ! video/x-raw,framerate=30/1,width=640,height=480 ! queue ! videorate ! videoscale ! video/x-raw,width=320,height=240,framerate=10/1 ! videocrop bottom=100 top=0 left=50 right=50 ! queue ! mix.sink_1 \
v4l2src device=/dev/camera_right ! video/x-raw,framerate=30/1,width=640,height=480 ! queue ! videorate ! videoscale ! video/x-raw,width=320,height=240,framerate=10/1 ! videocrop bottom=100 top=0 left=50 right=50 ! queue ! mix.sink_2 \
v4l2src device=/dev/camera_back ! video/x-raw,framerate=30/1,width=640,height=480 ! queue ! videorate ! videoscale ! video/x-raw,width=320,height=240,framerate=10/1 ! videocrop bottom=0 top=100 left=50 right=50 ! queue ! mix.sink_3 \
Console output:
ubuntu@tegra-zac-1:~$ python start_composite_cameras.py
gst-launch-1.0 -e videomixer name=mix sink_0::xpos=0 sink_0::ypos=0 sink_0::zorder=0 sink_1::xpos=50 sink_1::ypos=50 sink_1::zorder=1 sink_2::xpos=950 sink_2::ypos=50 sink_2::zorder=2 sink_3::xpos=515 sink_3::ypos=560 sink_3::zorder=3 ! queue ! omxvp8enc quality-level=2 ! video/x-vp8 ! queue ! rtpvp8pay ! udpsink host=127.0.0.1 port=5004 sync=false v4l2src device=/dev/camera_front ! video/x-raw,width=1280,height=720 ! videorate ! video/x-raw,framerate=10/1 ! queue ! mix.sink_0 v4l2src device=/dev/camera_left ! video/x-raw,framerate=30/1,width=640,height=480 ! queue ! videorate ! videoscale ! video/x-raw,width=320,height=240,framerate=10/1 ! videocrop bottom=100 top=0 left=50 right=50 ! queue ! mix.sink_1 v4l2src device=/dev/camera_right ! video/x-raw,framerate=30/1,width=640,height=480 ! queue ! videorate ! videoscale ! video/x-raw,width=320,height=240,framerate=10/1 ! videocrop bottom=100 top=0 left=50 right=50 ! queue ! mix.sink_2 v4l2src device=/dev/camera_back ! video/x-raw,framerate=30/1,width=640,height=480 ! queue ! videorate ! videoscale ! video/x-raw,width=320,height=240,framerate=10/1 ! videocrop bottom=0 top=100 left=50 right=50 ! queue ! mix.sink_3
Setting pipeline to PAUSED ...
Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingInside NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB and MjstreamingPipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
(process pauses here for 30-480 seconds)
Framerate set to : 10 at NvxVideoEncoderSetParameterNvMMLiteOpen : Block : BlockType = 7
===== MSENC =====
NvMMLiteBlockCreate : Block : BlockType = 7
===== MSENC blits (mode: 1) into tiled surfaces =====
This pipeline has a similar behavior, although not quite as long start times
gst-launch-1.0 v4l2src device="/dev/video1" ! video/x-raw,width=640,height=480,framerate=30/1 ! queue ! videorate ! videoscale ! video/x-raw,width=320,height=240,framerate=10/1 ! queue ! omxvp8enc quality-level=2 ! video/x-vp8 ! queue ! rtpvp8pay ! udpsink host=127.0.0.1 port=5004 sync=false