LiveNVR Onvif/RTSP流媒体服务

功能模块

设备接入

  • 支持RTSP/RTMP/HTTP-FLV/HLS等直播流接入

  • 支持Onvif协议接入设备;

  • 支持Onvif协议的发现以及探测;

实时直播

  • 支持通道定时快照;

  • 根据不同客户端平台进行全平台直播(Web、Android、iOS、H5);

  • 支持对接第三方CDN直播;

  • 支持推流第三方RTSP服务;

摄像机控制

  • 支持对摄像机进行Onvif PTZ控制;

  • 支持对摄像机进行Onvif焦距缩放控制;

配置管理

  • 支持Web管理;

  • 支持Web配置通道,预览等;

  • 支持GB28181国标级联;

二次开发接口说明

API采用Restful风格的Http协议,全部请求都使用Get方式,字符不区分大小写。基本结构如下:

http://<IP>:<Port>/api/<Version>/<Action>?<Param1>=<value>&<Param2>=<Value>&.....

参数

参数名称 定义 说明
IP Platform Address IP地址
Port Platform Port 通讯端口
Version API Version API版本
Action Action 执行的操作
Param Action Parameter 操作所使用的参数,可以有多个参数,每个参数对应一个Value。
Value Parameter Value 参数值,如果Value的字符串中出现&等特殊字符,则必须用””包住Value。

返回值

调用API会返回Json字符串,代表操作返回的结果

{
   "LiveQing" : {
      "Body" : {
         ……
      },
      "Header" : {
         "CSeq" : "1",
         "ErrorNum" : "200",
         "ErrorString" : "Success OK",
         "MessageType" : "MSG_SC_API_ACK",
         "Version" : "1.0"
      }
   }
}

接口列表

登录LiveNVR

  • 接口: /api/v1/login?username=xxx&password=xxx

  • 参数

    名称解释含义
    Username登陆用户名-
    Password登陆密码经过MD5加密的32位字符

  • 返回: 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”

注销登陆

  • 接口: /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"
            }
         }
      }
    
  • 操作: 再次请求接口需要重新登陆

修改密码

  • 接口: /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

获取LiveNVR服务信息

  • 接口:/api/v1/getserverinfo

  • 返回

    名称含义备注
    Server服务器软件版本信息-
    RunningTime服务器累计运行时长信息-
    Hardware服务器硬件版本信息-
    InterfaceVersion接口服务版本信息-

  • 报文

      {
      "LiveQing" : {
      	"Body" : {
      		"Hardware" : "x86",
      		"InterfaceVersion" : "v1",
      		"RunningTime" : "30 Days 0 Hours 1 Mins 40 Secs",
      		"Server" : "LiveNVR/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"
      	}
      }
      }
    
  • 操作: 显示

【视频广场】所有启用通道预览

  • 接口:/api/v1/getchannels[?channel=1]

  • 参数

    名称含义备注
    channel查询指定通道号的信息可选参数。不带channel参数或者channel小于0查看全部通道信息
    online通道在线状态(true、false)可选参数。
    start分页开始,从零开始可选参数。
    limit分页大小可选参数。
    q查询参数可选参数。

  • 返回:

    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列表显示

播放单个通道直播

  • 接口:/api/v1/getchannelstream?channel=1&protocol=FLV

  • 参数

    名称含义备注
    Channel通道号-
    Protocol获取直播的协议FLV/HLS/WS_FLV/RTMP/RTSP

  • 返回: 直播流地址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地址,需要前端自动拼接成LiveNVR HTTP播放地址,比如LiveNVR的web访问地址为:http://192.168.66.189:10800/,那么返回的hls应该拼接为http://192.168.66.189:10800/hls/stream_1.m3u8,rtmp地址应该拼接为:rtmp://192.168.66.189:10035/hls/stream_1;

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

获取LiveNVR基本配置信息

  • 接口: /api/v1/getbaseconfig

  • 返回: 基础配置信息表

    名称解释备注
    ServiceLanPortLiveNVR服务监听端口ReadOnly
    ServiceLanIPLiveNVR服务本地地址ReadOnly
    ServiceWanIPLiveNVR服务公网端口暂时不启作用
    ServiceWanPortLiveNVR服务公网地址暂时不启作用
    ChannelSnapInterval通道快照间隔单位为分钟
    RTMPPortLiveNVR配套的rtmp服务器端口默认10035
    RTSPPortLiveNVR配套的rtsp服务器端口默认0,表示没有开启rtsp服务

  • 报文

      {
         "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"
            }
         }
      }
    
  • 操作:显示

发现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"
            }
         }
      }
    

探测设备信息

  • 接口: /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"
      		}
      	}
      }
    

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类型接入的设备才能支持云台控制功能,同时,设备必须有云台,他才会转动;

单个通道配置

  • 接口: /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&Reserve2=0

  • 参数

    名称 含义备注
    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
    TransProtocol传输协议 选项:TCP、UDP
    Cdn推送的CDN地址rtmp://rtmp.aliyun.com/live/209?sign=faefabe&tm=20161005190329
    OnDemand是否按需直播1启用、0不启用
    Audio是否启用音频输入1启用、0不启用
    Reserve2保留参数21启用、0不启用

  • 返回: 200 OK

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

获取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" : 0
                     "Reserve2" : 0
                  },
                  {
                     "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"
            }
         }
      }
    
  • 操作:显示,单个通道可禁用/启用/修改配置

抓取图片

  • 接口:/api/v1/getsnap?channel=1

  • 参数:

    名称含义备注
    channel通道号-

  • 返回:image/jpeg格式,http body为图片数据

开始录像

  • 接口:/api/v1/startrecord?channel=1&duration=3600

  • 参数:

    名称含义备注
    channel通道号-
    duration录像时长,单位秒缺省或者为0时,一直录像,直到执行stoprecord接口

  • 返回:200 OK

      {
      	"LiveQing" : {
      		"Header" : {
      			"ErrorNum" : "200",
      			"ErrorString" : "Success OK",
      			"MessageType" : "MSG_SC_SERVER_START_RECORD_ACK",
      			"Version" : "1.0"
      		}
      	}
      }
    

停止录像

  • 接口:/api/v1/stoprecord?channel=1

  • 参数:

    名称含义备注
    channel通道号-

  • 返回:200 OK

      {
      	"LiveQing" : {
      		"Header" : {
      			"ErrorNum" : "200",
      			"ErrorString" : "Success OK",
      			"MessageType" : "MSG_SC_SERVER_STOP_RECORD_ACK",
      			"Version" : "1.0"
      		}
      	}
      }
    

获取国标GB28181级联配置

  • 接口:/api/v1/getgbconfig

  • 返回:

    1. 平台地址和端口

    2. 平台验证信息,例如:SIP ID, SIP 域, 接入密码 等

       {
       	"LiveQing" : {
       		"Body" : {
       			"IP" : "127.0.0.1",
       			"Port" : "15060",
       			"Serial" : "34020000002000000001",
       			"Realm" : "3402000000",
       			"User" : "34020000001180000187",
       			"Password" : "12345678",
       			"LocalPort": 0,
       			"CommandTransport" : "UDP",
       			"Online": true,
       			"RegisterInterval": 300,
       			"KeepaliveInterval": 60,
       			"Status": "OK",
       			"Enable": true,
       			"AllowControl": true,
       			"RTCPKeepalive": true,
       			"Log": true
       		},
       		"Header" : {
       			"CSeq" : "1",
       			"ErrorNum" : "200",
       			"ErrorString" : "Success OK",
       			"MessageType" : "MSG_SC_SERVER_GET_GB_ACK",
       			"Version" : "1.0"
       		}
       	}
       }
      
  • 操作:显示成功

设置国标GB28181级联配置

  • 接口: /api/v1/setgbconfig?Serial=34020000002000000001&Realm=3402000000&IP=127.0.0.1&Port=15060&LocalPort=0&User=34020000001180000187&Password=12345678&CommandTransport=UDP&RegisterInterval=300&KeepaliveInterval=60&RTCPKeepalive=true&AllowControl=true&Enable=true&Log=true

  • 返回: 200 OK

      {
         "LiveQing" : {
            "Header" : {
               "CSeq" : "1",
               "ErrorNum" : "200",
               "ErrorString" : "Success OK",
               "MessageType" : "MSG_SC_SERVER_SET_GB_ACK",
               "Version" : "1.0"
            }
         }
      }
    
  • 操作:显示配置成功

获取LiveNVS级联配置

  • 接口:/api/v1/getnvsconfig

  • 返回:

    1. 平台地址和端口

    2. 平台验证信息,例如:设备序列号, 设备名称, 接入密码 等

       {
       	"LiveQing" : {
       		"Body" : {
       			"IP" : "127.0.0.1",
       			"Port" : "10812",
       			"UID" : "LiveNVR001",
       			"UName" : "LiveNVR001",
       			"Token" : "12345678",
       			"Status": "Running",
       			"Enable": true
       		},
       		"Header" : {
       			"CSeq" : "1",
       			"ErrorNum" : "200",
       			"ErrorString" : "Success OK",
       			"MessageType" : "MSG_SC_SERVER_GET_NVS_ACK",
       			"Version" : "1.0"
       		}
       	}
       }
      
  • 操作:显示成功

设置LiveNVS级联配置

  • 接口: /api/v1/setnvsconfig?UID=LiveNVR001&UName=LiveNVR001&IP=127.0.0.1&Port=10812&Token=12345678&Enable=true

  • 返回: 200 OK

      {
         "LiveQing" : {
            "Header" : {
               "CSeq" : "1",
               "ErrorNum" : "200",
               "ErrorString" : "Success OK",
               "MessageType" : "MSG_SC_SERVER_SET_NVS_ACK",
               "Version" : "1.0"
            }
         }
      }
    
  • 操作:显示配置成功

重启接口

  • 接口: /api/v1/restart

  • 返回: 200 OK

  • 操作: 显示成功