fix(camera): resolve camera status display issue
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user