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

02-27 1401阅读 0评论

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

海康实时监控预览视频流接入web,海康实时监控预览视频流接入web,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,接口,第1张
(图片来源网络,侵删)

海康开放平台海康威视合作生态致力打造一个能力开放体系、两个生态圈,Hikvision AI Cloud开放平台是能力开放体系的核心内容。它是海康威视基于多年在视频及物联网核心技术积累之上,融合AI、大数据、云计算等技术,为合作伙伴提供的一个二次开发及创新的平台。海康实时监控预览视频流接入web,icon-default.png?t=N7T8,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,接口,第2张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 path = new HashMap(2) {
            {
                put("https://", previewUrlsApi);//根据现场环境部署确认是http还是https
            }
        };
        String contentType = "application/json";
        ObjectMapper mapper = new ObjectMapper();
        Map 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 path = new HashMap(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、大数据、云计算等技术,为合作伙伴提供的一个二次开发及创新的平台。海康实时监控预览视频流接入web,icon-default.png?t=N7T8,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,接口,第2张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

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

    可通过分页获取监控点资源获取

    actionnumberTrue0-开始 ,1-停止

    注:GOTO_PRESET命令下填任意值均可转到预置点,建议填0即可

    commandstringTrue不区分大小写

    说明:

    LEFT 左转

    RIGHT右转

    海康实时监控预览视频流接入web,海康实时监控预览视频流接入web,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,接口,第4张
    (图片来源网络,侵删)

    UP 上转

    DOWN 下转

    ZOOM_IN 焦距变大

    ZOOM_OUT 焦距变小

    LEFT_UP 左上

    LEFT_DOWN 左下

    海康实时监控预览视频流接入web,海康实时监控预览视频流接入web,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,接口,第5张
    (图片来源网络,侵删)

    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到预置点

    speednumberFalse云台速度,取值范围为1-100,默认50
    presetIndexnumberFalse预置点编号,可通过查询预置点信息接口获取整数,通常在300以内

    2.前端代码

    海康开放平台海康威视合作生态致力打造一个能力开放体系、两个生态圈,Hikvision AI Cloud开放平台是能力开放体系的核心内容。它是海康威视基于多年在视频及物联网核心技术积累之上,融合AI、大数据、云计算等技术,为合作伙伴提供的一个二次开发及创新的平台。海康实时监控预览视频流接入web

    • 直接拿官方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 播放器。

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

免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,1401人围观)

还没有评论,来说两句吧...

目录[+]