diff --git a/fam-edge/src/fam_edge/api_gateway/api_gateway.py b/fam-edge/src/fam_edge/api_gateway/api_gateway.py index fdd680d..c349c03 100644 --- a/fam-edge/src/fam_edge/api_gateway/api_gateway.py +++ b/fam-edge/src/fam_edge/api_gateway/api_gateway.py @@ -141,11 +141,23 @@ def event_thumb(event_id): 由 video_processor 处理成功后按事件时间戳定位视频帧生成: /opt/fam-edge/thumbs/ev_{event_id}.jpg + 若该事件截图缺失(如旧事件/未生成),兜底返回所属视频的首帧缩略图 + thumbs/{video_id}.jpg,避免前端图片空白。 """ if not _check_token(): return jsonify({"error": "unauthorized"}), 401 path = f"/opt/fam-edge/thumbs/ev_{event_id}.jpg" if not os.path.isfile(path): + # 兜底:查事件所属视频,返回视频首帧缩略图 + try: + row = state.get_db()._conn.execute( + "SELECT video_id FROM events WHERE id=?", (event_id,)).fetchone() + if row and row['video_id']: + vpath = f"/opt/fam-edge/thumbs/{row['video_id']}.jpg" + if os.path.isfile(vpath): + return send_file(vpath, mimetype='image/jpeg') + except Exception: + pass return jsonify({"error": "thumb_not_found"}), 404 return send_file(path, mimetype='image/jpeg')