У меня следующий конвейер работает из моей программы с использованием элемента OpenCV VideoWriter.
gst-launch-1.0 -v videotestsrc ! clockoverlay ! shmsink socket-path=/tmp/sink shm-size=2000000 name=/dev/shm wait-for-connection=false
Когда я использую поток через следующий конвейер, все работает
gst-launch-1.0 -v shmsrc is-live=true socket-path=/tmp/sink shm-area-name=/dev/shm ! \
"video/x-raw, format=BGR, width=(int)160, height=(int)120, framerate=(fraction)30/1" ! \
queue ! videoconvert ! autovideosink
, но когда я попытка закодировать поток в h264 с помощью следующего конвейера
gst-launch-1.0 -vvv shmsrc is-live=true socket-path=/tmp/sink shm-area-name=/dev/shm ! \
"video/x-raw, format=BGR, width=(int)160, height=(int)120, framerate=(fraction)30/1" ! \
queue ! videoconvert ! x264enc bitrate=1000 ! video/x-h264,profile=baseline ! \
rtph264pay config-interval=1 pt=96 ! queue ! udpsink host=127.0.0.1 port=5000
Я получаю
(gst-launch-1.0:8119): GStreamer-CRITICAL **: gst_segment_to_running_time: assertion 'segment->format == format' failed
и ничего не вижу из VL C. Чего мне не хватает?
Примечание : Для воспроизведения проблемы можно использовать следующие конвейеры производителя / потребителя:
gst-launch-1.0 -v videotestsrc ! clockoverlay ! shmsink socket-path=/tmp/sink shm-size=2000000 name=/dev/shm wait-for-connection=false
sudo gst-launch-1.0 -vvv shmsrc is-live=true socket-path=/tmp/sink shm-area-name=/dev/shm ! \
"video/x-raw, format=BGR, width=(int)160, height=(int)120, framerate=(fraction)30/1" ! \
queue ! videoconvert ! x264enc bitrate=1000 ! video/x-h264,profile=baseline ! rtph264pay config-interval=1 pt=96 ! queue ! udpsink host=127.0.0.1 port=5000
Информация о системе
- Ubuntu 16.04
- GStreamer 1.8.3
- OpenCV 3.4.0