pub struct Camera {Show 32 fields
pub id: String,
pub site_id: Option<String>,
pub name: String,
pub vendor: String,
pub model: Option<String>,
pub address: Option<String>,
pub rtsp_port: i64,
pub username: Option<String>,
pub password: Option<String>,
pub main_stream_url: Option<String>,
pub sub_stream_url: Option<String>,
pub record_stream: String,
pub codec: Option<String>,
pub resolution_main: Option<String>,
pub resolution_sub: Option<String>,
pub fps_main: Option<i64>,
pub fps_sub: Option<i64>,
pub capabilities: Json<Value>,
pub record_enabled: bool,
pub segment_seconds: i64,
pub retention_hours: i64,
pub storage_quota_bytes: Option<i64>,
pub record_audio: bool,
pub record_mode: String,
pub pre_roll_seconds: i64,
pub post_roll_seconds: i64,
pub mirror_enabled: bool,
pub anr_enabled: bool,
pub anr_replay_url_template: Option<String>,
pub enabled: bool,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}Expand description
Camera row as stored. password is never serialized to clients; use CameraView for output.
Fields§
§id: String§site_id: Option<String>§name: String§vendor: String§model: Option<String>§address: Option<String>§rtsp_port: i64§username: Option<String>§password: Option<String>§main_stream_url: Option<String>§sub_stream_url: Option<String>§record_stream: String§codec: Option<String>§resolution_main: Option<String>§resolution_sub: Option<String>§fps_main: Option<i64>§fps_sub: Option<i64>§capabilities: Json<Value>§record_enabled: bool§segment_seconds: i64§retention_hours: i64§storage_quota_bytes: Option<i64>Per-camera storage quota in bytes; NULL means no per-camera cap.
record_audio: boolRecord the camera’s audio stream (pass-through) instead of dropping it.
record_mode: StringWhen the recorder runs: continuous | scheduled | event | scheduled_event.
pre_roll_seconds: i64Event recording: footage desired BEFORE a trigger (best-effort, see recorder service).
post_roll_seconds: i64Event recording: how long the recorder keeps writing after a trigger (the trigger window).
mirror_enabled: boolRun a SECOND ffmpeg pipeline writing identical segments to HELDAR_MIRROR_RECORDINGS_DIR (redundant DVR copy). No-op unless the mirror dir is configured.
anr_enabled: boolLet the ANR loop re-fetch missed footage from the camera’s onboard storage to fill gaps.
anr_replay_url_template: Option<String>Optional replay URL template for ANR ({start}/{end} placeholders); NULL = default Hikvision RTSP playback built from address+credentials.
enabled: bool§created_at: DateTime<Utc>§updated_at: DateTime<Utc>Implementations§
Trait Implementations§
Source§impl From<Camera> for CameraView
impl From<Camera> for CameraView
Source§impl<'a, R: Row> FromRow<'a, R> for Camerawhere
&'a str: ColumnIndex<R>,
String: Decode<'a, R::Database> + Type<R::Database>,
Option<String>: Decode<'a, R::Database> + Type<R::Database>,
i64: Decode<'a, R::Database> + Type<R::Database>,
Option<i64>: Decode<'a, R::Database> + Type<R::Database>,
Json<Value>: Decode<'a, R::Database> + Type<R::Database>,
bool: Decode<'a, R::Database> + Type<R::Database>,
DateTime<Utc>: Decode<'a, R::Database> + Type<R::Database>,
impl<'a, R: Row> FromRow<'a, R> for Camerawhere
&'a str: ColumnIndex<R>,
String: Decode<'a, R::Database> + Type<R::Database>,
Option<String>: Decode<'a, R::Database> + Type<R::Database>,
i64: Decode<'a, R::Database> + Type<R::Database>,
Option<i64>: Decode<'a, R::Database> + Type<R::Database>,
Json<Value>: Decode<'a, R::Database> + Type<R::Database>,
bool: Decode<'a, R::Database> + Type<R::Database>,
DateTime<Utc>: Decode<'a, R::Database> + Type<R::Database>,
Auto Trait Implementations§
impl Freeze for Camera
impl RefUnwindSafe for Camera
impl Send for Camera
impl Sync for Camera
impl Unpin for Camera
impl UnsafeUnpin for Camera
impl UnwindSafe for Camera
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more