使用OpenCV和ffmpeg捕获并播放MJPEG - UDP上的网络视频流

时间:2016-02-25 15:17:56

标签: c++ opencv ffmpeg networkstream

我试图从网络摄像头接收并显示udp live mjpeg - 网络视频流。 我可以通过使用Argument --demux=mjpeg启动VLC,然后在网络流字段中键入udp://@:1234来播放视频流。或者通过控制台行使用gstreamer:gst-launch -v udpsrc port=1234 ! jpegdec ! autovideosink。我的Cam拥有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显示它?

我有来自飞思卡尔的内核3.0.35的操作系统Ubuntu linaro oneiric 11.10

1 个答案:

答案 0 :(得分:0)

谢谢你。我通过安装更新​​版本的ffmpeg并使用ffmpeg的C-Api修复了这个问题