fix(camera): resolve camera status display issue

This commit is contained in:
2026-01-21 16:06:39 +08:00
parent 294b0e1abb
commit 6712a311f8
3 changed files with 54 additions and 10 deletions

View File

@@ -15,6 +15,7 @@ from db.models import get_db
from inference.pipeline import get_pipeline
router = APIRouter(prefix="/api/cameras", tags=["摄像头管理"])
router2 = APIRouter(prefix="/api/camera", tags=["摄像头状态"])
class CameraUpdateRequest(BaseModel):
@@ -163,3 +164,42 @@ def get_camera_status(camera_id: int, db: Session = Depends(get_db)):
"last_check_time": None,
"stream": stream_info,
}
router2 = APIRouter(prefix="/api/camera", tags=["摄像头状态"])
@router2.get("/status/all")
def get_all_camera_status(db: Session = Depends(get_db)):
from db.crud import get_all_cameras, get_camera_status as get_status
cameras = get_all_cameras(db, enabled_only=False)
pipeline = get_pipeline()
result = []
for cam in cameras:
status = get_status(db, cam.id)
stream = pipeline.stream_manager.get_stream(str(cam.id))
stream_info = stream.get_info() if stream else None
if status:
result.append({
"camera_id": cam.id,
"is_running": status.is_running,
"fps": status.fps,
"error_message": status.error_message,
"last_check_time": status.last_check_time.isoformat() if status.last_check_time else None,
"stream": stream_info,
})
else:
result.append({
"camera_id": cam.id,
"is_running": False,
"fps": 0.0,
"error_message": None,
"last_check_time": None,
"stream": stream_info,
})
return result