everything works
This commit is contained in:
@@ -285,6 +285,22 @@ class Settings(BaseSettings):
|
||||
"BIOMASS_SONAR_VIDEO_SLICE_SEC", "biomass_sonar_video_slice_sec"
|
||||
),
|
||||
)
|
||||
#: 声呐切片顺序:``tail`` = 每次取文件末尾 N 秒(``-sseof``);``sequential`` = 从 t=0 起按 N 秒顺序切完整块(不足一块不发布)。**BIOMASS_SONAR_SLICE_ORDER**
|
||||
biomass_sonar_slice_order: str = Field(
|
||||
default="sequential",
|
||||
validation_alias=AliasChoices(
|
||||
"BIOMASS_SONAR_SLICE_ORDER", "biomass_sonar_slice_order"
|
||||
),
|
||||
)
|
||||
#: 顺序模式下每轮监控循环最多发布几块完整切片;``0`` = 不限制(长视频可能长时间占住循环)。**BIOMASS_SONAR_MAX_CHUNKS_PER_POLL**
|
||||
biomass_sonar_max_chunks_per_poll: int = Field(
|
||||
default=1,
|
||||
ge=0,
|
||||
validation_alias=AliasChoices(
|
||||
"BIOMASS_SONAR_MAX_CHUNKS_PER_POLL",
|
||||
"biomass_sonar_max_chunks_per_poll",
|
||||
),
|
||||
)
|
||||
#: 发布到 MEDIA_ROOT 的 H.264 文件名。**BIOMASS_SONAR_VIDEO_MEDIA_NAME**
|
||||
biomass_sonar_video_media_name: str = "biomass_sonar.mp4"
|
||||
#: 为 True 时声呐发布管线在 ffmpeg 转 H.264 之前先做 Farneback 光流 overlay(与 ``/sonar/video/`` 返回的仍是同一 ``video_path`` 字段)。**BIOMASS_SONAR_OPTICAL_FLOW**
|
||||
@@ -396,6 +412,21 @@ class Settings(BaseSettings):
|
||||
return None
|
||||
return v
|
||||
|
||||
@field_validator("biomass_sonar_slice_order", mode="before")
|
||||
@classmethod
|
||||
def _normalize_biomass_sonar_slice_order(cls, v: object) -> str:
|
||||
if v is None:
|
||||
return "sequential"
|
||||
s = str(v).strip().lower()
|
||||
if s in frozenset({"tail", "last", "last_n", "sseof"}):
|
||||
return "tail"
|
||||
if s in frozenset({"sequential", "seq", "from_start"}):
|
||||
return "sequential"
|
||||
raise ValueError(
|
||||
"biomass_sonar_slice_order must be 'tail' or 'sequential' "
|
||||
f"(got {v!r})"
|
||||
)
|
||||
|
||||
@field_validator(
|
||||
"action_watch_dir",
|
||||
"biomass_water_video_source",
|
||||
|
||||
Reference in New Issue
Block a user