use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct WebRTCICEServer {
url: String,
username: String,
password: String,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct TMediaMTXGlobalConfig {
pub log_level: String,
pub log_destinations: Vec<String>,
pub log_file: String,
pub read_timeout: String,
pub write_timeout: String,
pub write_queue_size: i32,
pub udp_max_payload_size: i32,
pub external_authentication_url: Option<String>,
pub api: bool,
pub api_address: String,
pub metrics: bool,
pub metrics_address: String,
pub pprof: bool,
pub pprof_address: String,
pub run_on_connect: String,
pub run_on_connect_restart: bool,
pub run_on_disconnect: String,
pub rtsp: bool,
pub protocols: Vec<String>,
pub encryption: String,
pub rtsp_address: String,
pub rtsps_address: String,
pub rtp_address: String,
pub rtcp_address: String,
pub multicast_ip_range: Option<String>,
pub multicast_rtp_port: Option<i32>,
pub multicast_rtcp_port: Option<i32>,
pub server_key: String,
pub server_cert: String,
pub auth_methods: Vec<String>,
pub rtmp: bool,
pub rtmp_address: String,
pub rtmp_encryption: String,
pub rtmps_address: String,
pub rtmp_server_key: String,
pub rtmp_server_cert: String,
pub hls: bool,
pub hls_address: String,
pub hls_encryption: bool,
pub hls_server_key: String,
pub hls_server_cert: String,
pub hls_always_remux: bool,
pub hls_variant: String,
pub hls_segment_count: i32,
pub hls_segment_duration: String,
pub hls_part_duration: String,
pub hls_segment_max_size: String,
pub hls_allow_origin: String,
pub hls_trusted_proxies: Vec<String>,
pub hls_directory: String,
pub webrtc: bool,
pub webrtc_address: String,
pub webrtc_encryption: bool,
pub webrtc_server_key: String,
pub webrtc_server_cert: String,
pub webrtc_allow_origin: String,
pub webrtc_trusted_proxies: Vec<String>,
pub webrtc_local_udp_address: Option<String>,
pub webrtc_local_tcp_address: Option<String>,
pub webrtc_ips_from_interfaces: Option<bool>,
pub webrtc_ips_from_interfaces_list: Option<Vec<String>>,
pub webrtc_additional_hosts: Vec<String>,
pub webrtc_ice_servers2: Option<Vec<WebRTCICEServer>>,
pub srt: bool,
pub srt_address: String,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct TMediaMTXGlobalPatch {
pub log_level: Option<String>,
pub log_destinations: Option<Vec<String>>,
pub log_file: Option<String>,
pub read_timeout: Option<String>,
pub write_timeout: Option<String>,
pub write_queue_size: Option<u32>,
pub udp_max_payload_size: Option<u32>,
pub external_authentication_url: Option<String>,
pub api: Option<bool>,
pub api_address: Option<String>,
pub metrics: Option<bool>,
pub metrics_address: Option<String>,
pprof: Option<bool>,
pub pprof_address: Option<String>,
pub run_on_connect: Option<String>,
pub run_on_connect_restart: Option<bool>,
pub run_on_disconnect: Option<String>,
pub rtsp: Option<bool>,
pub protocols: Option<Vec<String>>,
pub encryption: Option<String>,
pub rtsp_address: Option<String>,
pub rtsps_address: Option<String>,
pub rtp_address: Option<String>,
pub rtcp_address: Option<String>,
pub multicast_ip_range: Option<String>,
pub multicast_rtp_port: Option<u32>,
pub multicast_rtcp_port: Option<u32>,
pub server_key: Option<String>,
pub server_cert: Option<String>,
pub auth_methods: Option<Vec<String>>,
rtmp: Option<bool>,
pub rtmp_address: Option<String>,
pub rtmp_encryption: Option<String>,
pub rtmps_address: Option<String>,
pub rtmp_server_key: Option<String>,
pub rtmp_server_cert: Option<String>,
pub hls: Option<bool>,
pub hls_address: Option<String>,
pub hls_encryption: Option<bool>,
pub hls_server_key: Option<String>,
pub hls_server_cert: Option<String>,
pub hls_always_remux: Option<bool>,
pub hls_variant: Option<String>,
pub hls_segment_count: Option<u32>,
pub hls_segment_duration: Option<String>,
pub hls_part_duration: Option<String>,
pub hls_segment_max_size: Option<String>,
pub hls_allow_origin: Option<String>,
pub hls_trusted_proxies: Option<Vec<String>>,
pub hls_directory: Option<String>,
pub webrtc: Option<bool>,
pub webrtc_address: Option<String>,
pub webrtc_encryption: Option<bool>,
pub webrtc_server_key: Option<String>,
pub webrtc_server_cert: Option<String>,
pub webrtc_allow_origin: Option<String>,
pub webrtc_trusted_proxies: Option<Vec<String>>,
pub webrtc_local_udp_address: Option<String>,
pub webrtc_local_tcp_address: Option<String>,
pub webrtc_ips_from_interfaces: Option<bool>,
pub webrtc_ips_from_interfaces_list: Option<Vec<String>>,
pub webrtc_additional_hosts: Option<Vec<String>>,
pub webrtc_ice_servers2: Option<Vec<WebRTCICEServer>>,
srt: Option<bool>,
pub srt_address: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct TMediaMTXGetDefaultPath {
pub name: String,
pub source: String,
pub source_fingerprint: String,
pub source_on_demand: bool,
pub source_on_demand_start_timeout: String,
pub source_on_demand_close_after: String,
pub max_readers: i32,
pub srt_read_passphrase: String,
pub fallback: String,
pub record: bool,
pub record_path: String,
pub record_format: String,
pub record_part_duration: String,
pub record_segment_duration: String,
pub record_delete_after: String,
pub publish_user: String,
pub publish_pass: String,
pub publish_ips: Option<Vec<String>>,
pub read_user: String,
pub read_pass: String,
pub read_ips: Option<Vec<String>>,
pub override_publisher: bool,
pub srt_publish_passphrase: String,
pub rtsp_transport: String,
pub rtsp_any_port: bool,
pub rtsp_range_type: String,
pub rtsp_range_start: String,
pub source_redirect: String,
pub rpi_camera_cam_id: Option<i32>,
pub rpi_camera_width: i32,
pub rpi_camera_height: i32,
pub rpi_camera_h_flip: bool,
pub rpi_camera_v_flip: bool,
pub rpi_camera_brightness: i32,
pub rpi_camera_contrast: i32,
pub rpi_camera_saturation: i32,
pub rpi_camera_sharpness: i32,
pub rpi_camera_exposure: String,
pub rpi_camera_awb: Option<String>,
pub rpi_camera_denoise: String,
pub rpi_camera_shutter: i32,
pub rpi_camera_metering: String,
pub rpi_camera_gain: i32,
pub rpi_camera_ev: Option<i32>,
pub rpi_camera_roi: Option<String>,
pub rpi_camera_hdr: Option<bool>,
pub rpi_camera_tuning_file: String,
pub rpi_camera_mode: String,
pub rpi_camera_fps: Option<i32>,
pub rpi_camera_idr_period: Option<i32>,
pub rpi_camera_bitrate: i32,
pub rpi_camera_profile: String,
pub rpi_camera_level: String,
pub rpi_camera_af_mode: String,
pub rpi_camera_af_range: String,
pub rpi_camera_af_speed: String,
pub rpi_camera_lens_position: i32,
pub rpi_camera_af_window: String,
pub rpi_camera_text_overlay_enable: bool,
pub rpi_camera_text_overlay: String,
pub run_on_init: String,
pub run_on_init_restart: bool,
pub run_on_demand: String,
pub run_on_demand_restart: bool,
pub run_on_demand_start_timeout: String,
pub run_on_demand_close_after: String,
pub run_on_un_demand: String,
pub run_on_ready: String,
pub run_on_ready_restart: bool,
pub run_on_not_ready: String,
pub run_on_read: String,
pub run_on_read_restart: bool,
pub run_on_unread: String,
pub run_on_record_segment_create: String,
pub run_on_record_segment_complete: String,
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct TMediaMTXPatchDefaultPath {
pub name: Option<String>,
pub source: Option<String>,
pub source_fingerprint: Option<String>,
pub source_on_demand: Option<bool>,
pub source_on_demand_start_timeout: Option<String>,
pub source_on_demand_close_after: Option<String>,
pub max_readers: Option<i32>,
pub srt_read_passphrase: Option<String>,
pub fallback: Option<String>,
pub record: Option<bool>,
pub record_path: Option<String>,
pub record_format: Option<String>,
pub record_part_duration: Option<String>,
pub record_segment_duration: Option<String>,
pub record_delete_after: Option<String>,
pub publish_user: Option<String>,
pub publish_pass: Option<String>,
pub publish_ips: Option<Vec<String>>,
pub read_user: Option<String>,
pub read_pass: Option<String>,
pub read_ips: Option<Vec<String>>,
pub override_publisher: Option<bool>,
pub srt_publish_passphrase: Option<String>,
pub rtsp_transport: Option<String>,
pub rtsp_any_port: Option<bool>,
pub rtsp_range_type: Option<String>,
pub rtsp_range_start: Option<String>,
pub source_redirect: Option<String>,
pub rpi_camera_cam_id: Option<i32>,
pub rpi_camera_width: Option<i32>,
pub rpi_camera_height: Option<i32>,
pub rpi_camera_h_flip: Option<bool>,
pub rpi_camera_v_flip: Option<bool>,
pub rpi_camera_brightness: Option<i32>,
pub rpi_camera_contrast: Option<i32>,
pub rpi_camera_saturation: Option<i32>,
pub rpi_camera_sharpness: Option<i32>,
pub rpi_camera_exposure: Option<String>,
pub rpi_camera_awb: Option<String>,
pub rpi_camera_denoise: Option<String>,
pub rpi_camera_shutter: Option<i32>,
pub rpi_camera_metering: Option<String>,
pub rpi_camera_gain: Option<i32>,
pub rpi_camera_ev: Option<i32>,
pub rpi_camera_roi: Option<String>,
pub rpi_camera_hdr: Option<bool>,
pub rpi_camera_tuning_file: Option<String>,
pub rpi_camera_mode: Option<String>,
pub rpi_camera_fps: Option<i32>,
pub rpi_camera_idr_period: Option<i32>,
pub rpi_camera_bitrate: Option<i32>,
pub rpi_camera_profile: Option<String>,
pub rpi_camera_level: Option<String>,
pub rpi_camera_af_mode: Option<String>,
pub rpi_camera_af_range: Option<String>,
pub rpi_camera_af_speed: Option<String>,
pub rpi_camera_lens_position: Option<i32>,
pub rpi_camera_af_window: Option<String>,
pub rpi_camera_text_overlay_enable: Option<bool>,
pub rpi_camera_text_overlay: Option<String>,
pub run_on_init: Option<String>,
pub run_on_init_restart: Option<bool>,
pub run_on_demand: Option<String>,
pub run_on_demand_restart: Option<bool>,
pub run_on_demand_start_timeout: Option<String>,
pub run_on_demand_close_after: Option<String>,
pub run_on_un_demand: Option<String>,
pub run_on_ready: Option<String>,
pub run_on_ready_restart: Option<bool>,
pub run_on_not_ready: Option<String>,
pub run_on_read: Option<String>,
pub run_on_read_restart: Option<bool>,
pub run_on_unread: Option<String>,
pub run_on_record_segment_create: Option<String>,
pub run_on_record_segment_complete: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct MediaMTXPathsConfigs {
pub page_count: u32,
pub items: Vec<TMediaMTXGetDefaultPath>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct TMediaMTXAddPath {
pub name: String,
pub source: Option<String>,
pub source_fingerprint: Option<String>,
pub source_on_demand: Option<bool>,
pub source_on_demand_start_timeout: Option<String>,
pub source_on_demand_close_after: Option<String>,
pub max_readers: Option<i32>,
pub srt_read_passphrase: Option<String>,
pub fallback: Option<String>,
pub record: Option<bool>,
pub record_path: Option<String>,
pub record_format: Option<String>,
pub record_part_duration: Option<String>,
pub record_segment_duration: Option<String>,
pub record_delete_after: Option<String>,
pub publish_user: Option<String>,
pub publish_pass: Option<String>,
pub publish_ips: Option<Vec<String>>,
pub read_user: Option<String>,
pub read_pass: Option<String>,
pub read_ips: Option<Vec<String>>,
pub override_publisher: Option<bool>,
pub srt_publish_passphrase: Option<String>,
pub rtsp_transport: Option<String>,
pub rtsp_any_port: Option<bool>,
pub rtsp_range_type: Option<String>,
pub rtsp_range_start: Option<String>,
pub source_redirect: Option<String>,
pub rpi_camera_cam_id: Option<i32>,
pub rpi_camera_width: Option<i32>,
pub rpi_camera_height: Option<i32>,
pub rpi_camera_h_flip: Option<bool>,
pub rpi_camera_v_flip: Option<bool>,
pub rpi_camera_brightness: Option<i32>,
pub rpi_camera_contrast: Option<i32>,
pub rpi_camera_saturation: Option<i32>,
pub rpi_camera_sharpness: Option<i32>,
pub rpi_camera_exposure: Option<String>,
pub rpi_camera_awb: Option<String>,
pub rpi_camera_denoise: Option<String>,
pub rpi_camera_shutter: Option<i32>,
pub rpi_camera_metering: Option<String>,
pub rpi_camera_gain: Option<i32>,
pub rpi_camera_ev: Option<i32>,
pub rpi_camera_roi: Option<String>,
pub rpi_camera_hdr: Option<bool>,
pub rpi_camera_tuning_file: Option<String>,
pub rpi_camera_mode: Option<String>,
pub rpi_camera_fps: Option<i32>,
pub rpi_camera_idr_period: Option<i32>,
pub rpi_camera_bitrate: Option<i32>,
pub rpi_camera_profile: Option<String>,
pub rpi_camera_level: Option<String>,
pub rpi_camera_af_mode: Option<String>,
pub rpi_camera_af_range: Option<String>,
pub rpi_camera_af_speed: Option<String>,
pub rpi_camera_lens_position: Option<i32>,
pub rpi_camera_af_window: Option<String>,
pub rpi_camera_text_overlay_enable: Option<bool>,
pub rpi_camera_text_overlay: Option<String>,
pub run_on_init: Option<String>,
pub run_on_init_restart: Option<bool>,
pub run_on_demand: Option<String>,
pub run_on_demand_restart: Option<bool>,
pub run_on_demand_start_timeout: Option<String>,
pub run_on_demand_close_after: Option<String>,
pub run_on_un_demand: Option<String>,
pub run_on_ready: Option<String>,
pub run_on_ready_restart: Option<bool>,
pub run_on_not_ready: Option<String>,
pub run_on_read: Option<String>,
pub run_on_read_restart: Option<bool>,
pub run_on_unread: Option<String>,
pub run_on_record_segment_create: Option<String>,
pub run_on_record_segment_complete: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct TMediaMTXDeletePath {
pub name: String,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct MediaMTXPathSource {
#[serde(rename = "type")]
pub type_field: String,
pub id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct MediaMTXPathReader {
#[serde(rename = "type")]
pub type_field: String,
pub id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct MediaMTXPathStatus {
pub name: String,
pub conf_name: String,
pub source: MediaMTXPathSource,
pub ready: bool,
pub ready_time: String,
pub tracks: Vec<String>,
pub bytes_received: u64,
pub bytes_sent: u64,
pub readers: Vec<MediaMTXPathReader>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct MediaMTXPathsStatusList {
pub page_count: u32,
pub items: Vec<MediaMTXPathStatus>,
}