444 lines
11 KiB
Python
444 lines
11 KiB
Python
# -*- coding: utf-8 -*-
|
|
# 编码格式
|
|
UTF_8 = "utf-8"
|
|
|
|
# 文件读模式
|
|
R = 'r'
|
|
ON_OR = "_on_or_"
|
|
ON_AI = "_on_ai_"
|
|
MP4 = ".mp4"
|
|
# 初始化进度
|
|
init_progess = "0.0000"
|
|
# 进度100%
|
|
success_progess = "1.0000"
|
|
|
|
# 拉流每帧图片缩小宽度大小限制, 大于1400像素缩小一半, 小于1400像素不变
|
|
width = 1400
|
|
|
|
COLOR = (
|
|
[255, 0, 0],
|
|
[211, 0, 148],
|
|
[0, 127, 0],
|
|
[0, 69, 255],
|
|
[0, 255, 0],
|
|
[255, 0, 255],
|
|
[0, 0, 127],
|
|
[127, 0, 255],
|
|
[255, 129, 0],
|
|
[139, 139, 0],
|
|
[255, 255, 0],
|
|
[127, 255, 0],
|
|
[0, 127, 255],
|
|
[0, 255, 127],
|
|
[255, 127, 255],
|
|
[8, 101, 139],
|
|
[171, 130, 255],
|
|
[139, 112, 74],
|
|
[205, 205, 180],
|
|
[0, 0, 255],)
|
|
|
|
ONLINE = "online"
|
|
OFFLINE = "offline"
|
|
PHOTO = "photo"
|
|
RECORDING = "recording"
|
|
|
|
ONLINE_START_SCHEMA = {
|
|
"request_id": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'regex': r'^[a-zA-Z0-9]{1,36}$'
|
|
},
|
|
"command": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'allowed': ["start"]
|
|
},
|
|
"pull_url": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'maxlength': 255
|
|
},
|
|
"push_url": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'maxlength': 255
|
|
},
|
|
"logo_url": {
|
|
'type': 'string',
|
|
'required': False,
|
|
'nullable': True,
|
|
'maxlength': 255
|
|
},
|
|
"models": {
|
|
'type': 'list',
|
|
'required': True,
|
|
'nullable': False,
|
|
'minlength': 1,
|
|
'maxlength': 3,
|
|
'schema': {
|
|
'type': 'dict',
|
|
'required': True,
|
|
'schema': {
|
|
"code": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'dependencies': "categories",
|
|
'regex': r'^[a-zA-Z0-9]{1,255}$'
|
|
},
|
|
"is_video": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'dependencies': "code",
|
|
'allowed': ["0", "1"]
|
|
},
|
|
"is_image": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'dependencies': "code",
|
|
'allowed': ["0", "1"]
|
|
},
|
|
"categories": {
|
|
'type': 'list',
|
|
'required': True,
|
|
'dependencies': "code",
|
|
'schema': {
|
|
'type': 'dict',
|
|
'required': True,
|
|
'schema': {
|
|
"id": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'regex': r'^[a-zA-Z0-9]{0,255}$'},
|
|
"config": {
|
|
'type': 'dict',
|
|
'required': False,
|
|
'dependencies': "id",
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ONLINE_STOP_SCHEMA = {
|
|
"request_id": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'regex': r'^[a-zA-Z0-9]{1,36}$'
|
|
},
|
|
"command": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'allowed': ["stop"]
|
|
}
|
|
}
|
|
|
|
OFFLINE_START_SCHEMA = {
|
|
"request_id": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'regex': r'^[a-zA-Z0-9]{1,36}$'
|
|
},
|
|
"command": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'allowed': ["start"]
|
|
},
|
|
"push_url": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'maxlength': 255
|
|
},
|
|
"pull_url": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'maxlength': 255
|
|
},
|
|
"logo_url": {
|
|
'type': 'string',
|
|
'required': False,
|
|
'nullable': True,
|
|
'maxlength': 255
|
|
},
|
|
"models": {
|
|
'type': 'list',
|
|
'required': True,
|
|
'maxlength': 3,
|
|
'minlength': 1,
|
|
'schema': {
|
|
'type': 'dict',
|
|
'required': True,
|
|
'schema': {
|
|
"code": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'dependencies': "categories",
|
|
'regex': r'^[a-zA-Z0-9]{1,255}$'
|
|
},
|
|
"is_video": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'dependencies': "code",
|
|
'allowed': ["0", "1"]
|
|
},
|
|
"is_image": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'dependencies': "code",
|
|
'allowed': ["0", "1"]
|
|
},
|
|
"categories": {
|
|
'type': 'list',
|
|
'required': True,
|
|
'dependencies': "code",
|
|
'schema': {
|
|
'type': 'dict',
|
|
'required': True,
|
|
'schema': {
|
|
"id": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'regex': r'^[a-zA-Z0-9]{0,255}$'},
|
|
"config": {
|
|
'type': 'dict',
|
|
'required': False,
|
|
'dependencies': "id",
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
OFFLINE_STOP_SCHEMA = {
|
|
"request_id": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'regex': r'^[a-zA-Z0-9]{1,36}$'
|
|
},
|
|
"command": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'allowed': ["stop"]
|
|
}
|
|
}
|
|
|
|
IMAGE_SCHEMA = {
|
|
"request_id": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'regex': r'^[a-zA-Z0-9]{1,36}$'
|
|
},
|
|
"command": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'allowed': ["start"]
|
|
},
|
|
"logo_url": {
|
|
'type': 'string',
|
|
'required': False,
|
|
'nullable': True,
|
|
'maxlength': 255
|
|
},
|
|
"image_urls": {
|
|
'type': 'list',
|
|
'required': True,
|
|
'minlength': 1,
|
|
'schema': {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'maxlength': 5000
|
|
}
|
|
},
|
|
"models": {
|
|
'type': 'list',
|
|
'required': True,
|
|
'schema': {
|
|
'type': 'dict',
|
|
'required': True,
|
|
'schema': {
|
|
"code": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'dependencies': "categories",
|
|
'regex': r'^[a-zA-Z0-9]{1,255}$'
|
|
},
|
|
"is_video": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'dependencies': "code",
|
|
'allowed': ["0", "1"]
|
|
},
|
|
"is_image": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'dependencies': "code",
|
|
'allowed': ["0", "1"]
|
|
},
|
|
"categories": {
|
|
'type': 'list',
|
|
'required': True,
|
|
'dependencies': "code",
|
|
'schema': {
|
|
'type': 'dict',
|
|
'required': True,
|
|
'schema': {
|
|
"id": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'regex': r'^[a-zA-Z0-9]{0,255}$'},
|
|
"config": {
|
|
'type': 'dict',
|
|
'required': False,
|
|
'dependencies': "id",
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
RECORDING_START_SCHEMA = {
|
|
"request_id": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'regex': r'^[a-zA-Z0-9]{1,36}$'
|
|
},
|
|
"command": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'allowed': ["start"]
|
|
},
|
|
"pull_url": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'maxlength': 255
|
|
},
|
|
"push_url": {
|
|
'type': 'string',
|
|
'required': False,
|
|
'empty': True,
|
|
'maxlength': 255
|
|
},
|
|
"logo_url": {
|
|
'type': 'string',
|
|
'required': False,
|
|
'nullable': True,
|
|
'maxlength': 255
|
|
}
|
|
}
|
|
|
|
RECORDING_STOP_SCHEMA = {
|
|
"request_id": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'regex': r'^[a-zA-Z0-9]{1,36}$'
|
|
},
|
|
"command": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'allowed': ["stop"]
|
|
}
|
|
}
|
|
|
|
PULL2PUSH_START_SCHEMA = {
|
|
"request_id": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'regex': r'^[a-zA-Z0-9]{1,36}$'
|
|
},
|
|
"command": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'allowed': ["start"]
|
|
},
|
|
"video_urls": {
|
|
'type': 'list',
|
|
'required': True,
|
|
'nullable': False,
|
|
'schema': {
|
|
'type': 'dict',
|
|
'required': True,
|
|
'schema': {
|
|
"id": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'dependencies': "pull_url",
|
|
'regex': r'^[a-zA-Z0-9]{1,255}$'
|
|
},
|
|
"pull_url": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'dependencies': "push_url",
|
|
'regex': r'^(https|http|rtsp|rtmp|artc|webrtc|ws)://\w.+$'
|
|
},
|
|
"push_url": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'dependencies': "id",
|
|
'regex': r'^(https|http|rtsp|rtmp|artc|webrtc|ws)://\w.+$'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
PULL2PUSH_STOP_SCHEMA = {
|
|
"request_id": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'regex': r'^[a-zA-Z0-9]{1,36}$'
|
|
},
|
|
"command": {
|
|
'type': 'string',
|
|
'required': True,
|
|
'allowed': ["start", "stop"]
|
|
},
|
|
"video_ids": {
|
|
'type': 'list',
|
|
'required': False,
|
|
'nullable': True,
|
|
'schema': {
|
|
'type': 'string',
|
|
'required': True,
|
|
'empty': False,
|
|
'regex': r'^[a-zA-Z0-9]{1,255}$'
|
|
}
|
|
}
|
|
}
|