【发布时间】:2016-06-08 11:06:12
【问题描述】:
我正在尝试接收并显示来自网络摄像头的 udp 直播 mjpeg - 网络视频流。
我可以通过使用参数--demux=mjpeg 启动VLC,然后在网络流字段中键入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,内核是 Freescale 的 3.0.35
【问题讨论】:
-
您是否尝试过“rtp://”或使用 .sdp 文件来描述视频流?
-
你好,是的,我试过“rtp://”但没有成功。要使用 ffmpeg 接收流,我尝试使用 ffmpeg -i udp://192.168.1.1:1234 -f mpegts -vcodec mjpeg。抱歉,我不知道如何使用 .sdp 文件
标签: c++ opencv ffmpeg networkstream