海康实时监控预览视频流接入web

这篇具有很好参考价值的文章主要介绍了海康实时监控预览视频流接入web。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        我们采取的方案是后端获取视频流返回给前端,然后前端播放

海康开放平台海康威视合作生态致力打造一个能力开放体系、两个生态圈,Hikvision AI Cloud开放平台是能力开放体系的核心内容。它是海康威视基于多年在视频及物联网核心技术积累之上,融合AI、大数据、云计算等技术,为合作伙伴提供的一个二次开发及创新的平台。https://open.hikvision.com/docs/docId?productId=5c67f1e2f05948198c909700&version=%2Ff95e951cefc54578b523d1738f65f0a1&tagPath=%E5%AF%B9%E6%8E%A5%E6%8C%87%E5%8D%971.后端代码

1.1 获取设备编号

private static final String ARTEMIS_PATH = "/artemis";

/**
 * 视频设备信息
 */
public static String getCodeList(Integer page, Integer size, String host, String appKey, String appSecret) {
    {
        /* STEP1:设置平台参数,根据实际情况,设置host appkey appsecret 三个参数.*/
        ArtemisConfig.host = host;
        ArtemisConfig.appKey = appKey;
        ArtemisConfig.appSecret = appSecret;
        String previewUrlsApi = ARTEMIS_PATH + "/api/resource/v2/encodeDevice/search";
        Map<String, String> path = new HashMap<String, String>(2) {
            {
                put("https://", previewUrlsApi);//根据现场环境部署确认是http还是https
            }
        };
        String contentType = "application/json";

        ObjectMapper mapper = new ObjectMapper();
        Map<String, Object> map = new HashMap<>();
        map.put("pageNo", page);
        map.put("pageSize", size);
        String body = "";
        try {
            body = mapper.writeValueAsString(map);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);
    }
}

1.2 根据设备编号获取视频流

private static String getCameraPreviewUrl(String regionIndexCode, String protocol, String streamform,String host, String appKey, String appSecret) {
    /* STEP1:设置平台参数,根据实际情况,设置host apKey appSecret 三个参数.*/
    // artemis网关服务器ip端口
    ArtemisConfig.host = host;
    // 秘钥appKey
    ArtemisConfig.appKey = appKey;
    // 秘钥appSecret
    ArtemisConfig.appSecret = appSecret;

    /*** STEP2:设置OpenAPI接口的上下文*/
    final String artemisPath = "/artemis";
    final String previewUrlsApi = artemisPath + "/api/video/v2/cameras/previewURLs";
    Map<String, String> path = new HashMap<String, String>(2) {
        {
            //根据现场环境部署确认是http还是https
            put("https://", previewUrlsApi);
        }
    };
    /* STEP4:设置参数提交方式*/
    String contentType = "application/json";

    /*** STEP5:组装请求参数*/
    JSONObject jsonBody = new JSONObject();
    jsonBody.put("cameraIndexCode", regionIndexCode);
    //下面的参数是我用的参数,根据需要改成传输进来的参数
    jsonBody.put("streamType", 0);
    //hls返回m3u8
    jsonBody.put("protocol", "ws");
    jsonBody.put("transmode", 1);
    //jsonBody.put("streamform", "rtp");

    String body = jsonBody.toString();
    String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);
    return result;
}
  • 根据官方文档传输对应的参数 
  • 官方接口限制:为保证数据的安全性,取流URL设有有效时间,有效时间为5分钟。
  • 注意不同协议的限制不同,rtsp没得限制但前端播放麻烦,web端展示的话ws比较好

海康开放平台海康威视合作生态致力打造一个能力开放体系、两个生态圈,Hikvision AI Cloud开放平台是能力开放体系的核心内容。它是海康威视基于多年在视频及物联网核心技术积累之上,融合AI、大数据、云计算等技术,为合作伙伴提供的一个二次开发及创新的平台。https://open.hikvision.com/docs/docId?productId=5c67f1e2f05948198c909700&version=%2Ff95e951cefc54578b523d1738f65f0a1&tagPath=API%E5%88%97%E8%A1%A8-%E8%A7%86%E9%A2%91%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1-%E8%A7%86%E9%A2%91%E8%83%BD%E5%8A%9B

参数名称 数据类型 是否必须 参数描述
cameraIndexCode string True 监控点唯一标识,分页获取监控点资源接口获取返回参数cameraIndexCode
streamType integer False 码流类型,0:主码流<br>1:子码流<br>2:第三码流<br>参数不填,默认为主码流
protocol string False 取流协议(应用层协议)<br>“hik”:HIK私有协议,使用视频SDK进行播放时,传入此类型;<br>“rtsp”:RTSP协议;<br>“rtmp”:RTMP协议(RTMP协议只支持海康SDK协议、EHOME协议、ONVIF协议接入的设备;只支持H264视频编码和AAC音频编码);<br>“hls”:HLS协议(HLS协议只支持海康SDK协议、EHOME协议、ONVIF协议接入的设备;只支持H264视频编码和AAC音频编码);<br>“ws”:Websocket协议(一般用于H5视频播放器取流播放)。<br>参数不填,默认为HIK协议
transmode integer False 传输协议(传输层协议),0:UDP<br>1:TCP<br>默认是TCP<br>注:GB28181 2011及以前版本只支持UDP传输
expand string False 标识扩展内容,格式:key=value,<br>调用方根据其播放控件支持的解码格式选择相应的封装类型;<br>多个扩展时,以“&”隔开;<br>支持的内容详见附录F expand扩展内容说明
streamform string False 输出码流转封装格式,“ps”:PS封装格式、“rtp”:RTP封装协议。<br>当protocol=rtsp时生效,且不传值时默认为RTP封装协议。

1.3 控制设备

/**
 * 设备控制
 */
public static String controlling(String cameraIndexCode, Integer action, String command, Integer speed, Integer presetIndex) {
    {
        /** STEP1:设置平台参数,根据实际情况,设置host appkey appsecret 三个参数.*/
        ArtemisConfig.host = host; // artemis网关服务器ip端口
        ArtemisConfig.appKey = appKey;  // 秘钥appkey
        ArtemisConfig.appSecret = appSecret;// 秘钥appSecret
        String previewURLsApi = ARTEMIS_PATH + "/api/video/v1/ptzs/controlling";
        Map<String, String> path = new HashMap<String, String>(2) {
            {
                //根据现场环境部署确认是http还是https
                put("https://", previewURLsApi);
            }
        };
        String contentType = "application/json";
        JSONObject jsonBody = new JSONObject();
        try {
            jsonBody.put("cameraIndexCode", cameraIndexCode);
            jsonBody.put("action", action);
            jsonBody.put("command", command);
            if (speed != null) {
                jsonBody.put("speed", speed);
            }
            if (presetIndex != null) {
                jsonBody.put("presetIndex", presetIndex);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        String body = jsonBody.toString();
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType, null);
        return result;
    }
}
参数名称 数据类型 是否必须 参数描述
cameraIndexCode string True 监控点编号,
可通过分页获取监控点资源获取
action number True 0-开始 ,1-停止
注:GOTO_PRESET命令下填任意值均可转到预置点,建议填0即可
command string True 不区分大小写
说明:
LEFT 左转
RIGHT右转
UP 上转
DOWN 下转
ZOOM_IN 焦距变大
ZOOM_OUT 焦距变小
LEFT_UP 左上
LEFT_DOWN 左下
RIGHT_UP 右上
RIGHT_DOWN 右下
FOCUS_NEAR 焦点前移
FOCUS_FAR 焦点后移
IRIS_ENLARGE 光圈扩大
IRIS_REDUCE 光圈缩小
WIPER_SWITCH 接通雨刷开关
START_RECORD_TRACK 开始记录运行轨迹
STOP_RECORD_TRACK 停止记录运行轨迹
START_TRACK 开始运行轨迹
STOP_TRACK 停止运行轨迹;
以下命令presetIndex不可为空:
GOTO_PRESET到预置点
speed number False 云台速度,取值范围为1-100,默认50
presetIndex number False 预置点编号,可通过查询预置点信息接口获取整数,通常在300以内

2.前端代码

海康开放平台海康威视合作生态致力打造一个能力开放体系、两个生态圈,Hikvision AI Cloud开放平台是能力开放体系的核心内容。它是海康威视基于多年在视频及物联网核心技术积累之上,融合AI、大数据、云计算等技术,为合作伙伴提供的一个二次开发及创新的平台。https://open.hikvision.com/download/5c67f1e2f05948198c909700?type=20websocket 视频流,skill,音视频

  • 直接拿官方demo改一下就行

3.rtsp/ws/hls/htmp不同协议视频流的区别与优缺点

RTSP(Real-Time Streaming Protocol)

        RTSP 是一种应用层协议,用于控制媒体播放,而不是直接传输媒体数据。它通常与 RTP(实时传输协议)一起使用,RTP 负责传输媒体数据。

  • 优点:支持实时播放,用于实时流媒体传输。支持流式传输,允许播放器随时跳转到视频的不同部分。
  • 缺点:RTSP 本身不传输视频数据,而是控制数据,需要配合其他协议(如 RTP)来传输实际的媒体数据。对于防火墙和 NAT 穿透的支持有限,可能需要额外的设置和配置。

WS (WebSocket)

        WebSocket 是一种双向通信协议,可在单个 TCP 连接上进行全双工通信。

  • 优点:实时性好,支持双向通信。可以通过浏览器直接与服务器建立持久连接,无需频繁的 HTTP 请求。
  • 缺点:相对于传统的 HTTP 请求,WebSocket 在一些特殊环境下可能会受到限制,如防火墙和代理服务器的设置。

HLS (HTTP Live Streaming)

        HLS 是苹果公司提出的一种基于 HTTP 的流媒体传输协议,主要用于 iOS 设备和 Safari 浏览器播放。

  • 优点:支持自适应码率,可以根据网络情况调整视频质量。可以通过普通的 HTTP 服务器传输,易于部署和使用。
  • 缺点:延迟较高,通常在 10-30 秒之间。对于直播流,切片时间短会增加服务器负载,切片时间长会增加延迟。

RTMP (Real-Time Messaging Protocol)

        RTMP 是 Adobe Systems 提出的一种流媒体传输协议,主要用于 Flash 播放器。文章来源地址https://www.toymoban.com/news/detail-854251.html

  • 优点:实时性好,适用于实时直播。低延迟,通常在 1-3 秒之间。
  • 缺点:不被现代浏览器原生支持,需要额外的插件或支持。在移动设备上的兼容性较差,不适用于 iOS 设备和大部分移动浏览器。

到了这里,关于海康实时监控预览视频流接入web的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue中web端播放rtsp视频流(摄像头监控视频)(海康威视录像机)

    ffmpeg下载 https://ffmpeg.org/download.html 找ffmpeg-release-essentials.zip点击下载,下载完解压 ffmpeg.exe 程序运行 添加成功后验证是否生效任意地方打开cmd窗口输入 ffmpeg 打印如下表示成功 新建一个app.js文件,同级目录下npm安装 node-rtsp-stream 我是直接写在项目里了,你们可以单独写在外

    2024年04月25日
    浏览(37)
  • 安防监控项目---mjpeg-streamer视频图像显示(实时视频流实现)

    书接上期,我们已经实现了许多功能了,但是对于视频流的实时上传还未实现,本期主要分享的就是如何具体实现网页实时显示摄像头采集到的视频,从而实现安防中监控的功能,这个功能完成后呢,就只剩下一个功能需求了,那就是GPRS模块,能够实现危险报警的功能,也能

    2024年02月06日
    浏览(39)
  • Python 实现海康机器人工业相机 MV-CU060-10GM 的实时显示视频流及拍照功能

    一、背景介绍 1、最近项目中需要给客户对接海康机器人工业相机 MV-CU060-10GM; 2、客户要求通过部署的管理平台,可以在页面上实现如下功能: 1)相机视频流开始预览; 2)相机视频流停止预览; 3)相机拍照功能。 需求背景:客户需要对生产的产品进行定期抽样质检,其中

    2024年02月08日
    浏览(57)
  • Python海康威视SDK实现实时预览:快速构建高效视频监控系统

    Python海康威视SDK实现实时预览:快速构建高效视频监控系统 在当今社会,安全问题越来越受到人们的关注,越来越多的企业和机构开始建设视频监控系统。而Python作为一种高效、易用的编程语言,已经成为了许多开发人员的首选。本文将介绍如何使用Python海康威视SDK来实现实

    2024年02月14日
    浏览(36)
  • 【vue2】前端如何播放rtsp 视频流,拿到rtsp视频流地址如何处理,海康视频rtsp h264 如何播放

    最近在写vue2 项目其中有个需求是实时播放摄像头的视频,摄像头是 海康 的设备,搞了很长时间终于监控视频出来了,记录一下,放置下次遇到。文章有点长,略显啰嗦请耐心看完。 测试?测试什么?测试rtsp视频流能不能播放。 video mediaplay官网 即(VLC) 下载、安装完VLC后

    2024年02月05日
    浏览(39)
  • Windows上使用FFmpeg实现本地视频推送模拟海康协议rtsp视频流

    Nginx搭建RTMP服务器+FFmpeg实现海康威视摄像头预览: Nginx搭建RTMP服务器+FFmpeg实现海康威视摄像头预览_nginx rtmp 海康摄像头_霸道流氓气质的博客-CSDN博客 上面记录的是使用FFmpeg拉取海康协议摄像头的rtsp流并推流到流媒体服务器。 如果在其它业务场景下需要本地的视频文件模拟

    2024年02月12日
    浏览(29)
  • Unity内接入WebRTC视频流

    1.在Unity工程内导入“WebViewForWindow”插件,得到如图文件夹。 2.将该路径下的预制体拖到场景内的Canvas下 3.如果填入Url,直接Unity运行可直接加载网页(但是不适配我们本次功能需求,只做介绍) 4.我们需要通过http接口请求返回WebRTC流(如果是其他方式拿到WebRTC视频流流程一

    2024年02月01日
    浏览(34)
  • 在VUE框架的WEB网页端播放海康威视RTSP视频流完全方案

    1.服务器转流前端转码方案 服务器端先把RTSP流用Web Socket或WebRTC推送到前端,再通过WASM转码MP4播放。此方案虽号称是无插件方案,但是需要服务器支持,两次转码导致延迟较高,一般高达数秒甚至数分钟。此方案首屏画面显示很慢。因为需要服务器不断转码转流,对CPU和内存

    2024年02月05日
    浏览(28)
  • live555推送实时视频流

    1,linux 环境: 官网上下载,下载地址:http://www.live555.com/liveMedia/public/ live555 版本:“2018.12.14” 参考:http://www.live555.com/liveMedia/faq.html 这个FAQ要仔细阅读。 2,编译 根据不同的平台来配置,并生成对应的Makefile 2.1 ARM平台: 修改交叉编译工具 cp config.armlinux config.arm vi config.arm

    2023年04月08日
    浏览(69)
  • 安防视频管理平台GB设备接入EasyCVR, 如何获取RTMP与RTSP视频流

    安防视频监控平台EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,比如:视频监控直播、云端录像、云存储、录

    2024年02月15日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包