|
|
@@ -3,6 +3,7 @@ import os
|
|
|
import shutil
|
|
|
import subprocess
|
|
|
import time
|
|
|
+import platform
|
|
|
from concurrent.futures import ThreadPoolExecutor
|
|
|
from datetime import datetime
|
|
|
from threading import Lock, Timer
|
|
|
@@ -13,6 +14,7 @@ from pydantic import BaseModel
|
|
|
|
|
|
from app.core.config import settings
|
|
|
from app.services.storage import get_storage_service, sanitize_name
|
|
|
+from app.utils.init_network import init_network
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@@ -28,6 +30,10 @@ active_statuses = {"starting", "recording", "stopping", "uploading"}
|
|
|
router = APIRouter()
|
|
|
|
|
|
|
|
|
+# !!!!!!!!!!!!!!!!!!!!!这个网络路由要走usb配置!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
class TaskRequest(BaseModel):
|
|
|
camera_id: str
|
|
|
task_name: str
|
|
|
@@ -48,11 +54,7 @@ def _build_response(task_status: Dict[str, Any]) -> Dict[str, Any]:
|
|
|
"camera_id": task_status.get("camera_id"),
|
|
|
"task_name": task_status.get("task_name"),
|
|
|
"start_time": task_status.get("start_time"),
|
|
|
- "storage_type": task_status.get("storage_type"),
|
|
|
- "local_file": task_status.get("local_file"),
|
|
|
- "bucket": task_status.get("bucket"),
|
|
|
- "object_name": task_status.get("object_name"),
|
|
|
- "download_url": task_status.get("download_url"),
|
|
|
+ "video_url": task_status.get("download_url"),
|
|
|
"stop_reason": task_status.get("stop_reason"),
|
|
|
"error": task_status.get("error"),
|
|
|
"local_file_deleted": task_status.get("local_file_deleted"),
|
|
|
@@ -185,7 +187,8 @@ def record_camera(camera_id: str, task_name: str, local_file: str) -> int:
|
|
|
process.stdin.write("q\n")
|
|
|
process.stdin.flush()
|
|
|
except OSError:
|
|
|
- logger.info("FFmpeg 标准输入已关闭,跳过优雅停止写入。摄像头: %s,任务: %s", camera_id, task_name)
|
|
|
+ logger.info("FFmpeg 标准输入已关闭,跳过优雅停止写入。摄像头: %s,任务: %s", camera_id,
|
|
|
+ task_name)
|
|
|
break
|
|
|
|
|
|
time.sleep(0.2)
|
|
|
@@ -281,6 +284,9 @@ def start_task(req: TaskRequest):
|
|
|
camera_id = req.camera_id
|
|
|
task_name = req.task_name
|
|
|
|
|
|
+ if platform.system() == 'Linux':
|
|
|
+ print("Linux 如果用usb转接网口, 就用这个")
|
|
|
+ init_network()
|
|
|
logger.info("收到启动录像请求。摄像头: %s,任务: %s", camera_id, task_name)
|
|
|
|
|
|
if camera_id not in settings.CAMERA_CONFIG:
|