Я пытаюсь получить и отобразить udp live mjpeg - сетевой видеопоток с сетевой камеры. Я могу воспроизвести видеопоток, запустив VLC с аргументом --demux=mjpeg
, а затем набрав udp://@:1234
в поле сетевого потока. Или с помощью gstreamer в строке консоли: gst-launch -v udpsrc port=1234 ! jpegdec ! autovideosink
. Моя камера имеет IP-адрес 192.168.1.2
и отправляет поток на адрес 192.168.1.1:1234
.
Я попытался захватить поток с помощью OpenCV с помощью:
cv::VideoCapture cap;
cap.open("udp://@192.168.1.1:1234");
Я также пробовал:
cap.open("udp://@:1234")
cap.open("udp://@localhost:1234")
cap.open("udp://192.168.1.1:1234")
cap.open("udp://192.168.1.1:1234/")
Но функция зависает, пока не нажму ctrl+C
. У меня такая же проблема, когда я использую ffmpeg с: ffmpeg -i udp://@192.168.1.1:1234 -vcodec mjpeg
Что я сделал не так? Когда я установил ffmpeg, мне не удалось установить зависимость libsdl1.2-dev
. Это проблема?
Если да, есть ли способ прочитать udp-кадры из сокета, а затем декодировать изображения JPEG и отобразить их с помощью OpenCV?
У меня ОС Ubuntu linaro oneiric 11.10 с ядром 3.0.35 от Freescale