Я пытаюсь получить и показать 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
Спасибо, в любом случае. я исправил эту проблему, установив более новую версию ffmpeg и используя C-Api ffmpeg
Других решений пока нет …