【问题标题】:How do I access an IP Camera Error (Camera / Model: Grundig / GCI-K1505B)?如何访问 IP 摄像机错误(摄像机/型号:Grundig / GCI-K1505B)?
【发布时间】:2017-07-15 09:04:18
【问题描述】:
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <iostream>

int main(int, char**) {
    cv::VideoCapture vcap;
    cv::Mat image;

    // This works on a Grundig GCI-K1505B
    const std::string videoStreamAddress = "http://admin:1234@192.168.1.1/video.cgi?mjpeg";

    if(!vcap.open(videoStreamAddress)) {
        std::cout << "Error opening video stream or file" << std::endl;
        return -1;
    }

    for(;;) {
        if(!vcap.read(image)) {
            std::cout << "No frame" << std::endl;
            cv::waitKey();
        }
        cv::imshow("Output Window", image);

        if(cv::waitKey(1) >= 0) break;
    }

}

错误

***** 视频输入库 - 0.1995 - TFW07 *****

警告:打开文件时出错 (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:779) 警告:http://admin:1234@192.168.1.1/video.cgi?mjpeg (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:780) 打开视频流或文件时出错 按下关闭此窗口...

GRUNDIG/型号:GCI-K1505B

Web 浏览器 MS Internet Explorer 6.0(或更高版本)、Firefox、Google Chrome、Safari 访问保护 通过登录和密码、IP 过滤器、IEEE802.1x 客户端数量 最多同时 20 个 视频压缩 H.264 (MPEG-4Part 10/AVC)、MJPEG 视频分辨率 Full HD 1080p/ SXGA/ HD 720p/ XGA/SVGA/ D1/ VGA/ CIF/ QCIF 视频流 四流:4xH.264 或 3xH.264+MJPEG 三流:3xH.264 或 2xH.264+MJPEG 双流:2xH.264 或 H.264+MJPEG 单流:H.264 或 MJPEG 帧率 (Max@Resolution) 50fps@2MP, 25fps@2MP, 50fps@1,3MP, 25fps@1,3MP 等 网络协议 IPv4/v6、TCP/IP、UDP、RTP、RTSP、HTTP、HTTPS、DHCP、PPPoE、UPnP、SMTP、ICMP、IGMP、SNMP、IEEE802.1x、QoS、ONVIF、ARP

【问题讨论】:

    标签: c++ opencv video ip-camera


    【解决方案1】:

    您有一台 ONVIF 摄像机。 ONVIF 摄像头有一个 rtsp url,可以和 opencv 一起使用。

    首先你需要发现你的相机 rtsp url。有一些方法可以做到这一点,您可以在手册中尝试,或使用其他一些软件来为您提供。我推荐软件 onvif-device-tool (link) 或 gsoap-onvif (link),都可以在 Linux 上运行,看看你的终端,rtsp url 会在那里

    在你发现你的 rtsp url 后,我建议你在 vlc 播放器(link)上测试它,你可以使用菜单选项“打开网络流”或从命令行进行测试:

    vlc rtsp://your_url
    

    比在你的代码上使用 rtsp url,例如:

        const std::string videoStreamAddress = "rtsp://10.0.0.105:554/user=admin_password=admin_channel=1_stream=0.sdp";
    

    还将您的 if 更改为:

            if(cv::waitKey(15) == 27) break;
    

    我在 Linux 上使用我的相机进行了测试,您的代码经过这些修改后对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 2020-05-25
      • 2017-04-23
      • 2020-09-02
      • 2013-03-13
      • 2022-10-01
      相关资源
      最近更新 更多