精华内容
下载资源
问答
  • 当前,市面上有各种各样的安防摄像头可供我们选择,我该选择哪种呢?从哪几个方面来考虑?模拟摄像头还是数字摄像头?首先要考虑的是,你是否愿意配置路由器或WIFI,也就是说,处理网络相关的事情,如果愿意,可以...

    当前,市面上有各种各样的安防摄像头可供我们选择,我该选择哪种呢?从哪几个方面来考虑?

    模拟摄像头还是数字摄像头?

    首先要考虑的是,你是否愿意配置路由器或WIFI,也就是说,处理网络相关的事情,如果愿意,可以选择数字网络摄像头。如果不愿意,你会更愿意选择CCTV,即AHD(模拟高清)摄像头及DVR(数字硬盘录像机)。CCTV的运行是通过同轴电缆及BNC接头来连接的DVR和模拟摄像头,DVR将模拟视频流数字化并存储于本地硬盘驱动器。如今大多数DVR都有这样的功能,将来自不同摄像头(或被称为通道)的视频流整合,在本地存储、查看,或通过网络传送,用户通过web浏览器或客户端程序来远程访问。

    家庭消费用摄像头还是行业用摄像头?

    数字安防监控摄像头两种类型:消费类摄像头、行业用摄像头。

    消费类摄像头主要安装在消费者家里,室内或室外。它可以是摄像机的形态,也可能门铃的形态。

    这些摄像头采用供应商专有的通信协议来实现点对点通信,也就是说,根据需求将视频流通过本地网络传输到移端APP。在许多应用中,供应商会在摄像头内嵌入运动检测算法。一旦有运动状态被检测到,视频将会被推送至云端存储服务器以供消费者稍后查看,同时为消费者推送一个通知信息。但是,受限于消费类摄像头的计算能力,运动检测算法并不是那么可靠,由此会产生大量的误报。当前,这一类的消费类摄像头在市场上也被称为智能安防摄像头。如下图即为一个典型的家庭用、消费类摄像头:

    09ee4da7ea40d8ae4d4a76ccb0046a08.png

    行业用安防摄像头包括了枪机、半球机、云台等类型。枪机、半球机又可以选择不同的电子变焦镜头。

    70bd3145e164e8dfa6c118f83998cb71.png

    deepcam室内安防摄像头 720p WiFi IP夜视摄像头 运动检测云记录 支持iOS、 Android

    消费类摄像头及行业用摄像头最大的不同点就是镜头焦距。消费者摄像机为一般为定焦,通常为3.6mm,而行业用摄像机的焦距可以是6mm到35mm,甚至55mm,这些摄像机能看得更远。消费用和行业用摄像头的分辨率都可以为720p、1080p和4K。

    行业用安防摄像头使用RTSP对视频进行编码,将视频打包至ONVIF协议。并使用NVR(网络视频录像机)将视频存储于本地,而非推送到云端存储。NVR实际上是DVR的数字化版本。它可以是一个实在的专用的设备,也可以是一个如下图所示的PC软件。和DVR一样,根据它可以录制和查看多少个摄像头,NVR被定义不同的通道数量。

    75221a366292c5967bb79876f3cc3d1e.png

    一个基于Windows系统的免费NVR软件

    视频分析

    随着人工智能技术(AI)的发展,当前的摄像机芯片组被加入NPU(神经处理单元),先进的AI视频分析技术被越来越多的应用于摄像头。这使得基于神经网络的算法,如人脸检测、行人检测、车辆检测和人脸识别可以在低成本的数字摄像头上实现。在当今时代,有太多的信息蜂拥而至,远远超出我们大脑的处理能力。同样,我们也没有足够的人工或大脑来查看如此多的视频。而视频分析能够帮我们分析、关注更重要的信息。

    下图即为一个AI摄像头

    f19cfe17b3a93dd9aed5ecc540faf585.png

    deepcam室外枪型人脸识别高清网络摄像头 POE防水 夜视摄像头

    AI安防摄像头能够像消费摄像头一样在移动APP上进行点对点的实时视频查看,也能够使用NVR在本地记录视频。

    展开全文
  • 参考链接:一、python3控制基于onvif的安防摄像头使用的是tp-link安防摄像头安装在Python3中,是安装pip install onvif-zeep实现控制二、实现已经保证了摄像头具有的以下的能力,所以不再对设备是否具有能力进行判断...

    参考链接:

    一、python3控制基于onvif的安防摄像头

    使用的是tp-link安防摄像头

    安装

    在Python3中,是安装pip install onvif-zeep实现控制

    二、实现

    已经保证了摄像头具有的以下的能力,所以不再对设备是否具有能力进行判断。

    实现获取设备、控制设备、获取摄像头视频内容进行分析

    需要更改的地方,就是填写自己摄像头的用户名和密码

    onvif的默认账户和密码是admin和9999,不写(空字符串)也能运行。。。

    class PlcVisionSDK:

    def __init__(self, kwargs_dict):

    self.name = ' admin' # 自己设备的名称

    self.password = '9999 ' # 自己设备的密码

    self.mul_ip = "239.255.255.250"

    self.mul_port = 3702

    self.kwargs_dict = kwargs_dict

    def zeep_pythonvalue(self, xmlvalue):

    return xmlvalue

    1、发现设备

    使用udp组播,获取摄像头的IP和PORT

    def discovery_dev(self):

    local_ip = self.kwargs_dict['local_ip']

    xml_str = """

    uuid:a8098c1a-f86e-11da-bd1a-00112444be1e'

    urn:schemas-xmlsoap-org:ws:2005:04:discovery

    http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe

    dn:NetworkVideoTransmitter

    """

    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)

    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

    s.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 255)

    s.bind((local_ip, self.mul_port))

    s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP,

    socket.inet_aton(self.mul_ip) + socket.inet_aton(local_ip))

    s.setblocking(False)

    s.sendto(xml_str.encode(), (self.mul_ip, self.mul_port))

    while True:

    data, address = s.recvfrom(65535)

    content = data.decode()

    a = re.search(re.compile(r"(.*?)", re.S), str(content))

    if a:

    b = a.group()

    ip, port = b.split('/')[2].split(':')[0: 2]

    return str(ip), port

    2、绝对移动

    对应的方法是 AbsoluteMove

    根据获得的IP和PORT,进行绝对移动的控制。

    def move(self):

    # 需要的参数

    plc_ip = self.kwargs_dict['plc_ip']

    plc_port = int(self.kwargs_dict['plc_port'])

    pan = self.kwargs_dict['pan'] if self.kwargs_dict.get('pan') else 0

    tilt = self.kwargs_dict['tilt'] if self.kwargs_dict.get('tilt') else 0

    zoom = self.kwargs_dict['zoom'] if self.kwargs_dict.get('zoom') else 0

    pan_speed = self.kwargs_dict['pan_speed'] if self.kwargs_dict.get('pan_speed') else 1

    tilt_speed = self.kwargs_dict['tilt_speed'] if self.kwargs_dict.get('tilt_speed') else 1

    zoom_speed = self.kwargs_dict['zoom_speed'] if self.kwargs_dict.get('zoom_speed') else 1

    mycam = ONVIFCamera(plc_ip, plc_port, self.name, self.password)

    media = mycam.create_media_service()

    ptz = mycam.create_ptz_service()

    zeep.xsd.simple.AnySimpleType.pythonvalue = self.zeep_pythonvalue

    media_profile = media.GetProfiles()[0]

    request = ptz.create_type('GetConfigurationOptions')

    request.ConfigurationToken = media_profile.PTZConfiguration.token

    request = ptz.create_type('AbsoluteMove')

    request.ProfileToken = media_profile.token

    ptz.Stop({'ProfileToken': media_profile.token})

    if request.Position is None:

    request.Position = ptz.GetStatus({'ProfileToken': media_profile.token}).Position

    if request.Speed is None:

    request.Speed = ptz.GetStatus({'ProfileToken': media_profile.token}).Position

    request.Position.PanTilt.x = pan

    request.Speed.PanTilt.x = pan_speed

    request.Position.PanTilt.y = tilt

    request.Speed.PanTilt.y = tilt_speed

    request.Position.Zoom = zoom

    request.Speed.Zoom = zoom_speed

    ptz.AbsoluteMove(request)

    return 'finish'

    3、相对移动

    对应的方法是 RelativeMove

    根据获得的IP和PORT,进行相对移动的控制。

    def relative_move(self):

    # 需要的参数

    plc_ip = self.kwargs_dict['plc_ip']

    plc_port = int(self.kwargs_dict['plc_port'])

    re_pan = self.kwargs_dict['re_pan'] if self.kwargs_dict.get('re_pan') else 0

    re_tilt = self.kwargs_dict['re_tilt'] if self.kwargs_dict.get('re_tilt') else 0

    re_zoom = self.kwargs_dict['re_zoom'] if self.kwargs_dict.get('re_zoom') else 0

    mycam = ONVIFCamera(plc_ip, plc_port, self.name, self.password)

    media = mycam.create_media_service()

    ptz = mycam.create_ptz_service()

    zeep.xsd.simple.AnySimpleType.pythonvalue = self.zeep_pythonvalue

    media_profile = media.GetProfiles()[0]

    profile_token = media_profile.token

    relative_move = ptz.create_type('RelativeMove')

    relative_move.ProfileToken = profile_token

    if relative_move.Translation is None:

    relative_move.Translation = ptz.GetStatus({'ProfileToken': profile_token}).Position

    if relative_move.Speed is None:

    relative_move.Speed = ptz.GetStatus({'ProfileToken': profile_token}).Position

    relative_move.Translation.PanTilt.x = re_pan

    relative_move.Translation.PanTilt.y = re_tilt

    relative_move.Translation.Zoom = re_zoom

    try:

    ptz.RelativeMove(relative_move)

    except Exception as e:

    return '已经无法再移动了'

    return 'finish'

    4、发现rtsp地址

    对应的方法是 GetStreamUri

    def get_rtsp(self):

    plc_ip = self.kwargs_dict['plc_ip']

    plc_port = int(self.kwargs_dict['plc_port'])

    mycam = ONVIFCamera(plc_ip, plc_port, self.name, self.password)

    media = mycam.create_media_service()

    zeep.xsd.simple.AnySimpleType.pythonvalue = self.zeep_pythonvalue

    media_profile = media.GetProfiles()

    token = media_profile[0].token

    # 实例化GetStreamUri对象

    obj = media.create_type('GetStreamUri')

    obj.StreamSetup = {'Stream': 'RTP-Unicast', 'Transport': {'Protocol': 'RTSP'}}

    obj.ProfileToken = token

    res_uri = media.GetStreamUri(obj)['Uri']

    return res_uri

    想要播放rtsp内容,进行分析的话,直接使用opencv就OK了。

    展开全文
  • 安防摄像头快速接入互联网直播服务器背景描述接入流媒体服务器实现原理rtsp转rtmp服务器实现原理测试方法QQ交流群:697773082 背景描述 在远古时代,互联网刚开始发展的时候,世界上出现了一种叫做IPC的东西,它...

    转载请注明出处:https://blog.csdn.net/impingo
    项目地址:https://github.com/im-pingo/pingos
    项目官网:http://pingos.io

    背景描述

    在远古时代,互联网刚开始发展的时候,世界上出现了一种叫做IPC的东西,它可以通过TCP或者UDP将视频数据传送给播放器。开始的时候人们惊叹这种技术带来的便利,因为人们终于可以在自己电脑上安装播放器然后观看IPC捕获的画面。
    随着互联网的普及和智能手机的普及,人们的欲望也在野蛮生长,终于他们不再满足于在固定的一台电脑前观看IPC监控的视频。而是希望随时随地可以看到想看的IPC直播内容。
    有些厂商意识到了这一点,前些年各大安防厂商开始支持输出rtmp协议,这就很方便的能够与互联网对接。
    更有一些互联网公司针对家用和商用场景直接就出了一些互联网安防设备,在他们平台申请个账号,购买设备直接联网。如360水滴摄像头、海康萤石等等。
    但是由于世界上遗留的IPC设备实在太多,无法做到给每一台设备都实现rtmp协议,这种情况下就需要我们将IPC支持的rtsp协议转换成rtmp协议了。

    接入流媒体服务器

    支持rtmp协议的安防监控设备是这样接入流媒体服务器的:

    rtmp
    rtmp/http-flv/hls
    rtmp/http-flv/hls
    安防摄像头
    公网rtmp服务器
    浏览器
    手机

    不支持rtmp协议的安防设备是这样接入流媒体服务器的:

    rtsp
    rtmp
    rtmp/http-flv/hls
    rtmp/http-flv/hls
    安防摄像头
    ffmpeg
    公网rtmp服务器
    浏览器
    手机

    需要注意的是,图二中使用ffmpeg将rtsp协议转换成rtmp协议
    为了方便实施,可以利用ffmpeg命令行工具直接做协议转换。
    如下命令:

    ffmpeg -i rtsp://xxxxxx -vcodec copy -acodec aac -f flv rtmp://ip/app/stream-name
    

    这样做的问题在于,如果你的安防设备过多,你需要手动开启很多个ffmpeg任务。而且如果你新增或者减少一些设备,还要去修改你的ffmepg 任务,除非你去开发一套自动伸缩的系统来管理这些任务。
    有没有一种比较简单,不需要开发工作又自动化的方式呢?有!!!

    实现原理

    rtsp拉流
    rtmp拉流
    rtmp/http-flv/hls
    rtmp/http-flv/hls
    安防设备
    内外双网卡rtmp服务器
    公网rtmp服务器
    浏览器
    手机

    触发流程是这样的:

    播放器公网rtmp服务器双网卡rtmp服务器安防设备播放请求(rtmp/http-flv/hls)判断如果播放器请求的流不在本机器上则向双网卡rtmp服务器回源拉流拉流请求(rtmp)rtmp拉流返回流媒体数据(rtsp)返回流媒体数据(rtmp)返回流媒体数据播放器公网rtmp服务器双网卡rtmp服务器安防设备

    解释:
    关键之处在于“双网卡rtmp服务器”,这台服务器的功能是能够拉取rtsp流,同时能够将rtsp协议转换成rtmp协议。

    rtsp转rtmp服务器实现原理

    首先,搭建nginx-rtmp-module服务器,搭建流程参考我以前的博文分布式直播系统(二)【搭建单点rtmp\http-flv\hls流媒体服务器】

    exec_pull bash -c "ffmepg -i rtsp://$parg_ip/$parg_uri -vcodec copy -acodec aac -f flv rtmp://127.0.0.1/live/$name";
    

    使用这个配置可以在有观众请求进来时,nginx-rtmp服务器向目IPC设备发起rtsp拉流,并且将rtsp协议转换成rtmp协议回推给本机。等待公网服务器过来拉流。

    如果IPC设备rtsp地址为:rtsp://192.168.1.2/stream/1
    双网卡rtmp服务器的公网地址为:34.2.1.2
    公网rtmp服务器地址为:34.2.1.3

    双网卡rtmp服务器配置模板如下:

    user  root;
    daemon on;
    master_process on;
    worker_processes  1;
    #worker_rlimit 4g;
    #working_directory /usr/local/openresty/nginx/logs;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    error_log  logs/error.log  info;
    
    worker_rlimit_nofile 102400;
    worker_rlimit_core   2G;
    working_directory    /tmp;
    
    #pid        logs/nginx.pid;
    
    events {
        use epoll;
        worker_connections  1024;
        multi_listen unix:/tmp/http 80;
        multi_listen unix:/tmp/rtmp 1935;
    }
    
    stream_zone buckets=1024 streams=4096;
    
    rtmp {
        log_format log_bandwidth '{"app":"$app","name":"$name","bitrate":$bitrate,"args":"$args","timestamp":$ntp,"ts":"$time_local","type":"$command","remote_addr":"$remote_addr","domain":"$domain"}';
        access_log logs/bandwidth.log log_bandwidth trunc=60s;
    
        server {
            listen 1935;
            serverid 000;
            out_queue 2048;
       
            application live {
                rtmp_auto_pull on;
                rtmp_auto_pull_port unix:/tmp/rtmp;
    
    #           live_record on;
    #live_record_path /tmp/record;
    
    #            recorder r1{
    #                record all;
    #                record_path /tmp/record;
    #            }
    
                exec_pull bash -c "ffmepg -i rtsp://$parg_ip/$parg_uri -vcodec copy -acodec aac -f flv rtmp://127.0.0.1/live/$name";
    
                live on;
                hls on;
                hls_path /tmp/hls;
                hls_fragment 4000ms;
                hls_max_fragment 6000ms;
                hls_playlist_length 12000ms;
                hls_type event;
    
                hls2memory on;
                mpegts_cache_time 20s;
    
                hls2_fragment 1300ms;
                hls2_max_fragment 1600ms;
                hls2_playlist_length 3900ms;
    
                wait_key on;
                wait_video on;
                cache_time 3s;
                low_latency off;
                fix_timestamp 0s;
    # h265 codecid, default 12
                hevc_codecid  12;
            }
        }
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_X-Forwarded-For" "$http_X-Real-IP" "$host"';
    
    
        access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #reset_server_name www.test1.com www.test2.com;
        #gzip  on;
        server {
             listen 80;
            location /rtmp_stat {
                rtmp_stat all;
                rtmp_stat_stylesheet /stat.xsl;
            }
    
            location /xstat {
                rtmp_stat all;
            }
    
            location /sys_stat {
                sys_stat;
            }
    
            location /control {
                rtmp_control all;
            }
             location /live {
                flv_live 1935;
             }
             location /ts {
                ts_live 1935 app=live;
             }
             location /hls {
                # Serve HLS fragments
                 types {
                     application/vnd.apple.mpegurl m3u8;
                     video/mp2t ts;
                 }
                 root /tmp;
                 expires -1;
                 add_header Cache-Control no-cache;
                 add_header 'Access-Control-Allow-Origin' '*';
             }
    
            location /hls2 {
                 hls2_live 1935 app=live;
                 add_header 'Access-Control-Allow-Origin' '*';
                 add_header Cache-Control no-cache;
             }
             location / {
                 chunked_transfer_encoding on;
                 root html/;
             }
        }
    }
    

    公网服务器配置模板:

    user  root;
    daemon on;
    master_process on;
    worker_processes  1;
    #worker_rlimit 4g;
    #working_directory /usr/local/openresty/nginx/logs;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    error_log  logs/error.log  info;
    
    worker_rlimit_nofile 102400;
    worker_rlimit_core   2G;
    working_directory    /tmp;
    
    #pid        logs/nginx.pid;
    
    events {
        use epoll;
        worker_connections  1024;
        multi_listen unix:/tmp/http 80;
        multi_listen unix:/tmp/rtmp 1935;
    }
    
    stream_zone buckets=1024 streams=4096;
    
    rtmp {
        log_format log_bandwidth '{"app":"$app","name":"$name","bitrate":$bitrate,"args":"$args","timestamp":$ntp,"ts":"$time_local","type":"$command","remote_addr":"$remote_addr","domain":"$domain"}';
        access_log logs/bandwidth.log log_bandwidth trunc=60s;
    
        server {
            listen 1935;
            serverid 000;
            out_queue 2048;
       
            application live {
                rtmp_auto_pull on;
                rtmp_auto_pull_port unix:/tmp/rtmp;
    
    #           live_record on;
    #live_record_path /tmp/record;
    
    #            recorder r1{
    #                record all;
    #                record_path /tmp/record;
    #            }
    
    #            exec_publish bash -c "ffmepg -i rtmp://127.0.0.1/live/$name -c copy /tmp/mp4/$name-$starttime.mp4";
                pull rtmp://34.2.1.2/live app=live; # 双网卡rtmp服务器地址
                live on;
                hls on;
                hls_path /tmp/hls;
                hls_fragment 4000ms;
                hls_max_fragment 6000ms;
                hls_playlist_length 12000ms;
                hls_type event;
    
                hls2memory on;
                mpegts_cache_time 20s;
    
                hls2_fragment 1300ms;
                hls2_max_fragment 1600ms;
                hls2_playlist_length 3900ms;
    
                wait_key on;
                wait_video on;
                cache_time 3s;
                low_latency off;
                fix_timestamp 0s;
    # h265 codecid, default 12
                hevc_codecid  12;
            }
        }
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_X-Forwarded-For" "$http_X-Real-IP" "$host"';
    
    
        access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #reset_server_name www.test1.com www.test2.com;
        #gzip  on;
        server {
             listen 80;
            location /rtmp_stat {
                rtmp_stat all;
                rtmp_stat_stylesheet /stat.xsl;
            }
    
            location /xstat {
                rtmp_stat all;
            }
    
            location /sys_stat {
                sys_stat;
            }
    
            location /control {
                rtmp_control all;
            }
             location /live {
                flv_live 1935;
             }
             location /ts {
                ts_live 1935 app=live;
             }
             location /hls {
                # Serve HLS fragments
                 types {
                     application/vnd.apple.mpegurl m3u8;
                     video/mp2t ts;
                 }
                 root /tmp;
                 expires -1;
                 add_header Cache-Control no-cache;
                 add_header 'Access-Control-Allow-Origin' '*';
             }
    
            location /hls2 {
                 hls2_live 1935 app=live;
                 add_header 'Access-Control-Allow-Origin' '*';
                 add_header Cache-Control no-cache;
             }
             location / {
                 chunked_transfer_encoding on;
                 root html/;
             }
        }
    }
    

    测试方法

    配置模板里和下面出现的ip地址和ipc的rtsp地址都是为了方便描述虚构的,你要根据自己的实际情况配置真实地址

    从公网rtmp服务器播放视频:
    rtmp://34.2.1.3/live/s0?ip=192.168.1.2&uri=/strea/0
    http://34.2.1.3/live/s0?ip=192.168.1.2&uri=/strea/0

    QQ交流群:697773082

    QQ交流群:697773082

    展开全文
  • 介绍 目前在安防行业中,GB28181协议越来越被重视,也越来越通用,越来越稳定。各个安防设备厂家已经...本文说的是通过GB28181协议,实现将安防摄像头接入专网或互联网,实现web端、移动端、微信无插件直播。GB281...

     

    介绍

    目前在安防行业中,GB28181协议越来越被重视,也越来越通用,越来越稳定。各个安防设备厂家已经基本都支持GB28181协议,通过GB28181协议可以实现获取设备的视频视频、录像数据、云台控制、报警检测、设备级联等等逻辑,基本涵盖了所有行业内的需求。
    本文说的是通过GB28181协议,实现将安防摄像头接入专网或互联网,实现web端、移动端、微信无插件直播。GB28181协议获取的视频流为PS封装的RTP数据包,不能直接被web端播放。想要实现web端无插件直播,必须将PS数据包解封装,再转成RTMP/FLV/HLS等直播流格式分发给客户端。

     

    自己开发还是选择现有方案

    如果自己实现一套完整的GB28181平台,就需要先读完GB28181标准协议,首先实现协议上SIP命令交互,这里比较麻烦的是各个厂家、各种型号设备或平台实现的可能有些诧异,都需要做到兼容,是个比较漫长的调试过程。其次是实现视频流解分装,并实现一套流媒体分发服务,将解出来的视频流通过流媒体服务分发。最后是web端播放器最好自己在优化下重连、缓存策略等。总的来说实现一套优秀的GB28181流媒体服务平台是个工作量比较大的工程。

    对于在视频监控方面经验不是很丰富的公司,建议直接选择一套成熟的GB28181流媒体服务。
    这里推荐LiveGBS,它是一套符合现代安防,实现web、微信等全平台直播、回放等功能的GB28181服务,功能完善,兼容各大厂家的GB28181设备与平台。
    在这里插入图片描述
    基本可以满足所有安防视频方面的需求,支持用户二次开发、功能定制等需求。

     

     

    展开全文
  • 目前,市面上有各种各样的安防摄像头可供我们选择,我该选择哪种呢?从哪几个方面来考虑?模拟摄像头还是数字摄像头?首先要考虑的是,你是否愿意配置路由器或WIFI,也就是说,处理网络相关的事情,如果愿意,可以...
  • 介绍 目前在安防行业中,GB28181协议越来越被重视,也越来越通用,越来越稳定。...本文说的是通过GB28181协议,实现将安防摄像头接入专网或互联网,实现web端、移动端、微信无插件直播。GB28181协议获取的视频流为P...
  • 2月7日消息,据报道,目前安防摄像头厂商所用的主控芯片、IPC SoC、存储芯片、WiFi芯片等核心零部件均出现缺货情况,主要是上游晶圆、封测产能紧张导致的半导体行业缺货。其中,存储芯片缺货最为严重,其次是主控...
  • 今天360传闻也要做安防摄像头了。 靠谱指数 360不日前已经上线了“家庭卫士”的官方网站。官方把它定义成: 一款不需要连接电脑,使用Wi-Fi无线联网的摄像头,配合360家庭卫士手机客户端,您可以随时随地看见家里...
  • 介绍 目前在安防行业中,GB28181协议越来越被重视,也越来越通用,越来越稳定。...本文说的是通过GB28181协议,实现将安防摄像头接入专网或互联网,实现web端、移动端、微信无插件直播。GB28181协议获取的视频流为P...
  • 传统大华海康宇视安防摄像头RTSP流如何转webrtc直播低延时无插件浏览器视频播放1、问题场景2、WEBRTC延时对比3、LiveNVR支持WEBRTC输出4、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1、问题场景 需要低延时的视频流监控...
  • GB28181流媒体服务 具体GB28181安防摄像头WEB直播介绍参考 https://www.liveqing.com/docs/products/LiveGBS.html 国标通道列表 树视图模式 播放演示 单击树节点即可播放 ...
  • P2P安防摄像头、门禁

    2017-04-08 10:41:25
    有人解释为(端对端)peer to peer,有人解释为(点对点)point to point,其实两者想要表达的意思都一样,说白了,就是能让用户的客户端在不通过服务器转发的情况下就能连上摄像头查看视频和收发指令的技术。...
  • 由于互联网的飞速发展,传统安防摄像头的视频监控直播与互联网直播相结合是大势所趋。传统安防的直播大多在一个局域网内,在播放的客户端上也是有所限制,一般都需要OCX Web插件进行直播。对于安防监控的视频直播...
  • 随着雪亮工程、明厨亮灶、手机看店、智慧幼儿园监控等行业开始将传统的安防摄像头进行互联网、微信直播,我们知道摄像头直播的春天了。将安防摄像头或NVR上的视频流转成互联网直播常用的RTSP、RTMP、HTTP-FLV、HLS等...
  • 随着雪亮工程、明厨亮灶、手机看店、智慧幼儿园监控等行业开始将传统的安防摄像头进行互联网、微信直播,我们知道摄像头直播的春天了。将安防摄像头或NVR上的视频流转成互联网直播常用的RTMP、HTTP-FLV、HLS等流格式...
  • 深度摄像头(又称3D传感器)从视觉数据获取的角度提升机器感知能力。由于其具有一定的技术门槛,国内外涉足此研发的比较少。集中在国外有苹果、微软、谷歌、INTEL、Oculus、SONY,国内奥比中光、华捷艾米,图漾,...
  • 众多前沿领域的应用将越来越依赖深度摄像头,就好像VR、机器人、安防等为了得到更精准的体验,这也是为什么国际巨头都在布局于此的原因。深度摄像头(又称3D传感器)从视觉数据获取的角度提升机器感知能力。由于其...
  • 08-D-Link Komfy DKZ-201S 墙壁内嵌式 09-D-Link Omna 第一款支持 Apple's HomeKit platform的摄像头。 10-D-Link Pan & Tilt Day/Night Network Camera D-Link's security cam works well for basic real-time ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,186
精华内容 474
关键字:

安防摄像头