Использование gstreamer с видеомиксером и потоковой передачей 2 камер по UDP
У меня есть модуль Raspberry Pi Compute с 2 камерами. Я пытаюсь использовать gstreamer с v4l2src, выбирая /dev/video0 & /dev/video1, чтобы постоянно работать со скоростью около 20 кадров в секунду и использовать видеомиксер, чтобы объединить изображения рядом, а затем вывести H264 через RTP на порт UDP (прочитанный другим хостов)/
Драйвер RPi v4l2src по умолчанию (текущий) не поддерживает две камеры, но на сегодняшний день доступна бета-версия, которая, однако, требует ядра бета-версии 4.4.6.
Проблема у меня в подключении микшера.
#!/bin/bash -x
#
# Script to start RPi Compute Module streaming over RTP (RFC3984)
# from both cameras
#
FPS=20 # Frames per second
WIDTH=640 # Image width
HEIGHT=480 # Image height
UPLINK_HOST=192.168.1.73 # Receiving host
PORT=5200 # UDP port
#
# TESTING WITH ONE CAMERA ONLY FOR THE MOMENT
#
function start_streaming
{
gst-launch-1.0 -ve videomixer name=mixer \
! x264enc \
! h264parse \
! rtph264pay config-interval=10 pt=96 \
! udpsink host=$UPLINK_HOST port=$PORT \
v4l2src device=/dev/video0 \
! video/x-raw,format=AYUV,width=$WIDTH,height=$HEIGHT,framerate=$FPS/1 \
! mixer.
}
# Start streaming on both cameras simultaneously
echo Image size: $WIDTH x $HEIGHT
echo Frame rate: $FPS
echo Starting cameras 0 and 1 streaming to $UPLINK_HOST:$PORT
start_streaming
# Wait until everything has finished
wait
exit 0
# end
Я получаю довольно бесполезное сообщение:
WARNING: erroneous pipeline: could not link v4l2src0 to mixer
Я довольно много возился и ни к чему не привел - возможно, это что-то тривиальное, но, если я это увижу, меня просто потрясет!
Большое спасибо
Ник
1 ответ
Я думаю, что проблема заключается в выбранном формате. Вы используете AYUV, когда ваша камера не поддерживает его. Попробуйте заменить AYUV на I420.