【问题标题】:Is it possible to grab a single image from an IP Camera stream (ONVIF)?是否可以从 IP 摄像机流 (ONVIF) 中获取单个图像?
【发布时间】:2018-01-14 19:02:46
【问题描述】:

我有一个 Web 应用程序需要从网络中的 IP 摄像头抓取图像。这可能使用PHP吗?或者至少是JS?只需要 Web 应用程序从 IP 摄像头抓取和保存图像。我已经能够使用 WEBCAMS(通过 USB 网络摄像头)执行此操作,但不确定如何使用实际的 IP 摄像机执行此操作。如果有已经可用的脚本(免费或付费)来执行此操作,我也会喜欢它..

任何帮助将不胜感激!

PS 相机还支持 RSTP...如果这样可以更轻松地实现相同的结果...

【问题讨论】:

  • 您可以使用 ffmpeg 并获取 rtsp 流的单帧,但需要可访问。

标签: php ip-camera onvif


【解决方案1】:

更简单的解决方案可能是切换到 python 和 opencv。从 IP 摄像机获取任何流很容易,并且在 opencv 的帮助下,您可以在不到 3 分钟的时间内保存到视频或一系列图像。

import cv2
import time

cap = cv2.VideoCapture(stream_url) # it can be rtsp or http stream
ret, frame = cap.read()
while ret:
    cv2.imwrite('images/{}.jpg'.format(time.time()), frame)
    ret, frame = cap.read()

另外,寻找相机API,很多IP相机都有单张快照的地址,所以你可以把它拉出来保存:

import numpy as np
import cv2
import urllib

resp = urllib.urlopen(url)
image = np.asarray(bytearray(resp.read()), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
# image is in memory, we can save it, send it etc...

最后,在大多数情况下,IP 摄像机都有 mjpeg 流,可以直接嵌入到 img html 标签 <img href='http://ip_address/video.mjpg' /> 中,例如

【讨论】:

    【解决方案2】:

    如果您的相机支持 FTP 并且您可以在需要时 FTP 图像,那么您可以尝试我目前正在开发的 IP 相机 FTP 和远程查看服务:

    运行演示或在https://app.comsci.co.uk/camac创建一个帐户

    此服务能够通过网址(通过设置 -> 共享启用)共享来自每个摄像头的最新图像,例如对于喂鸟器模拟账户:

    https://app.comsci.co.uk/imageserver/CC/0123456789abcdef/bird/latest

    您还将拥有可能感兴趣的图像的历史记录。

    与简单的 FTP 服务器相比具有许多优势,目前在开发中免费。如果该服务被证明是可行的并进入商业化,订阅的价格将与 24x7 全天候运行记录器的电费相当

    【讨论】:

    • tnx.是的,摄像头具有 FTP 功能,我现在正在这样做,但问题是摄像头不会间隔发送图像,而是触发运动。长话短说,我正在制作的 Web 应用程序需要图像的屏幕截图来自基于某些智能家居传感器触发等的多个 ip 摄像头。无论是否有运动。在传感器触发时,从不同的摄像头捕获和配置图像。这基本上就是我想要达到的目的。
    猜你喜欢
    • 1970-01-01
    • 2018-08-01
    • 2022-09-26
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    相关资源
    最近更新 更多