zoukankan      html  css  js  c++  java
  • 如何将监控画面嵌入微信公众号进行直播

    引言

    全民直播时代已经到来。现在的直播必然需要支持手机直播,如果能够嵌入到全面宠儿微信中,那就能深度民心了。从技术上而言,微信直播,自然需要使用H5页面。目前手机浏览器不支持RTSP、RTMP,想要在手机微信上直播那就需要HLS视频流。
    如果能够将小区、工程、学校、园区、街道等等某个区域内的所有监控摄像头实现网络直播,支持PC、手机同时随时随地观看,就实现了将传统监控行业转成网络直播。这里引入LiveQing团队开发的LiveNVR。LiveNVR是一套夸平台的软件运行在现场环境内的任意一台PC上,参考《将RTSP网络摄像机进行网页和微信直播的方案》。
    ##直播页面自定义开发##
    LiveNVR默认的直播、配置页面基本可以满足大部分客户的基本需求。对于部分用户可能需要更改页面展示,增加其他业务功能等需要,可以基于LiveNVR接口文档提供的RESTful接口进行自定义开发。LiveNVR默认的展示页面也是基于这些接口做的开发,当然也可以作为Demo供开发人员开发自定义页面时参考。

    接口列表

    1. 登录LiveNVR

    • 接口: /api/v1/login?username=xxx&password=xxx
    • 参数
    名称 解释 含义
    Username 登陆用户名 -
    Password 登陆密码 经过MD5加密的字符
    • 返回: 200 OK or 401 Unauthorized

        {
           "LiveQing" : {
              "Body" : {
                 "Token" : "a19cb5f6e7d2449d8d24c8a0fc554ca7"
              },
              "Header" : {
                 "CSeq" : "1",
                 "ErrorNum" : "200",
                 "ErrorString" : "Success OK",
                 "MessageType" : "MSG_SC_SERVER_LOGIN_ACK",
                 "Version" : "1.0"
              }
           }
        }
      
    • 操作: 登录,登陆后会返回token,以后调用接口需要在cookie中携带token信息“token=a19cb5f6e7d2449d8d24c8a0fc554ca7”

    2. 注销登陆

    • 接口: /api/v1/logout

    • 返回: 200 OK 401 Unauthorized

        {
           "LiveQing" : {
              "Header" : {
                 "CSeq" : "1",
                 "ErrorNum" : "200",
                 "ErrorString" : "Success OK",
                 "MessageType" : "MSG_SC_SERVER_LOGOUT_ACK",
                 "Version" : "1.0"
              }
           }
        }
      
    • 操作: 再次请求接口需要重新登陆

    3. 修改密码

    • 接口: /api/v1/modifypassword?oldpassword=xxx&newpassword=xxx

    • 参数

    名称 含义 备注
    Oldpassword 旧密码 经过MD5加密的字符
    Newpassword 新密码 经过MD5加密的字符
    • 返回: 200 OK or 401

        {
           "LiveQing" : {
              "Body" : {
                 "Token" : "8b65982a99664d19bcccc35ff8d2acaf"
              },
              "Header" : {
                 "CSeq" : "1",
                 "ErrorNum" : "200",
                 "ErrorString" : "Success OK",
                 "MessageType" : "MSG_SC_SERVER_MODIFY_PASSWORD_ACK",
                 "Version" : "1.0"
              }
           }
        }
      
    • 操作: 修改密码成功会返回新的token

    4. 获取LiveNVR服务信息

    • 接口:/api/v1/getserverinfo
    • 返回
    名称 含义 备注
    Server 服务器软件版本信息 -
    RunningTime 服务器累计运行时长信息 -
    Hardware 服务器硬件版本信息 -
    InterfaceVersion 接口服务版本信息 -
    {
       "LiveQing" : {
          "Body" : {
             "Hardware" : "x86",
             "InterfaceVersion" : "v1",
             "RunningTime" : "30 Days 0 Hours 1 Mins 40 Secs",
             "Server" : "EasyNVR/1.1 (Build/16.1020; Platform/Win32; State/Development; )"
          },
          "Header" : {
             "CSeq" : "1",
             "ErrorNum" : "200",
             "ErrorString" : "Success OK",
             "MessageType" : "MSG_SC_SERVER_INFO_ACK",
             "Version" : "1.0"
          }
       }
    }
    
    • 操作: 显示

    5. 【视频广场】显示所有在线通道预览

    • 接口:/api/v1/getchannels
    • 返回:
      1. 所有设备列表信息,在线&不在线 通道(包含快照信息)
      2. 通道名称、通道号、通道快照、通道是否在线
    名称 含义 备注
    Channel 通道号 通道号
    Name 通道名称 通道名称
    Online 是否在线 1在线/0离线
    SnapURL 快照地址 返回为快照的相对网络地址
    	{
    	   "LiveQing" : {
    	      "Body" : {
    	         "ChannelCount" : "2",
    	         "Channels" : [
    	            {
    	               "Channel" : 1,
    	               "Name" : "channel1",
    	               "Online" : 1,
    	               "SnapURL" : "/snap/1/2016-10-24/20161024125212.jpg"
    	            },
    	            {
    	               "Channel" : 2,
    	               "Name" : "channel2",
    	               "Online" : 0,
    	               "SnapURL" : ""
    	            }
    	         ]
    	      },
    	      "Header" : {
    	         "CSeq" : "1",
    	         "ErrorNum" : "200",
    	         "ErrorString" : "Success OK",
    	         "MessageType" : "MSG_SC_SERVER_GET_CHANNELS_ACK",
    	         "Version" : "1.0"
    	      }
    	   }
    	}
    
    • 操作: H5列表显示

    6. 播放单个通道直播

    • 接口:/api/v1/getchannelstream?channel=1&protocol=RTMP
    • 参数
    名称 含义 备注
    Channel 通道号 -
    Protocol 获取直播的协议 RTMP/HLS
    • 返回: 直播流地址URL

        {
           "LiveQing" : {
              "Body" : {
                 "ChannelName" : "通道名"
                 "URL" : "rtmp://{host}:10035/hls/stream_1"
              },
              "Header" : {
                 "CSeq" : "1",
                 "ErrorNum" : "200",
                 "ErrorString" : "Success OK",
                 "MessageType" : "MSG_SC_SERVER_GET_CHANNEL_STREAM_ACK",
                 "Version" : "1.0"
              }
           }
        }
      

    注:返回的URL中带有{host}占位符,{host}即为api接口请求中的IP字段,如果返回的URL为hls地址,那么直接为/hls/stream_1.m3u8地址,需要前端自动拼接成EasyNVR HTTP播放地址,比如EasyNVR的web访问地址为:http://192.168.66.189:10080/,那么返回的hls应该拼接为http://192.168.66.189:10080/hls/stream_1.m3u8,rtmp地址应该拼接为:rtmp://192.168.66.189:10035/hls/stream_1;

    • 操作:调用播放器进行播放

    7. 视频播放心跳

    • 接口: /api/v1/touchchannelstream?channel=1&line=local&protocol=rtmp

    • 参数: 同接口6

    • 返回: 直播流地址

        {
           "LiveQing" : {
              "Body" : {
                 "ChannelName" : "通道名"
                 "URL" : "rtmp://{host}:10035/hls/stream_1"
              },
              "Header" : {
                 "CSeq" : "1",
                 "ErrorNum" : "200",
                 "ErrorString" : "Success OK",
                 "MessageType" : "MSG_SC_SERVER_TOUCH_CHANNEL_STREAM_ACK",
                 "Version" : "1.0"
              }
           }
        } 
      
    • 操作:播放视频心跳,60秒内发送一次,否则自动停止推流

    8. 获取LiveNVR基本配置信息

    • 接口: /api/v1/getbaseconfig
    • 返回: 基础配置信息表
    名称 解释 备注
    ServiceLanPort EasyNVR服务监听端口 ReadOnly
    ServiceLanIP EasyNVR服务本地地址 ReadOnly
    ServiceWanIP EasyNVR服务公网端口 暂时不启作用
    ServiceWanPort EasyNVR服务公网地址 暂时不启作用
    ChannelSnapInterval 通道快照间隔 单位为分钟
    NginxRTMPPort EasyNVR配套的rtmp服务器端口 默认10035
    	{
    	   "LiveQing" : {
    	      "Body" : {
    	         "ChannelSnapInterval" : "120",
    	         "NginxRTMPPort" : "10035",
    	         "ServiceLanIP" : "192.168.66.222; 127.0.0.1; ",
    	         "ServiceLanPort" : "10010",
    	         "ServiceWanIP" : "none-config",
    	         "ServiceWanPort" : "10010"
    	      },
    	      "Header" : {
    	         "CSeq" : "1",
    	         "ErrorNum" : "200",
    	         "ErrorString" : "Success OK",
    	         "MessageType" : "MSG_SC_SERVER_BASE_CONFIG_ACK",
    	         "Version" : "v1"
    	      }
    	   }
    	}
    
    • 操作:显示

    9. 设置LiveNVR基本配置信息

    • 接口: /api/v1/setbaseconfig?ChannelSnapInterval=120&NginxRTMPPort=10035&ServiceLanPort=10010&ServiceWanIP=“none-config”&ServiceWanPort=10010

    • 参数:

    • 返回: 200 OK

        {
           "LiveQing" : {
              "Header" : {
                 "CSeq" : "1",
                 "ErrorNum" : "200",
                 "ErrorString" : "Success OK",
                 "MessageType" : "MSG_SC_SERVER_SET_BASE_CONFIG_ACK",
                 "Version" : "1.0"
              }
           }
        }
      
    • 操作:显示配置成功,重启后生效

    10. 发现Onvif设备

    • 接口: /api/v1/discoverdevices

    • 返回: 200 OK

        {
           "LiveQing" : {
              "Body" : {
                 "ChannelCount" : "1",
                 "Channels" : [
                    {
                       "IP" : "192.168.66.222",
                       "Onvif" : "/onvif/devices",
                       "Port" : 8080
                    }
                 ]
              },
              "Header" : {
                 "CSeq" : "1",
                 "ErrorNum" : "200",
                 "ErrorString" : "Success OK",
                 "MessageType" : "MSG_SC_SERVER_DISCOVER_DEVICES_ACK",
                 "Version" : "1.0"
              }
           }
        }
      

    11. 探测设备信息

    • 接口: /api/v1/probedevice?ip=192.168.66.222&username=admin&password=admin

    • 参数:

    名称 含义 备注
    Username 登陆用户名 设备用户名
    Password 登陆密码 设备密码(明文)

    返回:
     200 OK
    {
    “LiveQing” : {
    “Body” : {
    “IP” : “192.168.66.222”,
    “Onvif” : “/onvif/devices”,
    “Password” : “admin”,
    “Port” : “8080”,
    “Rtsp” : “rtsp://192.168.66.222:554/11”,
    “UserName” : “admin”
    },
    “Header” : {
    “CSeq” : “1”,
    “ErrorNum” : “200”,
    “ErrorString” : “Success OK”,
    “MessageType” : “MSG_SC_SERVER_PROBE_DEVICE_ACK”,
    “Version” : “1.0”
    }
    }
    }

    12. Onvif云台控制

    • 接口:/api/v1/ptzcontrol?channel=1&actiontype=continuous&command=down&speed=5&protocol=onvif
    • 参数:
    名称 含义 备注
    channel 通道ID 例:1
    actiontype 动作类型 continuous或者single
    command 动作命令 stop停止、up向上移动、down向下移动、left向左移动、right向右移动、zoomin、zoomout、focusin、focusout、aperturein、apertureout
    speed 动作速度 例如:5
    protocol 摄像机接入的协议 暂时仅支持ONVIF接入的摄像机
    reserve 保留 暂未使用

    只有Onvif类型接入的设备才能支持云台控制功能,同时,设备必须有云台,他才会转动;

    13. 单个通道配置

    • 接口: /api/v1/setchannelconfig?Cdn=&Channel=2&Enable=0&IP=192.168.66.22&Name=channel2&Onvif=”/device/service”&Password=admin&Port=8080&Protocol=RTSP&Rtsp=”rtsp//192.168.66.22/22”&UserName=admin&OnDemand=1&Audio=1

    • 参数

    名称 含义 备注
    Channel 设置的通道号 例如:1
    Enable 通道是否启用 1启用、0禁用
    IP 摄像机IP地址 例如:192.168.66.222
    Name 摄像机名称 例如:测试通道
    Port 摄像端口 例如:554、8080
    Protocol 摄像机接入的协议 ONVIF、RTSP
    Username 摄像机登陆用户名 例如:admin
    Password 摄像机登陆密码 例如:admin
    RTSP 摄像机的RTSP地址 例如:rtsp://192.168.66.222/11
    ONVIF 摄像机的Onvif地址 /onvif/devices
    Cdn 推送的CDN地址 rtmp://rtmp.aliyun.com/live/209?sign=faefabe&tm=20161005190329
    OnDemand 是否按需直播 1启用、0不启用
    Audio 是否启用音频输入 1启用、0不启用
    • 返回: 200 OK

        {
           "LiveQing" : {
              "Header" : {
                 "CSeq" : "1",
                 "ErrorNum" : "200",
                 "ErrorString" : "Success OK",
                 "MessageType" : "MSG_SC_SERVER_SET_CHANNEL_CONFIG_ACK",
                 "Version" : "1.0"
              }
           }
        }
      
    • 操作:显示配置成功,即时生效!

    14. 获取LiveNVR所有通道信息

    • 接口: /api/v1/getchannelsconfig

    • 返回: 通道列表数组信息

        {
           "LiveQing" : {
              "Body" : {
                 "ChannelCount" : "16",
                 "Channels" : [
                    {
                       "Cdn" : "",
                       "Channel" : 1,
                       "Enable" : 1,
                       "IP" : "192.168.66.222",
                       "Name" : "channel1",
                       "OnDemand" : 1,
                       "Online" : 1,
                       "Onvif" : "/onvif/devices",
                       "Password" : "admin",
                       "Port" : 8080,
                       "Protocol" : "RTSP",
                       "Rtsp" : "rtsp://192.168.66.222/11",
                       "UserName" : "admin",
                       "Audio" : 1
                    },
                    {
                       "Cdn" : "",
                       "Channel" : 2,
                       "Enable" : 0,
                       "IP" : "192.168.66.22",
                       "Name" : "channel2",
                       "OnDemand" : 1,
                       "Online" : 0,
                       "Onvif" : "/onvif/devices",
                       "Password" : "admin",
                       "Port" : 8080,
                       "Protocol" : "RTSP",
                       "Rtsp" : "rtsp://192.168.66.22/22",
                       "UserName" : "admin",
                       "Audio" : 1
                    },
                   ……
                 ]
              },
              "Header" : {
                 "CSeq" : "1",
                 "ErrorNum" : "200",
                 "ErrorString" : "Success OK",
                 "MessageType" : "MSG_SC_SERVER_GET_CHANNELS_CONFIG_ACK",
                 "Version" : "1.0"
              }
           }
        }
      
    • 操作:显示,单个通道可禁用/启用/修改配置

    17. 重启接口

    • 接口: /api/v1/restart
    • 返回: 200 OK
    • 操作: 显示成功

     

  • 相关阅读:
    [kuangbin带你飞]专题十六 KMP & 扩展KMP & ManacherK
    [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher J
    [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher I
    pat 1065 A+B and C (64bit)(20 分)(大数, Java)
    pat 1069 The Black Hole of Numbers(20 分)
    pat 1077 Kuchiguse(20 分) (字典树)
    pat 1084 Broken Keyboard(20 分)
    pat 1092 To Buy or Not to Buy(20 分)
    pat 1046 Shortest Distance(20 分) (线段树)
    pat 1042 Shuffling Machine(20 分)
  • 原文地址:https://www.cnblogs.com/kumukim/p/11006613.html
Copyright © 2011-2022 走看看