1. 程式人生 > >視訊監控安防平臺-國標28181(GB28181)平臺通過http請求獲取HLS、RTMP和RTSP地址(HTTP服務轉GB28181)

視訊監控安防平臺-國標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!