如何将监控画面嵌入微信公众号进行直播
引言
全民直播時代已經到來。現在的直播必然需要支持手機直播,如果能夠嵌入到全面寵兒微信中,那就能深度民心了。從技術上而言,微信直播,自然需要使用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
返回:
所有設備列表信息,在線&不在線 通道(包含快照信息)
通道名稱、通道號、通道快照、通道是否在線
| 名稱 | 含義 | 備注 |
| 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
操作: 顯示成功
WEB:https://www.liveqing.com
總結
以上是生活随笔為你收集整理的如何将监控画面嵌入微信公众号进行直播的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 海南大学计算机科学与技术专业考研,202
- 下一篇: 2017年计算机基础知识答题宝典,201