Compare commits
8 Commits
v2.1.2-alp
...
v2
Author | SHA1 | Date | |
---|---|---|---|
91cb2927e3
|
|||
1f5248ac87
|
|||
ec06ee84de
|
|||
92e59cf650
|
|||
5c5496fa7f
|
|||
2737e23369
|
|||
b4ec470e2f
|
|||
6012bccf64
|
@ -88,3 +88,48 @@ type EventModelGetAlarmingResponse struct {
|
||||
VideoLossAlarmMask uint `json:"VL_AT"`
|
||||
VideoLossStatusMask uint `json:"VL_AS"`
|
||||
}
|
||||
|
||||
// 3.4.1.3
|
||||
type EventModelGetAlarmInfoStatusResponse struct {
|
||||
ErrorCode uint `json:"ERRORCODE"`
|
||||
ErrorCause string `json:"ERRORCAUSE"`
|
||||
MotionDetectionAlarm []MotionDetectionAlarmStatus `json:"MD"`
|
||||
IOAlarm []IOAlarmStatus `json:"IO"`
|
||||
StorageAlarm []StorageAlarmStatus `json:"ST"`
|
||||
CameraCoveredAlarm []CameraCoveredAlarmStatus `json:"VS"`
|
||||
VideoLossAlarm []VideoLossAlarmStatus `json:"VL"`
|
||||
}
|
||||
|
||||
// 3.4.1.4.1
|
||||
type MotionDetectionAlarmStatus struct {
|
||||
Status uint `json:"ISA"`
|
||||
Mask uint `json:"LCH"`
|
||||
}
|
||||
|
||||
// 3.4.1.4.2
|
||||
type IOAlarmStatus struct {
|
||||
Status uint `json:"ISA"`
|
||||
IONumber uint `json:"IONO"`
|
||||
Mask uint `json:"LCH"`
|
||||
Name string `json:"NAME"`
|
||||
NameAbbreviation string `json:"NSER"`
|
||||
}
|
||||
|
||||
// 3.4.1.4.4
|
||||
type CameraCoveredAlarmStatus struct {
|
||||
Status uint `json:"ISA"`
|
||||
Mask uint `json:"LCH"`
|
||||
}
|
||||
|
||||
// 3.4.1.4.4
|
||||
type VideoLossAlarmStatus struct {
|
||||
Status uint `json:"ISA"`
|
||||
Mask uint `json:"LCH"`
|
||||
}
|
||||
|
||||
// 3.4.1.4.21
|
||||
type StorageAlarmStatus struct {
|
||||
SID any `json:"SID"`
|
||||
Type uint `json:"ST"`
|
||||
Error uint `json:"E"`
|
||||
}
|
||||
|
@ -51,110 +51,3 @@ type MediaStreamModelControlStreamRequest struct {
|
||||
AudioValid uint `json:"AUDIOVALID,omitempty"`
|
||||
FrameMode uint `json:"FRAMEMODE,omitempty"`
|
||||
}
|
||||
|
||||
/*
|
||||
var ip string = os.Getenv("SERVER_IP")
|
||||
|
||||
func (e *Package) MediaRequestDownloadVideo(token int, serial string, session string, camNo int, date string, begin_time string, end_time string, recordID string, serverId int) {
|
||||
e.Payload = map[string]any{
|
||||
"MODULE": "MEDIASTREAMMODEL",
|
||||
"OPERATION": "REQUESTDOWNLOADVIDEO",
|
||||
"PARAMETER": map[string]any{
|
||||
"PT": 3,
|
||||
"SSRC": 1,
|
||||
"STREAMNAME": "DOWNLOAD" + "_" + serial + "_" + fmt.Sprint(camNo) + "_" + fmt.Sprint(serverId),
|
||||
"STREAMTYPE": 1, // main stream
|
||||
"RECORDID": recordID,
|
||||
"CHANNEL": 1 << (camNo - 1),
|
||||
"STARTTIME": date + begin_time,
|
||||
"ENDTIME": date + end_time,
|
||||
"OFFSETFLAG": 1,
|
||||
"OFFSET": 0,
|
||||
"IPANDPORT": ip + ":12092",
|
||||
"SERIAL": token,
|
||||
"DT": 1, // high speed download
|
||||
},
|
||||
"SESSION": session,
|
||||
}
|
||||
}
|
||||
|
||||
// main server util
|
||||
func (e *Package) MediaRequestAliveVideo(token int, camNo int64, Sid string, serial string, quality int64) {
|
||||
|
||||
channel := 0
|
||||
|
||||
if camNo == 1 {
|
||||
channel = 1
|
||||
} else {
|
||||
channel = 1 << (camNo - 1)
|
||||
}
|
||||
e.Payload = map[string]any{
|
||||
"MODULE": "MEDIASTREAMMODEL",
|
||||
"OPERATION": "REQUESTALIVEVIDEO",
|
||||
"PARAMETER": map[string]any{
|
||||
"AUDIOVALID": 1,
|
||||
"CHANNEL": channel,
|
||||
"FRAMEMODE": 0,
|
||||
"IPANDPORT": ip + ":12092",
|
||||
"STREAMNAME": "LIVE" + "_" + serial + "_" + fmt.Sprint(camNo),
|
||||
"STREAMTYPE": quality,
|
||||
"SERIAL": token,
|
||||
},
|
||||
"SESSION": Sid,
|
||||
}
|
||||
}
|
||||
|
||||
// main server util
|
||||
func (e *Package) MediaRequestRemotePlayback(token int, serial string, session string, camNo int, date string, begin_time string, end_time string, serverId int) {
|
||||
if end_time == "" {
|
||||
e.Payload = map[string]any{
|
||||
"MODULE": "MEDIASTREAMMODEL",
|
||||
"OPERATION": "REQUESTREMOTEPLAYBACK",
|
||||
"PARAMETER": map[string]any{
|
||||
"STREAMNAME": "PLAYBACK" + "_" + fmt.Sprint(serial) + "_" + fmt.Sprint(camNo) + "_" + fmt.Sprint(serverId),
|
||||
"STREAMTYPE": 1, // main stream
|
||||
"VIDEOTYPE": 2, // common files
|
||||
"CHANNEL": 1 << (camNo - 1),
|
||||
"STARTTIME": date + begin_time,
|
||||
"IPANDPORT": ip + ":12092",
|
||||
"SERIAL": token,
|
||||
"PBST": 0,
|
||||
},
|
||||
"SESSION": session,
|
||||
}
|
||||
} else {
|
||||
e.Payload = map[string]any{
|
||||
"MODULE": "MEDIASTREAMMODEL",
|
||||
"OPERATION": "REQUESTREMOTEPLAYBACK",
|
||||
"PARAMETER": map[string]any{
|
||||
"STREAMNAME": "PLAYBACK" + "_" + fmt.Sprint(serial) + "_" + fmt.Sprint(camNo) + "_" + fmt.Sprint(serverId),
|
||||
"STREAMTYPE": 1, // main stream
|
||||
"VIDEOTYPE": 2, // common files
|
||||
"CHANNEL": 1 << (camNo - 1),
|
||||
"STARTTIME": date + begin_time,
|
||||
"ENDTIME": date + end_time,
|
||||
"IPANDPORT": ip + ":12092",
|
||||
"SERIAL": token,
|
||||
"PBST": 0,
|
||||
},
|
||||
"SESSION": session,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// main server util
|
||||
func (e *Package) ControlRemotePlayback(token int, serial string, session string, camNo int, date string, begin_time string, end_time string, serverId int) {
|
||||
e.Payload = map[string]any{
|
||||
"MODULE": "MEDIASTREAMMODEL",
|
||||
"OPERATION": "CONTROLREMOTEPLAYBACK",
|
||||
"PARAMETER": map[string]any{
|
||||
"STREAMNAME": fmt.Sprint(serial) + "_" + fmt.Sprint(camNo) + "_" + fmt.Sprint(serverId),
|
||||
"SERIAL": token,
|
||||
"PALYBACKCMD": 5, // main stream
|
||||
"CHANNEL": 268435455, // common files
|
||||
},
|
||||
"SESSION": session,
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
@ -2,12 +2,15 @@ package parameters
|
||||
|
||||
// 7.2
|
||||
type RIP struct {
|
||||
DEVID string // ID номер устройства
|
||||
BN string // бортовой номер
|
||||
BID string // гос. номер
|
||||
LN string // Название линии
|
||||
DID string // номер водительского удостоверения
|
||||
DNAME string // ФИО водителя
|
||||
DEVID string // ID номер устройства
|
||||
BN string // бортовой номер
|
||||
BID string // гос. номер
|
||||
LN string // Название линии
|
||||
DID string // номер водительского удостоверения
|
||||
DNAME string // ФИО водителя
|
||||
REC int // Тип записи видоепотока (0 - беск запись, 1 - запись по событиям, 2 - по расписанию)
|
||||
PREREC int // Длительность предтревожной записи
|
||||
POSTREC int // Длительность послетревожной записи
|
||||
}
|
||||
|
||||
type VS struct {
|
||||
@ -71,9 +74,11 @@ type NEC struct {
|
||||
AEN int // звук (вкл/выкл)
|
||||
VEN int // видео (вкл/выкл)
|
||||
BR int // битрейт
|
||||
BRM int
|
||||
ECT int // кодировка
|
||||
FR int // фреймрейт
|
||||
FT int // тип кадров
|
||||
KFI int
|
||||
QLT int // качество трансляции
|
||||
RST int // разрешение
|
||||
}
|
||||
@ -95,8 +100,10 @@ type VEC struct {
|
||||
ECT int // кодировка
|
||||
FR int // фреймрейт
|
||||
QLT int // качество записи
|
||||
RM int // режим работы
|
||||
AEN int // звук (вкл/выкл)
|
||||
ALT int // качество видео при тревоге
|
||||
BRM int // режим битрейта
|
||||
}
|
||||
|
||||
type EOSD struct {
|
||||
@ -134,6 +141,18 @@ type COSD struct {
|
||||
Y int
|
||||
}
|
||||
|
||||
type MAIN struct {
|
||||
VEN uint // 1/0
|
||||
RST uint // разрешение
|
||||
ECT uint // кодировка
|
||||
FR uint // фреймрейт
|
||||
QLT uint // качество записи
|
||||
RM uint // режим работы (0 - всегда, 1 - по расписанию, 2 - по тревоге)
|
||||
AEN uint // звук
|
||||
ALT uint // качество видео при тревоге
|
||||
BRM uint // режим битрейта
|
||||
}
|
||||
|
||||
type IOP struct {
|
||||
EN int
|
||||
AS int
|
||||
@ -280,13 +299,12 @@ type REDEV struct {
|
||||
CONTYPE int // ???
|
||||
SW int // Источник поступаемого сигнала
|
||||
REPORT int // Порт камеры
|
||||
REIP int // IP камеры
|
||||
ID int // Идентификатор камеры
|
||||
REIP string // IP камеры
|
||||
ID string // Идентификатор камеры
|
||||
RENAME string // Название устройства
|
||||
USER string // Имя пользователя
|
||||
PWD string // Пароль
|
||||
URL string // ???
|
||||
CMDPORT string // ???
|
||||
}
|
||||
|
||||
// 7.29
|
||||
@ -340,9 +358,23 @@ type CG struct {
|
||||
AT uint // Answer automatically when exceed time
|
||||
}
|
||||
|
||||
type RSI struct {
|
||||
E int64 // End time in seconds
|
||||
S int64 // Start time in seconds
|
||||
}
|
||||
|
||||
type RCP struct {
|
||||
RSI [][]RSI // Recording type parameters (array for cameras number, 7 for week days)
|
||||
}
|
||||
|
||||
type RP struct {
|
||||
RCP []RCP // Single channel recording period parameter list
|
||||
}
|
||||
|
||||
type Setting struct {
|
||||
KEYS KEYS `json:"KEYS,omitempty"`
|
||||
RIP RIP `json:"RIP,omitempty"`
|
||||
RP RP `json:"RP,omitempty"`
|
||||
TIMEP TIMEP `json:"TIMEP,omitempty"`
|
||||
ATP ATP `json:"ATP,omitempty"`
|
||||
SSP SSP `json:"SSP,omitempty"`
|
||||
|
@ -6,10 +6,18 @@ import (
|
||||
"encoding/hex"
|
||||
)
|
||||
|
||||
func GenerateVerifyKey(key string) string {
|
||||
func generateHMAC(key string, data string) string {
|
||||
mac := hmac.New(md5.New, []byte(key))
|
||||
|
||||
mac.Write([]byte(key))
|
||||
mac.Write([]byte(data))
|
||||
|
||||
return hex.EncodeToString(mac.Sum(nil))
|
||||
}
|
||||
|
||||
func GenerateVerifyKey(key string) string {
|
||||
return generateHMAC(key, key)
|
||||
}
|
||||
|
||||
func GeneratePasswordHash(password string) string {
|
||||
return generateHMAC("streaming", password)
|
||||
}
|
||||
|
Reference in New Issue
Block a user