視訊監控安防平臺-國標28181(GB28181)平臺通過http請求獲取HLS、RTMP和RTSP地址(HTTP服務轉GB28181)
視訊監控安防平臺-國標28181(GB28181)平臺通過http請求獲取HLS、RTMP和RTSP地址(HTTP服務轉GB28181)
最近抽時間完善了HTTP服務接入GB28181的小平臺,支援HLS、RTMP、RTSP碼流輸出,其中HLS和RTMP只支援實時視訊的輸出,如果需要demo聯絡QQ/微信:123011785
下面我把協議列舉下:
一、通訊介面:
視訊伺服器作為httpserver。
1. 請求視訊
欄位說明:
"channelid": (字串) 通道20位編號
"type": (數字) 國標請求視訊型別:1:udp 2:tcp主動 3:tcp被動
"videourltype": (字串) 視訊型別:rtsp:返回rtsp地址 rtmp:返回rtmp地址 hls:返回hls地址
"errcode": (數字) 返回值,0表示成功,其他見錯誤碼
"sessionid": (字串) 會話返回的sessionid
"rtspurl": (字串) rtsp地址
請求:
URL: http://122.114.130.9:8088/vss/open_stream/{channelid}/{type}/{videourltype}
HTTP Method: GET
返回:
其中errcode為必填項,errcode小於0表示錯誤,無資料
{
"errcode":0,
"errdesc":"OK",
"strsessionid":"44030000001320000001",
"rtspurl":"http://47.92.224.143:8080/video/44030000001320000001.m3u8"
}
2. 停止視訊-通過sessionid停止視訊 (包含實時視訊、歷史視訊點播、歷史視訊下載)
欄位說明:
"sessionid": (字串) 會話返回的sessionid
"errcode": (數字) 返回狀態值,0表示正常狀態,其他見錯誤碼
請求:
URL: http://122.114.130.9:8088/vss/close_stream/{sessionid}
HTTP Method: GET
返回:
其中errcode為必填項,errcode小於0表示錯誤
{
"errcode":0,
"errdesc":"OK"
}
3. Ptz請求
欄位說明:
"channelid": (字串) 通道20位編號
"ptztype": (字串) 控制型別:上"up",下"down",左"left",右"right",左上"leftup",左下"leftdown",右上"rightup",右下"rightdown",鏡頭近"zoomin",鏡頭遠"zoomout",
焦距遠"focusfar",焦距近"focusnear", 設定預置位"setpos",調預置位"callpos"
"ptzparam": (數字) 引數,速度範圍為0-255,0為停止
請求:
URL: http://122.114.130.9:8088/vss/ptz/{ptztype}/{ptzparam}/{channelid}
HTTP Method: GET
返回:
其中errcode為必填項,errcode小於0表示錯誤
{"errcode":0,"errdesc":"OK"}
4. 錄影查詢
欄位說明:
"channelid": (字串) 通道20位編號
"begintime": (字串) "YYYY-MM-DDTHH:MM:SS": 年月日時分秒; 開始時間,注意不全0
"endtime": (字串) "YYYY-MM-DDTHH:MM:SS": 年月日時分秒; 結束時間,注意不全0
"data": 錄影查詢資訊
"begintime": (字串) "YYYY-MM-DDTHH:MM:SS": 年月日時分秒; 開始時間,注意不全0
"endtime": (字串) "YYYY-MM-DDTHH:MM:SS": 年月日時分秒; 結束時間,注意不全0
"filename": (字串) 檔名,不一定用,如果根據檔案回放才用,根據時間回放不用
"type": (字串)錄影型別 all,time,alarm,manual
請求:
URL: http://122.114.130.9:8088/vss/history_search/{begintime}/{endtime}/{channelid}
HTTP Method: GET
返回:
其中errcode為必填項,errcode小於0表示錯誤,無資料; 如果errcode等於0,那麼資料裡面的每項都是必填項
{"errcode":0,"errdesc":"OK","totalsize":3,"onepagesize":3,"totalpage":1,"pageno":1,"count":3,"data":
[
{"channelid":11000000001320000001,"begintime":"2017-09-19T15:13:24","endtime":"2017-09-19T15:38:34","filename":"101101001_0","type":"all"},
{"channelid":11000000001320000001,"begintime":"2017-09-19T15:56:52","endtime":"2017-09-19T16:03:10","filename":"101101001_2","type":"all"},
{"channelid":11000000001320000001,"begintime":"2017-09-19T16:06:42","endtime":"2017-09-19T17:28:55","filename":"101101001_4","type":"all"}
]
}
5. 錄影點播/下載
欄位說明:
"channelid": (字串) 通道20位編號
"opttype": (字串) "vod"點播, "download"下載
"begintime": (字串) "YYYY-MM-DDTHH:MM:SS": 年月日 時分秒; 開始時間
"endtime": (字串) "YYYY-MM-DDTHH:MM:SS": 年月日 時分秒; 結束時間
"type": (數字) 國標請求視訊型別:1:udp 2:tcp主動 3:tcp被動
返回引數:
"errcode": (數字) 返回狀態值,0表示正常狀態,其他見錯誤碼
"rtspurl": (字串) 點播/下載rtsp地址
"sessionid": (字串) 點播/下載控制代碼,用於點播控制,關閉(為請求時傳入的sessionid)
"filesize": (64位數字) 點播/下載的總大小
請求:
URL: http://122.114.130.9:8088/vss/open_his_stream/{opttype}/{begintime}/{endtime}/{channelid}/{type}
HTTP Method: GET
返回:
其中errcode為必填項,errcode小於0表示錯誤,無資料; 如果errcode等於0,那麼資料裡面的每項都是必填項
{
"errccode":0,
"rtspurl":"rtsp://192.168.12.93:9554/Type=2/DevAor=101101001-2017030031-111",
"sessionid":"101101001-2017030031-111"
"filesize":110503259
}
6. 點播控制
欄位說明:
"sessionid": (字串) 點播返回的sessionid控制代碼
"vodctrltype": (字串) "play","pause","stop","jump"
"vodctrlparam": (字串) 0(pause,stop) / 0.125,0.25,0.5,1,2,4,8,16(play) (範圍:0-32)/ 從開始時間跳轉的秒數(jump)
請求:
URL: http://122.114.130.9:8088/vss/his_stream_ctrl/{sessionid}/{vodctrltype}/{vodctrlparam}
HTTP Method: GET
返回:
其中errcode為必填項,errcode小於0表示錯誤
{"errccode":0,"errdesc":"OK"}
7. 裝置控制
欄位說明:
"channelid": (字串) 通道或者裝置20位編號
"devctrltype": (字串) "record":錄影開啟和停止-通道id "guard":布放和撤防-報警通道id "reboot":裝置重啟-裝置id "keyfame":強制關鍵幀-通道id
"param": (字串) "start"啟動,"stop"停止
請求:
URL: http://47.92.224.143:8060/vss/device_ctrl/{devctrltype}/{channelid}/{param}
HTTP Method: GET
返回:
其中errcode為必填項,errcode小於0表示錯誤
{"errccode":0,"errdesc":"OK"}
二、報警通知
視訊伺服器作為httpclient
方法說明:
欄位說明:
"channelid": (字串) 通道20位編號
"alarmtype": (數字) 報警型別(後續根據需求定義)
"alarmtime": (字串) "YYYY-MM-DDTHH:MM:SS": 年月日 時分秒; 報警時間
"alarmdesc": (字串) 報警描述
"longitude": (字串) 經度
"latitude": (字串) 緯度
請求:
URL: http://122.114.130.9:8088/vssalarm
HTTP Method: POST
Body:
所有欄位都為必填項
{"channelid":"11000000001320000001","alarmtype":1,"alarmtime":"2017-09-19T15:13:24","alarmdesc":"fire","longitude":"10.01123","latitude":"20.34221"}
其中MYSQL資料庫表結構為:
/* 建立一級裝置表 */
create table IF NOT EXISTS VSSDevTbl
(
ID int primary key auto_increment comment '自增ID;',
DevPubID varchar(32) not null unique comment '一級裝置賬號;',
DevNickname char(128) comment '暱稱;',
UserName char(64) comment '使用者名稱;',
Passwd char(64) comment '密碼;',
CorpID char(32) comment '裝置廠商;',
IP char(16) comment 'IP地址 ;',
Port smallint unsigned comment '埠;',
Alive boolean default 0 comment '註冊狀態;0-下線;1-上線',
DMarker int default 1 comment '0-未變化;1-增加;2-刪除;3-修改;4-已同步,可刪除;',
UpdateTime TIMESTAMP ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP comment '更新時間;'
);
alter table VSSDevTbl comment '建立一級裝置表';
/*alter table VSSDevTbl add index idx_DevID(DevPubID);*/
/* 建立二級裝置表 */
create table IF NOT EXISTS VSSChannelTbl
(
ID int primary key auto_increment comment '自增ID;',
DevPubID varchar(32) not null comment '一級裝置賬號;',
Nickname char(128) comment '暱稱;',
ChanPubID varchar(32) not null unique comment '二級裝置賬號;',
Alive boolean default 0 comment '註冊狀態;0-下線;1-上線',
CorpID char(32) comment '裝置廠商;',
Model char(32) comment '裝置型號;',
Owner char(32) comment '裝置歸屬;',
CivilCode char(32) comment '行政區域;',
Address char(128) comment '安裝地址;',
Parental int default 0 comment '0-沒有裝置;1-有子裝置',
ParentId char(64) comment '父裝置;',
IP char(16) comment 'IP地址 ;',
Port smallint unsigned comment '埠;',
Longitude double default 0 comment '經度',
Latitude double default 0 comment '緯度',
Altitude double default 0 comment '海拔',
PTZType int default 0 comment '1-球機;2-半球;3-固定槍機;4-遙控槍機;',
RoomType int default 0 comment '1-室外;2-室內',
DirectionType int default 0 comment '1-東;2-西;3-南;4-北;5-東南;6-東北;7-西南;8-西北;',
StreamType int default 0 comment '0-H264;1-MPEG2;2-MPEG4;3-SVAC;4-3GP;5-H265;',
DMarker int default 1 comment '0-未變化;1-增加;2-刪除;3-修改;4-已同步,可刪除;',
UpdateTime TIMESTAMP ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP comment '更新時間;'
);
alter table VSSChannelTbl comment '建立二級裝置表';
alter table VSSChannelTbl add constraint FK_VSSChannelTbl foreign key (DevPubID) references VSSDevTbl (DevPubID) on delete cascade;
create table IF NOT EXISTS SVRTbl
(
ID int primary key auto_increment comment '自增ID;',
GBServerID varchar(20) not null comment '國標伺服器ID;',
IP varchar(16) comment 'IP;',
GBServerPort smallint unsigned comment '國標伺服器埠;',
RtspServerPort smallint unsigned comment 'rtsp伺服器埠;',
HttpserverPort smallint unsigned comment 'http伺服器埠;',
HttpclientSvrIp varchar(16) comment 'http客戶端連線服務IP;',
HttpclientSvrPort smallint unsigned comment 'http客戶端連線服務埠;',
Active int default 0 comment '執行狀態 1開啟 0關閉;',
MaxCameraNum int default 0 comment '伺服器最大攝像頭數量;',
CurrentCameraNum int default 0 comment '伺服器當前攝像頭數量;',
ServerAlarmNum int default 0 comment '伺服器觸發警報警戒值;',
UpdateTime TIMESTAMP ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP comment '更新時間:',
Remark varchar(255) comment'備用欄位;'
);
alter table SVRTbl comment '建立伺服器配置表';
/* 建立區域組織結構表 */
create table IF NOT EXISTS VSSDomainUnitTbl
(
ID int primary key auto_increment comment '自增ID;',
DevPubID varchar(32) not null comment '一級裝置賬號;',
DomainPubID char(32) not null unique comment '域名ID;',
Name char(128) comment '名稱;',
BusinessGroupID char(32) comment '業務分組ID;',
ParentId char(64) comment '父節點ID;',
UpdateTime TIMESTAMP ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP comment '更新時間;'
);
alter table VSSDomainUnitTbl comment '建立一級裝置表';
alter table VSSDomainUnitTbl add constraint FK_VSSDomainUnitTbl foreign key (DevPubID) references VSSDevTbl (DevPubID) on delete cascade;
使用資訊和相關資訊檢視上傳的demo!