cli to control zed camera start and stop. 2. measure now use every svo2 file for 1 fish, give intermideate result and final result with confidecne level(*).
This commit is contained in:
@@ -12,10 +12,12 @@ from __future__ import annotations
|
||||
import asyncio
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
from typing import Dict, List
|
||||
from typing import Dict, List, Optional
|
||||
|
||||
from loguru import logger
|
||||
|
||||
from app.compat import to_thread
|
||||
|
||||
from app.services.action_watch import iter_mp4
|
||||
from app.services.measure import transcode_src_to_h264_dst
|
||||
from app.services.video_slice import get_video_duration, slice_video
|
||||
@@ -60,7 +62,7 @@ _global_slice_urls: List[str] = []
|
||||
_last_source_mtime: float = 0.0
|
||||
|
||||
|
||||
def resolve_water_video_source(settings: Settings) -> Path | None:
|
||||
def resolve_water_video_source(settings: Settings) -> Optional[Path]:
|
||||
"""优先 BIOMASS_WATER_VIDEO_SOURCE;否则取 ACTION_WATCH_DIR 中 mtime 最新的 .mp4。"""
|
||||
cfg = settings.biomass_water_video_source
|
||||
if cfg is not None:
|
||||
@@ -103,13 +105,13 @@ async def _publish_video(
|
||||
tmp.unlink(missing_ok=True)
|
||||
|
||||
try:
|
||||
ok = await asyncio.to_thread(transcode_src_to_h264_dst, src, tmp)
|
||||
ok = await to_thread(transcode_src_to_h264_dst, src, tmp)
|
||||
if ok and tmp.is_file() and tmp.stat().st_size > 0:
|
||||
tmp.replace(dst)
|
||||
logger.info("[water-video] published H.264: {} -> {}", src.name, dst.name)
|
||||
else:
|
||||
tmp.unlink(missing_ok=True)
|
||||
await asyncio.to_thread(shutil.copy2, src, dst)
|
||||
await to_thread(shutil.copy2, src, dst)
|
||||
logger.warning(
|
||||
"[water-video] transcode failed, copied raw: {} -> {}",
|
||||
src.name,
|
||||
|
||||
Reference in New Issue
Block a user