标签: ip-camera

如何处理cv :: VideoCapture解码错误?

我正在使用OpenCV的VideoCapture(使用ffmpeg支持编译)从IP摄像机传输H264内容.

到目前为止,工作正常,但每隔一段时间我就会出现解码错误(来自我假设的ffmpeg):

[h264 @ 0x103006400] mb_type 137 in I slice too large at 26 10
[h264 @ 0x103006400] error while decoding MB 26 10
[h264 @ 0x103006400] negative number of zero coeffs at 25 5
[h264 @ 0x103006400] error while decoding MB 25 5
[h264 @ 0x103006400] cbp too large (421) at 35 13
[h264 @ 0x103006400] error while decoding MB 35 13
[h264 @ 0x103006400] mb_type 121 in P slice too large at 20 3
[h264 @ 0x103006400] error …
Run Code Online (Sandbox Code Playgroud)

opencv ffmpeg decoding h.264 ip-camera

11
推荐指数
1
解决办法
4972
查看次数

如何在C#中发现onvif设备

我正在开发一个应用程序,它将探测连接在网络上的ONVIF设备以进行自动发现.根据ONVIF Core规范,Probe消息的SOAP格式为:

 <?xml version="1.0" encoding="UTF-8"?>
<e:Envelope xmlns:e="http://www.w3.org/2003/05/soap-envelope"
xmlns:w="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery"
xmlns:dn="http://www.onvif.org/ver10/network/wsdl">
<e:Header>
<w:MessageID>uuid:84ede3de-7dec-11d0-c360-f01234567890</w:MessageID>
<w:To e:mustUnderstand="true">urn:schemas-xmlsoap-org:ws:2005:04:discovery</w:To>
<w:Action
a:mustUnderstand="true">http://schemas.xmlsoap.org/ws/2005/04/discovery/Pr
obe</w:Action>
</e:Header>
<e:Body>
<d:Probe>
<d:Types>dn:NetworkVideoTransmitter</d:Types>
</d:Probe>
</e:Body>
</e:Envelope>
Run Code Online (Sandbox Code Playgroud)

如何在WCF中发送此消息以发现onvif deivce?

c# wcf ws-discovery ip-camera onvif

10
推荐指数
1
解决办法
1万
查看次数

IP摄像头:用于录制H.264的开源软件

我有一台IP摄像机(Axis M1054),我想录制视频流.我可能会从连续录制开始,但后来我想切换到由运动检测触发的剪辑(在触发发生前几秒预录制),录制以MPEG4(H.264)编码,而不是MJPEG.

有免费的开源Linux软件可以做到吗?我没有通过搜索互联网找到任何东西.你能推荐一些有效且成功使用的东西吗?还是我坚持使用商业软件?

如果使用不同的型号可以更好地使用Linux,我可以更换相机.

linux video-streaming h.264 ip-camera

10
推荐指数
1
解决办法
3万
查看次数

OpenCV-Python:如何从实时视频流中获取最新帧或跳过旧视频流.

我已经在Python中集成了一台带OpenCV的IP摄像头,以便从实时流中逐帧完成视频处理.我已经将相机FPS配置为1秒,这样我就可以在缓冲区中每秒获得1帧处理,但是我的算法需要4秒来处理每个帧,导致缓冲区中未处理帧的停滞,并且会随着时间的推移而不断增长导致指数延迟.为了解决这个问题,我创建了一个Thread,我在调用cv2.grab()API来清理缓冲区,它将指针移动到每个调用中的最新帧.在主线程中,我正在调用retrieve()方法,它给出了第一个Thread抓取的最后一帧.通过这种设计,帧停滞问题是固定的,并且指数延迟被消除,但仍然不能消除12-13秒的恒定延迟.我怀疑当cv2.retrieve()被调用时它没有获得最新的帧,而是来自最新帧的第4或第5帧.OpenCV中是否有任何API或任何其他设计模式来解决此问题,以便我可以获得最新的帧进行处理.

在此先感谢您的帮助.我真的很感激快速反应.

python opencv video-processing video-streaming ip-camera

10
推荐指数
1
解决办法
1495
查看次数

如何以编程方式将多个IP摄像头集成到android中?

我是android网络的新手.现在我正在做一个与android网络相关的项目.在这个项目中,我想将6个IP摄像机集成到我的项目中,所有摄像机同时进行流动.这款IP摄像机是支持Wi-Fi的摄像机.问题在这里,我们如何将多个wifi设备连接到Android设备?只有我们可以一次连接单个Wi-Fi.但有一种方法是Wi-Fi直接或Hotspot.但IP摄像机如何识别和连接移动热点? 我在互联网上搜索了很多,但我找不到合适的解决方案.所以,如果你们中的任何一个人知道如何解决这个问题,请帮助我.

这是客户端提供的获取Wi-Fi扫描结果的cgi命令

get_wifi_scan_result.cgi

   Description: Gets the camera results of search for wireless networks
Certification: administrator
Syntax: /get_wifi_scan_result.cgi
Returns:
ap_number : Refers to the search for how many SSID , The following variable groups, with the first group, for example:
ap_ssid[0]?ssid
ap_mode[0]?0->infra 1->adhoc
ap_security[0]?
                0->WEP-NONE
                1->WEP
                2->WPA-PSK TKIP
                3->WPA-PSK AES 
                4->WPA2-PSK TKIP
                5->WPA2-PSK AES
ap_dbm0[0]:  
ap_channel:  
Run Code Online (Sandbox Code Playgroud)

android cgi ip-camera android-networking android-wifi

10
推荐指数
1
解决办法
376
查看次数

从Android上的IP摄像头接收视频流

我有一台IP摄像机,它是MJPEG格式的流媒体视频.现在我的目标是接收它并在我自己的自定义Android应用程序中显示它.为此我在android平台上有三个编程选择:

  1. 使用内置的Anrdroid MediaPlayer类
  2. 在本机C中使用FFMPEG库并通过JNI访问它
  3. 在android上使用GStreamer端口接收流

那么请建议更好的解决方案?

我没有使用FFMPEG或GStreamer的经验.那么这样做的可行性是什么?

android ffmpeg gstreamer ip-camera android-mediaplayer

9
推荐指数
1
解决办法
5784
查看次数

从无线IP摄像头到Android手机的实时视频流

在这里,我必须使用RTSP协议从无线IP摄像头获取实时视频流到Android移动设备.摄像头连接到无线路由器,移动设备也有相同的wifi网络.现在我需要实现从摄像头实时视频流.

为此,我该怎么办?这对我来说是新概念.如何以编程方式连接Android手机和相机并获得直播.任何帮助将不胜感激.

android rtsp ip-camera live-streaming

9
推荐指数
1
解决办法
1万
查看次数

OpenCV IP摄像机应用程序在访问单元中丢失了[h264 @ 0xxxxx]丢失的图片

我在cpp中有一个opencv应用程序.

它使用opencv中的简单结构捕获视频流并将其保存到视频文件中.

它与我的网络摄像头完美配合.

但是,它可能在大约十秒后崩溃,而我运行它来捕获来自IP Camara的流.

我的编译命令是:

g++ -O3 IP_Camera_linux.cpp -o IP_Camera `pkg-config --cflags --libs opencv`
Run Code Online (Sandbox Code Playgroud)

来自IP cam的我的流被访问如下:

const string Stream = "rtsp://admin:xxxx@192.168.0.101/";
Run Code Online (Sandbox Code Playgroud)

它运行完美,显示视频并保存,直到显示的视频冻结并且应用程序崩溃.虽然终端上的错误消息是:

[h264 @ 0x15e6f60] error while decoding MB 59 31, bytestream (-20)
[h264 @ 0x15e8200] error while decoding MB 61 27, bytestream (-3)
[h264 @ 0x109c880] missing picture in access unit
[h264 @ 0x109c000] no frame!
Run Code Online (Sandbox Code Playgroud)

根据我的理解,上述错误消息中的第二行可能有一些事情要做,但实际上并没有使应用程序崩溃.最后两行可能是原因还是原因?

有帮助吗?

c++ opencv ffmpeg h.264 ip-camera

9
推荐指数
1
解决办法
3626
查看次数

如何将C++联合转换为Delphi

我知道之前已经问过这个问题,但是我试图将一些C++结构/联合转换为Delphi以使用Hikvision SDK却没有成功.

我试图转换的C++结构/联合如下:

struct{
  BYTE                           byEnable;
  BYTE                           byRes1[3];
  DWORD                          dwTriggerType;
  NET_ITC_TRIGGER_PARAM_UNION    uTriggerParam;
  BYTE                           byRes[64];
}NET_ITC_SINGLE_TRIGGERCFG,*LPNET_ITC_SINGLE_TRIGGERCFG;

union{
  DWORD                              uLen[1070];
  NET_ITC_POST_IOSPEED_PARAM         struIOSpeed;
  NET_ITC_POST_SINGLEIO_PARAM        struSingleIO;
  NET_ITC_POST_RS485_PARAM           struPostRs485;
  NET_ITC_POST_RS485_RADAR_PARAM     struPostRadar;
  NET_ITC_POST_VTCOIL_PARAM          struVtCoil;
  NET_ITC_EPOLICE_IOTL_PARAM         struIOTL;
  NET_ITC_EPOLICE_RS485_PARAM        struEpoliceRs485;
  NET_ITC_EPOLICE_RS485_PARAM        struPERs485;
}NET_ITC_TRIGGER_PARAM_UNION,*LPNET_ITC_TRIGGER_PARAM_UNION;
Run Code Online (Sandbox Code Playgroud)

我尝试过以下方法:

  PNetItcSingleTriggerCfg = ^TNetItcSingleTriggerCfg;
  TNetItcSingleTriggerCfg = record
    byEnable:      Byte;
    byRes1:        array [0..2] of Byte;
    dwTriggerType: DWord;
    uTriggerParam: TNetItcTriggerParamUnion;
    byRes:         array [0..63] of Byte;
  end;

  PNetItcTriggerParamUnion = ^TNetItcTriggerParamUnion;
  TNetItcTriggerParamUnion = record
    case integer of
      0: (uLen:             array [0..1069] of DWord);
      1: (struIOSpeed:      TNetItcPostIOSpeedParam);
      2: (struSingleIO:     TNetItcPostSingleIOParam); …
Run Code Online (Sandbox Code Playgroud)

c++ delphi ip-camera delphi-xe

9
推荐指数
1
解决办法
606
查看次数

使用OpenCV访问IP Camera

下面给出的代码用于使用OpenCV访问Axis IP摄像机.在运行程序时,它首先显示"打开cap_ffmpeg_impl ...时出错",然后显示找不到相机.

#include <opencv\cv.h>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

int main()
{
    Mat frame;
    namedWindow("video", 1);
    VideoCapture cap("http://IPADDRESS/video.mjpg");
    if(!cap.isOpened())
    {
        cout<<"Camera not found"<<endl;
        getchar();
        return -1;
    }
    while ( cap.isOpened() )
    {
        cap >> frame;
        if(frame.empty()) break;

        imshow("video", frame);
        if(waitKey(30) >= 0) break;
    }   
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

c++ opencv video-streaming ip-camera

8
推荐指数
1
解决办法
4万
查看次数