You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

444 lines
11KB

  1. # -*- coding: utf-8 -*-
  2. # 编码格式
  3. UTF_8 = "utf-8"
  4. # 文件读模式
  5. R = 'r'
  6. ON_OR = "_on_or_"
  7. ON_AI = "_on_ai_"
  8. MP4 = ".mp4"
  9. # 初始化进度
  10. init_progess = "0.0000"
  11. # 进度100%
  12. success_progess = "1.0000"
  13. # 拉流每帧图片缩小宽度大小限制, 大于1400像素缩小一半, 小于1400像素不变
  14. width = 1400
  15. COLOR = (
  16. [0, 0, 255],
  17. [255, 0, 0],
  18. [211, 0, 148],
  19. [0, 127, 0],
  20. [0, 69, 255],
  21. [0, 255, 0],
  22. [255, 0, 255],
  23. [0, 0, 127],
  24. [127, 0, 255],
  25. [255, 129, 0],
  26. [139, 139, 0],
  27. [255, 255, 0],
  28. [127, 255, 0],
  29. [0, 127, 255],
  30. [0, 255, 127],
  31. [255, 127, 255],
  32. [8, 101, 139],
  33. [171, 130, 255],
  34. [139, 112, 74],
  35. [205, 205, 180])
  36. ONLINE = "online"
  37. OFFLINE = "offline"
  38. PHOTO = "photo"
  39. RECORDING = "recording"
  40. ONLINE_START_SCHEMA = {
  41. "request_id": {
  42. 'type': 'string',
  43. 'required': True,
  44. 'empty': False,
  45. 'regex': r'^[a-zA-Z0-9]{1,36}$'
  46. },
  47. "command": {
  48. 'type': 'string',
  49. 'required': True,
  50. 'allowed': ["start"]
  51. },
  52. "pull_url": {
  53. 'type': 'string',
  54. 'required': True,
  55. 'empty': False,
  56. 'maxlength': 255
  57. },
  58. "push_url": {
  59. 'type': 'string',
  60. 'required': True,
  61. 'empty': False,
  62. 'maxlength': 255
  63. },
  64. "logo_url": {
  65. 'type': 'string',
  66. 'required': False,
  67. 'nullable': True,
  68. 'maxlength': 255
  69. },
  70. "models": {
  71. 'type': 'list',
  72. 'required': True,
  73. 'nullable': False,
  74. 'minlength': 1,
  75. 'maxlength': 3,
  76. 'schema': {
  77. 'type': 'dict',
  78. 'required': True,
  79. 'schema': {
  80. "code": {
  81. 'type': 'string',
  82. 'required': True,
  83. 'empty': False,
  84. 'dependencies': "categories",
  85. 'regex': r'^[a-zA-Z0-9]{1,255}$'
  86. },
  87. "is_video": {
  88. 'type': 'string',
  89. 'required': True,
  90. 'empty': False,
  91. 'dependencies': "code",
  92. 'allowed': ["0", "1"]
  93. },
  94. "is_image": {
  95. 'type': 'string',
  96. 'required': True,
  97. 'empty': False,
  98. 'dependencies': "code",
  99. 'allowed': ["0", "1"]
  100. },
  101. "categories": {
  102. 'type': 'list',
  103. 'required': True,
  104. 'dependencies': "code",
  105. 'schema': {
  106. 'type': 'dict',
  107. 'required': True,
  108. 'schema': {
  109. "id": {
  110. 'type': 'string',
  111. 'required': True,
  112. 'empty': False,
  113. 'regex': r'^[a-zA-Z0-9]{0,255}$'},
  114. "config": {
  115. 'type': 'dict',
  116. 'required': False,
  117. 'dependencies': "id",
  118. }
  119. }
  120. }
  121. }
  122. }
  123. }
  124. }
  125. }
  126. ONLINE_STOP_SCHEMA = {
  127. "request_id": {
  128. 'type': 'string',
  129. 'required': True,
  130. 'empty': False,
  131. 'regex': r'^[a-zA-Z0-9]{1,36}$'
  132. },
  133. "command": {
  134. 'type': 'string',
  135. 'required': True,
  136. 'allowed': ["stop"]
  137. }
  138. }
  139. OFFLINE_START_SCHEMA = {
  140. "request_id": {
  141. 'type': 'string',
  142. 'required': True,
  143. 'empty': False,
  144. 'regex': r'^[a-zA-Z0-9]{1,36}$'
  145. },
  146. "command": {
  147. 'type': 'string',
  148. 'required': True,
  149. 'allowed': ["start"]
  150. },
  151. "push_url": {
  152. 'type': 'string',
  153. 'required': True,
  154. 'empty': False,
  155. 'maxlength': 255
  156. },
  157. "pull_url": {
  158. 'type': 'string',
  159. 'required': True,
  160. 'empty': False,
  161. 'maxlength': 255
  162. },
  163. "logo_url": {
  164. 'type': 'string',
  165. 'required': False,
  166. 'nullable': True,
  167. 'maxlength': 255
  168. },
  169. "models": {
  170. 'type': 'list',
  171. 'required': True,
  172. 'maxlength': 3,
  173. 'minlength': 1,
  174. 'schema': {
  175. 'type': 'dict',
  176. 'required': True,
  177. 'schema': {
  178. "code": {
  179. 'type': 'string',
  180. 'required': True,
  181. 'empty': False,
  182. 'dependencies': "categories",
  183. 'regex': r'^[a-zA-Z0-9]{1,255}$'
  184. },
  185. "is_video": {
  186. 'type': 'string',
  187. 'required': True,
  188. 'empty': False,
  189. 'dependencies': "code",
  190. 'allowed': ["0", "1"]
  191. },
  192. "is_image": {
  193. 'type': 'string',
  194. 'required': True,
  195. 'empty': False,
  196. 'dependencies': "code",
  197. 'allowed': ["0", "1"]
  198. },
  199. "categories": {
  200. 'type': 'list',
  201. 'required': True,
  202. 'dependencies': "code",
  203. 'schema': {
  204. 'type': 'dict',
  205. 'required': True,
  206. 'schema': {
  207. "id": {
  208. 'type': 'string',
  209. 'required': True,
  210. 'empty': False,
  211. 'regex': r'^[a-zA-Z0-9]{0,255}$'},
  212. "config": {
  213. 'type': 'dict',
  214. 'required': False,
  215. 'dependencies': "id",
  216. }
  217. }
  218. }
  219. }
  220. }
  221. }
  222. }
  223. }
  224. OFFLINE_STOP_SCHEMA = {
  225. "request_id": {
  226. 'type': 'string',
  227. 'required': True,
  228. 'empty': False,
  229. 'regex': r'^[a-zA-Z0-9]{1,36}$'
  230. },
  231. "command": {
  232. 'type': 'string',
  233. 'required': True,
  234. 'allowed': ["stop"]
  235. }
  236. }
  237. IMAGE_SCHEMA = {
  238. "request_id": {
  239. 'type': 'string',
  240. 'required': True,
  241. 'empty': False,
  242. 'regex': r'^[a-zA-Z0-9]{1,36}$'
  243. },
  244. "command": {
  245. 'type': 'string',
  246. 'required': True,
  247. 'allowed': ["start"]
  248. },
  249. "logo_url": {
  250. 'type': 'string',
  251. 'required': False,
  252. 'nullable': True,
  253. 'maxlength': 255
  254. },
  255. "image_urls": {
  256. 'type': 'list',
  257. 'required': True,
  258. 'minlength': 1,
  259. 'schema': {
  260. 'type': 'string',
  261. 'required': True,
  262. 'empty': False,
  263. 'maxlength': 5000
  264. }
  265. },
  266. "models": {
  267. 'type': 'list',
  268. 'required': True,
  269. 'schema': {
  270. 'type': 'dict',
  271. 'required': True,
  272. 'schema': {
  273. "code": {
  274. 'type': 'string',
  275. 'required': True,
  276. 'empty': False,
  277. 'dependencies': "categories",
  278. 'regex': r'^[a-zA-Z0-9]{1,255}$'
  279. },
  280. "is_video": {
  281. 'type': 'string',
  282. 'required': True,
  283. 'empty': False,
  284. 'dependencies': "code",
  285. 'allowed': ["0", "1"]
  286. },
  287. "is_image": {
  288. 'type': 'string',
  289. 'required': True,
  290. 'empty': False,
  291. 'dependencies': "code",
  292. 'allowed': ["0", "1"]
  293. },
  294. "categories": {
  295. 'type': 'list',
  296. 'required': True,
  297. 'dependencies': "code",
  298. 'schema': {
  299. 'type': 'dict',
  300. 'required': True,
  301. 'schema': {
  302. "id": {
  303. 'type': 'string',
  304. 'required': True,
  305. 'empty': False,
  306. 'regex': r'^[a-zA-Z0-9]{0,255}$'},
  307. "config": {
  308. 'type': 'dict',
  309. 'required': False,
  310. 'dependencies': "id",
  311. }
  312. }
  313. }
  314. }
  315. }
  316. }
  317. }
  318. }
  319. RECORDING_START_SCHEMA = {
  320. "request_id": {
  321. 'type': 'string',
  322. 'required': True,
  323. 'empty': False,
  324. 'regex': r'^[a-zA-Z0-9]{1,36}$'
  325. },
  326. "command": {
  327. 'type': 'string',
  328. 'required': True,
  329. 'allowed': ["start"]
  330. },
  331. "pull_url": {
  332. 'type': 'string',
  333. 'required': True,
  334. 'empty': False,
  335. 'maxlength': 255
  336. },
  337. "push_url": {
  338. 'type': 'string',
  339. 'required': False,
  340. 'empty': True,
  341. 'maxlength': 255
  342. },
  343. "logo_url": {
  344. 'type': 'string',
  345. 'required': False,
  346. 'nullable': True,
  347. 'maxlength': 255
  348. }
  349. }
  350. RECORDING_STOP_SCHEMA = {
  351. "request_id": {
  352. 'type': 'string',
  353. 'required': True,
  354. 'empty': False,
  355. 'regex': r'^[a-zA-Z0-9]{1,36}$'
  356. },
  357. "command": {
  358. 'type': 'string',
  359. 'required': True,
  360. 'allowed': ["stop"]
  361. }
  362. }
  363. PULL2PUSH_START_SCHEMA = {
  364. "request_id": {
  365. 'type': 'string',
  366. 'required': True,
  367. 'empty': False,
  368. 'regex': r'^[a-zA-Z0-9]{1,36}$'
  369. },
  370. "command": {
  371. 'type': 'string',
  372. 'required': True,
  373. 'allowed': ["start"]
  374. },
  375. "video_urls": {
  376. 'type': 'list',
  377. 'required': True,
  378. 'nullable': False,
  379. 'schema': {
  380. 'type': 'dict',
  381. 'required': True,
  382. 'schema': {
  383. "id": {
  384. 'type': 'string',
  385. 'required': True,
  386. 'empty': False,
  387. 'dependencies': "pull_url",
  388. 'regex': r'^[a-zA-Z0-9]{1,255}$'
  389. },
  390. "pull_url": {
  391. 'type': 'string',
  392. 'required': True,
  393. 'empty': False,
  394. 'dependencies': "push_url",
  395. 'regex': r'^(https|http|rtsp|rtmp|artc|webrtc|ws)://\w.+$'
  396. },
  397. "push_url": {
  398. 'type': 'string',
  399. 'required': True,
  400. 'empty': False,
  401. 'dependencies': "id",
  402. 'regex': r'^(https|http|rtsp|rtmp|artc|webrtc|ws)://\w.+$'
  403. }
  404. }
  405. }
  406. }
  407. }
  408. PULL2PUSH_STOP_SCHEMA = {
  409. "request_id": {
  410. 'type': 'string',
  411. 'required': True,
  412. 'empty': False,
  413. 'regex': r'^[a-zA-Z0-9]{1,36}$'
  414. },
  415. "command": {
  416. 'type': 'string',
  417. 'required': True,
  418. 'allowed': ["start", "stop"]
  419. },
  420. "video_ids": {
  421. 'type': 'list',
  422. 'required': False,
  423. 'nullable': True,
  424. 'schema': {
  425. 'type': 'string',
  426. 'required': True,
  427. 'empty': False,
  428. 'regex': r'^[a-zA-Z0-9]{1,255}$'
  429. }
  430. }
  431. }