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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM