У меня есть конвейер GStreamer, который захватывает поток веб-камеры mjpeg с 3-х отдельных камер и сохраняет 2 кадра в каждой.Я выполняю эти команды на шине USB 3.0 Odroid XU4 с Ubuntu 18.04. При этом я обнаружил, что иногда получаю искаженное изображение, подобное этому, в коллекции выходных изображений:
Это не всегда происходит, но, возможно, 1/5 выполнения, изображение может выглядеть так.
Затем я обнаружил, что если я декодирую jpeg, а затем перекодирую, этого никогда не произойдет.,Смотрите следующий конвейер:
gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=2 ! \
image/jpeg,width=3840,height=2160 ! queue ! jpegdec ! queue ! \
jpegenc ! multifilesink location=/root/cam0_%02d.jpg v4l2src \
device=/dev/video1 num-buffers=2 ! image/jpeg,width=3840,height=2160 ! \
queue ! jpegdec ! queue ! jpegenc ! multifilesink \
location=/root/cam1_%02d.jpg v4l2src device=/dev/video2 num-buffers=2 ! \
image/jpeg,width=3840,height=2160 ! queue ! jpegdec ! queue ! jpegenc ! \
multifilesink location=/root/cam2_%02d.jpg
Теперь, когда я запускаю этот конвейер, у меня есть 1/5 шанс получить эту ошибку:
/GstPipeline:pipeline0/GstJpegDec:jpegdec0: No valid frames decoded before end of stream
Есть ли способ заставить gstreamer ждатьдля фреймов вместо просто провала?Я попытался это добавить! Очередь!в вышеупомянутом конвейере, но безуспешно.