Захват и воспроизведение MJPEG - сетевой видеопоток через UDP с OpenCV и ffmpeg

Я пытаюсь получить и отобразить 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


person MoNas    schedule 25.02.2016    source источник
comment
Вы пробовали использовать rtp: // или файлы .sdp для описания видеопотока?   -  person El Sampsa    schedule 25.02.2016
comment
Привет, да, я безуспешно пробовал rtp: //. чтобы получить поток с помощью ffmpeg, я попытался с помощью ffmpeg -i udp: //192.168.1.1: 1234 -f mpegts -vcodec mjpeg. извините, я не знаю об использовании файлов .sdp   -  person MoNas    schedule 26.02.2016


Ответы (1)


Спасибо, в любом случае. Я исправил эту проблему, установив новую версию ffmpeg и используя C-Api ffmpeg

person MoNas    schedule 03.03.2016