如何从网络摄像头获取原始 mjpg 流

Posted

技术标签:

【中文标题】如何从网络摄像头获取原始 mjpg 流【英文标题】:how to get raw mjpg stream from webcam 【发布时间】:2017-02-12 04:27:53 【问题描述】:

我有罗技网络摄像头,它通过 USB2.0 使用 MJPG 压缩流式传输 1080p@30fps。我需要将此原始流写入硬盘驱动器或通过网络发送。我不需要解压缩它。 OpenCV 给了我解压缩的帧,所以我需要将它们压缩回来。这会导致大量的 CPU 利用率浪费。如何获取来自相机的原始 MJPEG 流? (Windows 7、Visual Studio、C++)

【问题讨论】:

补充:在我的情况下,数据可以保留在内核空间中。我只需要将它从 USB 网络摄像头驱动程序传输到文件系统/网络 io 驱动程序,尽可能降低 cpu 开销和延迟。即使这假定了独占相机访问权限。以前有这样做过吗?有一些可行的例子吗? 【参考方案1】:

Windows 原生视频捕获相关 API DirectShow 和 Media Foundation 可让您以原始格式从网络摄像头捕获视频。对于这些 API 来说,这是一项很自然的任务,并且以一种直接的方式完成(特别是,如果网络摄像头获得硬件压缩的 M-JPEG 提要,您可以通过编程方式获得)。

About Video Capture in DirectShow Audio/Video Capture in Media Foundation

之后您可以随意对数据进行任何操作:解压缩、通过网络发送、通过 HTTP 响应提要编写 Motion JPEG 等。

【讨论】:

以上是关于如何从网络摄像头获取原始 mjpg 流的主要内容,如果未能解决你的问题,请参考以下文章

智能家居 ——人脸识别摄像头安装实现监控功能

树莓派+Pi摄像头+mjpg-streamer

树莓派+Pi摄像头+mjpg-streamer

树莓派下MJPG-streamer四摄像头Docker环境搭建

如何使用 Java 从网络摄像头获取视频和音频流?

OpenWRT AR9331 mjpg-streamer