1use serde::{Deserialize, Serialize};
2#[derive(Serialize, Deserialize, Debug, Clone)]
3#[serde(rename_all = "camelCase")]
4pub struct WebRTCICEServer {
5 url: String,
6 username: String,
7 password: String,
8}
9#[derive(Serialize, Deserialize, Debug, Clone)]
10#[serde(rename_all = "camelCase")]
11pub struct TMediaMTXGlobalConfig {
12 pub log_level: String,
13
14 pub log_destinations: Vec<String>,
15
16 pub log_file: String,
17
18 pub read_timeout: String,
19
20 pub write_timeout: String,
21
22 pub write_queue_size: i32,
23
24 pub udp_max_payload_size: i32,
25
26 pub external_authentication_url: Option<String>,
27 pub api: bool,
28
29 pub api_address: String,
30 pub metrics: bool,
31
32 pub metrics_address: String,
33 pub pprof: bool,
34
35 pub pprof_address: String,
36
37 pub run_on_connect: String,
38
39 pub run_on_connect_restart: bool,
40
41 pub run_on_disconnect: String,
42 pub rtsp: bool,
43 pub protocols: Vec<String>,
44 pub encryption: String,
45
46 pub rtsp_address: String,
47
48 pub rtsps_address: String,
49
50 pub rtp_address: String,
51
52 pub rtcp_address: String,
53
54 pub multicast_ip_range: Option<String>,
55
56 pub multicast_rtp_port: Option<i32>,
57
58 pub multicast_rtcp_port: Option<i32>,
59
60 pub server_key: String,
61
62 pub server_cert: String,
63
64 pub auth_methods: Vec<String>,
65 pub rtmp: bool,
66
67 pub rtmp_address: String,
68
69 pub rtmp_encryption: String,
70
71 pub rtmps_address: String,
72
73 pub rtmp_server_key: String,
74
75 pub rtmp_server_cert: String,
76 pub hls: bool,
77
78 pub hls_address: String,
79
80 pub hls_encryption: bool,
81
82 pub hls_server_key: String,
83
84 pub hls_server_cert: String,
85
86 pub hls_always_remux: bool,
87
88 pub hls_variant: String,
89
90 pub hls_segment_count: i32,
91
92 pub hls_segment_duration: String,
93
94 pub hls_part_duration: String,
95
96 pub hls_segment_max_size: String,
97
98 pub hls_allow_origin: String,
99
100 pub hls_trusted_proxies: Vec<String>,
101
102 pub hls_directory: String,
103 pub webrtc: bool,
104
105 pub webrtc_address: String,
106
107 pub webrtc_encryption: bool,
108
109 pub webrtc_server_key: String,
110
111 pub webrtc_server_cert: String,
112
113 pub webrtc_allow_origin: String,
114
115 pub webrtc_trusted_proxies: Vec<String>,
116
117 pub webrtc_local_udp_address: Option<String>,
118
119 pub webrtc_local_tcp_address: Option<String>,
120
121 pub webrtc_ips_from_interfaces: Option<bool>,
122
123 pub webrtc_ips_from_interfaces_list: Option<Vec<String>>,
124
125 pub webrtc_additional_hosts: Vec<String>,
126
127 pub webrtc_ice_servers2: Option<Vec<WebRTCICEServer>>,
128 pub srt: bool,
129
130 pub srt_address: String,
131}
132
133#[derive(Serialize, Deserialize, Debug, Clone)]
134#[serde(rename_all = "camelCase")]
135pub struct TMediaMTXGlobalPatch {
136 pub log_level: Option<String>,
137
138 pub log_destinations: Option<Vec<String>>,
139
140 pub log_file: Option<String>,
141
142 pub read_timeout: Option<String>,
143
144 pub write_timeout: Option<String>,
145
146 pub write_queue_size: Option<u32>,
147
148 pub udp_max_payload_size: Option<u32>,
149
150 pub external_authentication_url: Option<String>,
151 pub api: Option<bool>,
152
153 pub api_address: Option<String>,
154 pub metrics: Option<bool>,
155
156 pub metrics_address: Option<String>,
157 pprof: Option<bool>,
158
159 pub pprof_address: Option<String>,
160
161 pub run_on_connect: Option<String>,
162
163 pub run_on_connect_restart: Option<bool>,
164
165 pub run_on_disconnect: Option<String>,
166 pub rtsp: Option<bool>,
167 pub protocols: Option<Vec<String>>,
168 pub encryption: Option<String>,
169
170 pub rtsp_address: Option<String>,
171
172 pub rtsps_address: Option<String>,
173
174 pub rtp_address: Option<String>,
175
176 pub rtcp_address: Option<String>,
177
178 pub multicast_ip_range: Option<String>,
179
180 pub multicast_rtp_port: Option<u32>,
181
182 pub multicast_rtcp_port: Option<u32>,
183
184 pub server_key: Option<String>,
185
186 pub server_cert: Option<String>,
187
188 pub auth_methods: Option<Vec<String>>,
189 rtmp: Option<bool>,
190
191 pub rtmp_address: Option<String>,
192
193 pub rtmp_encryption: Option<String>,
194
195 pub rtmps_address: Option<String>,
196
197 pub rtmp_server_key: Option<String>,
198
199 pub rtmp_server_cert: Option<String>,
200 pub hls: Option<bool>,
201
202 pub hls_address: Option<String>,
203
204 pub hls_encryption: Option<bool>,
205
206 pub hls_server_key: Option<String>,
207
208 pub hls_server_cert: Option<String>,
209
210 pub hls_always_remux: Option<bool>,
211
212 pub hls_variant: Option<String>,
213
214 pub hls_segment_count: Option<u32>,
215
216 pub hls_segment_duration: Option<String>,
217
218 pub hls_part_duration: Option<String>,
219
220 pub hls_segment_max_size: Option<String>,
221
222 pub hls_allow_origin: Option<String>,
223
224 pub hls_trusted_proxies: Option<Vec<String>>,
225
226 pub hls_directory: Option<String>,
227 pub webrtc: Option<bool>,
228
229 pub webrtc_address: Option<String>,
230
231 pub webrtc_encryption: Option<bool>,
232
233 pub webrtc_server_key: Option<String>,
234
235 pub webrtc_server_cert: Option<String>,
236
237 pub webrtc_allow_origin: Option<String>,
238
239 pub webrtc_trusted_proxies: Option<Vec<String>>,
240
241 pub webrtc_local_udp_address: Option<String>,
242
243 pub webrtc_local_tcp_address: Option<String>,
244
245 pub webrtc_ips_from_interfaces: Option<bool>,
246
247 pub webrtc_ips_from_interfaces_list: Option<Vec<String>>,
248
249 pub webrtc_additional_hosts: Option<Vec<String>>,
250
251 pub webrtc_ice_servers2: Option<Vec<WebRTCICEServer>>,
252 srt: Option<bool>,
253
254 pub srt_address: Option<String>,
255}
256
257#[derive(Serialize, Deserialize, Debug, Clone)]
258#[serde(rename_all = "camelCase")]
259pub struct TMediaMTXGetDefaultPath {
260 pub name: String,
261 pub source: String,
262 pub source_fingerprint: String,
263 pub source_on_demand: bool,
264 pub source_on_demand_start_timeout: String,
265 pub source_on_demand_close_after: String,
266 pub max_readers: i32,
267 pub srt_read_passphrase: String,
268 pub fallback: String,
269 pub record: bool,
270 pub record_path: String,
271 pub record_format: String,
272 pub record_part_duration: String,
273 pub record_segment_duration: String,
274 pub record_delete_after: String,
275 pub publish_user: String,
276 pub publish_pass: String,
277 pub publish_ips: Option<Vec<String>>,
278 pub read_user: String,
279 pub read_pass: String,
280 pub read_ips: Option<Vec<String>>,
281 pub override_publisher: bool,
282 pub srt_publish_passphrase: String,
283 pub rtsp_transport: String,
284 pub rtsp_any_port: bool,
285 pub rtsp_range_type: String,
286 pub rtsp_range_start: String,
287 pub source_redirect: String,
288 pub rpi_camera_cam_id: Option<i32>,
289 pub rpi_camera_width: i32,
290 pub rpi_camera_height: i32,
291 pub rpi_camera_h_flip: bool,
292 pub rpi_camera_v_flip: bool,
293 pub rpi_camera_brightness: i32,
294 pub rpi_camera_contrast: i32,
295 pub rpi_camera_saturation: i32,
296 pub rpi_camera_sharpness: i32,
297 pub rpi_camera_exposure: String,
298 pub rpi_camera_awb: Option<String>,
299 pub rpi_camera_denoise: String,
300 pub rpi_camera_shutter: i32,
301 pub rpi_camera_metering: String,
302 pub rpi_camera_gain: i32,
303 pub rpi_camera_ev: Option<i32>,
304 pub rpi_camera_roi: Option<String>,
305 pub rpi_camera_hdr: Option<bool>,
306 pub rpi_camera_tuning_file: String,
307 pub rpi_camera_mode: String,
308 pub rpi_camera_fps: Option<i32>,
309 pub rpi_camera_idr_period: Option<i32>,
310 pub rpi_camera_bitrate: i32,
311 pub rpi_camera_profile: String,
312 pub rpi_camera_level: String,
313 pub rpi_camera_af_mode: String,
314 pub rpi_camera_af_range: String,
315 pub rpi_camera_af_speed: String,
316 pub rpi_camera_lens_position: i32,
317 pub rpi_camera_af_window: String,
318 pub rpi_camera_text_overlay_enable: bool,
319 pub rpi_camera_text_overlay: String,
320 pub run_on_init: String,
321 pub run_on_init_restart: bool,
322 pub run_on_demand: String,
323 pub run_on_demand_restart: bool,
324 pub run_on_demand_start_timeout: String,
325 pub run_on_demand_close_after: String,
326 pub run_on_un_demand: String,
327 pub run_on_ready: String,
328 pub run_on_ready_restart: bool,
329 pub run_on_not_ready: String,
330 pub run_on_read: String,
331 pub run_on_read_restart: bool,
332 pub run_on_unread: String,
333 pub run_on_record_segment_create: String,
334 pub run_on_record_segment_complete: String,
335}
336
337#[derive(Serialize, Deserialize, Debug)]
338#[serde(rename_all = "camelCase")]
339pub struct TMediaMTXPatchDefaultPath {
340 pub name: Option<String>,
341 pub source: Option<String>,
342 pub source_fingerprint: Option<String>,
343 pub source_on_demand: Option<bool>,
344 pub source_on_demand_start_timeout: Option<String>,
345 pub source_on_demand_close_after: Option<String>,
346 pub max_readers: Option<i32>,
347 pub srt_read_passphrase: Option<String>,
348 pub fallback: Option<String>,
349 pub record: Option<bool>,
350 pub record_path: Option<String>,
351 pub record_format: Option<String>,
352 pub record_part_duration: Option<String>,
353 pub record_segment_duration: Option<String>,
354 pub record_delete_after: Option<String>,
355 pub publish_user: Option<String>,
356 pub publish_pass: Option<String>,
357 pub publish_ips: Option<Vec<String>>,
358 pub read_user: Option<String>,
359 pub read_pass: Option<String>,
360 pub read_ips: Option<Vec<String>>,
361 pub override_publisher: Option<bool>,
362 pub srt_publish_passphrase: Option<String>,
363 pub rtsp_transport: Option<String>,
364 pub rtsp_any_port: Option<bool>,
365 pub rtsp_range_type: Option<String>,
366 pub rtsp_range_start: Option<String>,
367 pub source_redirect: Option<String>,
368 pub rpi_camera_cam_id: Option<i32>,
369 pub rpi_camera_width: Option<i32>,
370 pub rpi_camera_height: Option<i32>,
371 pub rpi_camera_h_flip: Option<bool>,
372 pub rpi_camera_v_flip: Option<bool>,
373 pub rpi_camera_brightness: Option<i32>,
374 pub rpi_camera_contrast: Option<i32>,
375 pub rpi_camera_saturation: Option<i32>,
376 pub rpi_camera_sharpness: Option<i32>,
377 pub rpi_camera_exposure: Option<String>,
378 pub rpi_camera_awb: Option<String>,
379 pub rpi_camera_denoise: Option<String>,
380 pub rpi_camera_shutter: Option<i32>,
381 pub rpi_camera_metering: Option<String>,
382 pub rpi_camera_gain: Option<i32>,
383 pub rpi_camera_ev: Option<i32>,
384 pub rpi_camera_roi: Option<String>,
385 pub rpi_camera_hdr: Option<bool>,
386 pub rpi_camera_tuning_file: Option<String>,
387 pub rpi_camera_mode: Option<String>,
388 pub rpi_camera_fps: Option<i32>,
389 pub rpi_camera_idr_period: Option<i32>,
390 pub rpi_camera_bitrate: Option<i32>,
391 pub rpi_camera_profile: Option<String>,
392 pub rpi_camera_level: Option<String>,
393 pub rpi_camera_af_mode: Option<String>,
394 pub rpi_camera_af_range: Option<String>,
395 pub rpi_camera_af_speed: Option<String>,
396 pub rpi_camera_lens_position: Option<i32>,
397 pub rpi_camera_af_window: Option<String>,
398 pub rpi_camera_text_overlay_enable: Option<bool>,
399 pub rpi_camera_text_overlay: Option<String>,
400 pub run_on_init: Option<String>,
401 pub run_on_init_restart: Option<bool>,
402 pub run_on_demand: Option<String>,
403 pub run_on_demand_restart: Option<bool>,
404 pub run_on_demand_start_timeout: Option<String>,
405 pub run_on_demand_close_after: Option<String>,
406 pub run_on_un_demand: Option<String>,
407
408 pub run_on_ready: Option<String>,
409 pub run_on_ready_restart: Option<bool>,
410 pub run_on_not_ready: Option<String>,
411 pub run_on_read: Option<String>,
412 pub run_on_read_restart: Option<bool>,
413 pub run_on_unread: Option<String>,
414 pub run_on_record_segment_create: Option<String>,
415 pub run_on_record_segment_complete: Option<String>,
416}
417
418#[derive(Debug, Serialize, Deserialize, Clone)]
419#[serde(rename_all = "camelCase")]
420
421pub struct MediaMTXPathsConfigs {
422 pub page_count: u32,
423 pub items: Vec<TMediaMTXGetDefaultPath>,
424}
425
426#[derive(Serialize, Deserialize, Debug, Clone)]
427#[serde(rename_all = "camelCase")]
428pub struct TMediaMTXAddPath {
429 pub name: String,
430 pub source: Option<String>,
431 pub source_fingerprint: Option<String>,
432 pub source_on_demand: Option<bool>,
433 pub source_on_demand_start_timeout: Option<String>,
434 pub source_on_demand_close_after: Option<String>,
435 pub max_readers: Option<i32>,
436 pub srt_read_passphrase: Option<String>,
437 pub fallback: Option<String>,
438 pub record: Option<bool>,
439 pub record_path: Option<String>,
440 pub record_format: Option<String>,
441 pub record_part_duration: Option<String>,
442 pub record_segment_duration: Option<String>,
443 pub record_delete_after: Option<String>,
444 pub publish_user: Option<String>,
445 pub publish_pass: Option<String>,
446 pub publish_ips: Option<Vec<String>>,
447 pub read_user: Option<String>,
448 pub read_pass: Option<String>,
449 pub read_ips: Option<Vec<String>>,
450 pub override_publisher: Option<bool>,
451 pub srt_publish_passphrase: Option<String>,
452 pub rtsp_transport: Option<String>,
453 pub rtsp_any_port: Option<bool>,
454 pub rtsp_range_type: Option<String>,
455 pub rtsp_range_start: Option<String>,
456 pub source_redirect: Option<String>,
457 pub rpi_camera_cam_id: Option<i32>,
458 pub rpi_camera_width: Option<i32>,
459 pub rpi_camera_height: Option<i32>,
460 pub rpi_camera_h_flip: Option<bool>,
461 pub rpi_camera_v_flip: Option<bool>,
462 pub rpi_camera_brightness: Option<i32>,
463 pub rpi_camera_contrast: Option<i32>,
464 pub rpi_camera_saturation: Option<i32>,
465 pub rpi_camera_sharpness: Option<i32>,
466 pub rpi_camera_exposure: Option<String>,
467 pub rpi_camera_awb: Option<String>,
468 pub rpi_camera_denoise: Option<String>,
469 pub rpi_camera_shutter: Option<i32>,
470 pub rpi_camera_metering: Option<String>,
471 pub rpi_camera_gain: Option<i32>,
472 pub rpi_camera_ev: Option<i32>,
473 pub rpi_camera_roi: Option<String>,
474 pub rpi_camera_hdr: Option<bool>,
475 pub rpi_camera_tuning_file: Option<String>,
476 pub rpi_camera_mode: Option<String>,
477 pub rpi_camera_fps: Option<i32>,
478 pub rpi_camera_idr_period: Option<i32>,
479 pub rpi_camera_bitrate: Option<i32>,
480 pub rpi_camera_profile: Option<String>,
481 pub rpi_camera_level: Option<String>,
482 pub rpi_camera_af_mode: Option<String>,
483 pub rpi_camera_af_range: Option<String>,
484 pub rpi_camera_af_speed: Option<String>,
485 pub rpi_camera_lens_position: Option<i32>,
486 pub rpi_camera_af_window: Option<String>,
487 pub rpi_camera_text_overlay_enable: Option<bool>,
488 pub rpi_camera_text_overlay: Option<String>,
489 pub run_on_init: Option<String>,
490 pub run_on_init_restart: Option<bool>,
491 pub run_on_demand: Option<String>,
492 pub run_on_demand_restart: Option<bool>,
493 pub run_on_demand_start_timeout: Option<String>,
494 pub run_on_demand_close_after: Option<String>,
495 pub run_on_un_demand: Option<String>,
496
497 pub run_on_ready: Option<String>,
498 pub run_on_ready_restart: Option<bool>,
499 pub run_on_not_ready: Option<String>,
500 pub run_on_read: Option<String>,
501 pub run_on_read_restart: Option<bool>,
502 pub run_on_unread: Option<String>,
503 pub run_on_record_segment_create: Option<String>,
504 pub run_on_record_segment_complete: Option<String>,
505}
506
507#[derive(Serialize, Deserialize, Debug, Clone)]
508#[serde(rename_all = "camelCase")]
509pub struct TMediaMTXDeletePath {
510 pub name: String,
511}
512#[derive(Debug, Serialize, Deserialize, Clone)]
513pub struct MediaMTXPathSource {
514 #[serde(rename = "type")]
515 pub type_field: String,
516 pub id: String,
517}
518
519#[derive(Debug, Serialize, Deserialize, Clone)]
520pub struct MediaMTXPathReader {
521 #[serde(rename = "type")]
522 pub type_field: String,
523 pub id: String,
524}
525#[derive(Debug, Serialize, Deserialize, Clone)]
526#[serde(rename_all = "camelCase")]
527
528pub struct MediaMTXPathStatus {
529 pub name: String,
530 pub conf_name: String,
531 pub source: MediaMTXPathSource,
532 pub ready: bool,
533 pub ready_time: String,
534 pub tracks: Vec<String>,
535 pub bytes_received: u64,
536 pub bytes_sent: u64,
537 pub readers: Vec<MediaMTXPathReader>,
538}
539#[derive(Debug, Serialize, Deserialize, Clone)]
540#[serde(rename_all = "camelCase")]
541
542pub struct MediaMTXPathsStatusList {
543 pub page_count: u32,
544 pub items: Vec<MediaMTXPathStatus>,
545}