RTSP、GB28181监控摄像头实现WEB、微信直播的服务

引言

全民直播时代已经到来。现在的直播必然需要支持手机直播,如果能够嵌入到全面宠儿微信中,那就能深度民心了。从技术上而言,微信直播,自然需要使用H5页面。目前手机浏览器不支持RTSP、RTMP,想要在手机微信上直播那就需要HLS视频流。
如果能够将小区、工程、学校、园区、街道等等某个区域内的所有监控摄像头实现网络直播,支持PC、手机同时随时随地观看,就实现了将传统监控行业转成网络直播。这里引入LiveQing团队开发的LiveNVR。

直播页面自定义开发

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
  • 操作: 显示成功

下载地址

https://www.liveqing.com/docs/download/LiveNVR.html

获取更多信息

邮件:[email protected]

技术交流QQ群:947137753

咨询电话:15156896292(同微信)

WEB:www.liveqing.com

原文地址:https://www.cnblogs.com/kumukim/p/10976925.html

时间: 2024-10-09 23:52:20

RTSP、GB28181监控摄像头实现WEB、微信直播的服务的相关文章

关于云事通监控摄像头手机微信直播系统业务介绍

云眼微视监控摄像头手机微信视频直播系统是将实时视频通过微信页面进行直播,并多方上百方同时访问,手机微信公众号可以直播将监控设备(IP Camera.DVS.DVR.NVR.3G.移动智能手机等硬件)的视频通过云眼微视云运营平台转发,通过手机.电脑设备的监控视频直播访问服务,支持各个厂家平台对接,可接入第三方监控设备:通过Onvif视频转码网关提取监控摄像头视频流,进行服务器端转发,实现跨平台无插件的网页监控视频调用,PC端.安卓.IOS苹果等主流终端直接访问,打开同一个网页地址都可以观看,同时也

海康监控摄像头接入到微信公众号直播流程

注意:1.接入前需要安装工具软件(海康摄像机搜索),安装包在压缩文件中(如已知摄像机IP,不用安装摄像机搜索工具,可直接IE访问摄像机) 2.用于调试的电脑.监控摄像头.嵌入式网关必须在同一局域网中方可进行下面操作 一.设置摄像机参数 设置摄像机固定IP 1.打开HikvisionTools软件,单击设备网络搜索-双击需接入的设备IP-进入WEB设置界面. 2.输入用户名和密码后登录 3.设置-基本配置-TCP/IP---设置成固定IP,然后保存-重启(IP地址根据当前局域网网段设置) 4.重启

微信收费直播(如何做付费的微信直播)教程

原创教程.今天写了两份直播教程文章. 场景描述:在做微信直播时,希望实现付费观看功能,即用户付费后,再返回直播的观看页面: 场景应用:在线教学类的课程.在线教育类网站.个人做微信的收费直播. 首先,还是上实际的效果图.观看者的观看流程是:打开直播页(或扫直播页二维码)->付费观看,支付观看的费用 ->观看正式的课程直播. : 具体如何实现这种效果呢: 第1步. 登录保利威视云直播平台( http://www.polyv.net ),创建一个直播频道 第2步. 登录保利威视云直播管理平台 >

在Web微信应用中使用博客园RSS以及Quartz.NET实现博客文章内容的定期推送功能

本篇随笔介绍在Web微信应用中使用博客园RSS以及Quartz.NET实现博客文章内容的定期推送功能,首先对Quartz.NET进行一个简单的介绍和代码分析,掌握对作业调度的处理,然后对博客园RSS内容的处理如何获取,并结合微信消息的群发接口进行内容的发送,从而构建了一个在Web应用中利用作业调度来进行消息发送的业务模型. Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)

实现手机扫描二维码页面登录,类似web微信-第一篇,业务分析

转自:http://www.cnblogs.com/fengyun99/p/3541249.html 关于XMPP组件的文章,先休息两天,好歹已经完整的写了一份. 这两天,先实现一套关于web微信扫描二维码页面登录的试验,因为这种模式在我们的很多业务场景里大有前途. 首先介绍一下web微信登录的过程 手机必须运行微信,并且合法登录 打开web微信的页面,展示一个二维码 用手机微信的扫描功能扫描该二维码 页面立即显示手机已扫描 手机显示是否确认登录,点击确认 页面登录 这个过程将传统的web登录转

分析一下H5直播、微信直播、抓娃娃、低延时的方案

微信直播,HTML5直播,主要方案有如下几种: 1,基于hls切片直播,前前是应用的主流,服务器可以选fms,wowza,nginx,srs之类 优点:集成方便,支持度高,兼容性好,主流手都支持,是目前直播技术主流. 缺点:延时大,一般服务器可以控制切片时长(延时可以控制在15-30秒之间) 2,基于浏览器mse技术,目前端技术上有B站的flv解码器.后端技术srs之类. 优点:集成方便,兼容性一般,原有技术平台可以保留,延时可以控制在10秒内 缺点:(主要是部分浏览器不支持mse,),目前IO

WEB微信协议详注(待续)

当初写微信机器人也是为了个红包,虽然红包拿到了,过程还是蛮有意思的,下面给下详细说明. 微信入口主要有两个(wx和wx2),wx老号   wx2新号,我微信是老号了,为了测试方便采用的是老号入口. 1.入口抓包,获取uuid 开启浏览器F12功能,对https://wx.qq.com抓包,拿到我们需要的入口地址,获取uuid 参数说明:appid                  固定值 redirect_uri         固定值 fun                      固定值

Python 爬虫案例-web微信登陆与消息发送

首先回顾下网页微信登陆的一般流程 1.打开浏览器输入网址 2.使用手机微信扫码登陆 3.进入用户界面 1.打开浏览器输入网址 首先打开浏览器输入web微信网址,并进行监控: https://wx.qq.com/ 可以发现网页中包含了一个新的url,而这个url就是二维码的来源. https://login.weixin.qq.com/qrcode/wbfd1Z-a0g== 可以猜测一下获取url的一般网址就是https://login.weixin.qq.com/qrcode,而wbfd1Z-a

基于Flask 实现Web微信登陆

网页版微信登陆网址 https://login.wx.qq.com/ 获取微信登陆的二维码 在浏览器中访问登陆接口 https://login.wx.qq.com/ 我们查找二维码的图片可以看到 其中src为 https://login.weixin.qq.com/qrcode/Yd5dz5xUnw==" 而我们每次刷新都会生成一个新的二维码 多刷新几次我们会发现二维码中src最后面的qrcode/......值每次都会改变 ,索引肯定会有一些请求可以获取这些值 我们继续追踪发现下面的地址会返回