From f8baebf6eae3b1afabd55bb2f0c99b8d965f639e Mon Sep 17 00:00:00 2001 From: haotian <2421912570@qq.com> Date: Thu, 26 Feb 2026 17:01:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E6=8B=9F=E5=91=8A?= =?UTF-8?q?=E8=AD=A6=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- configs/sample_cam3.json | 4 ++-- configs/sample_cam3.json.last_good.json | 2 +- scripts/mock_alarm_server.py | 25 +++++++++++-------------- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/configs/sample_cam3.json b/configs/sample_cam3.json index 99df80b..6c14ffc 100644 --- a/configs/sample_cam3.json +++ b/configs/sample_cam3.json @@ -213,8 +213,8 @@ }, "external_api": { "enable": true, - "getTokenUrl": "http://127.0.0.1:8080/api/getToken", - "putMessageUrl": "http://127.0.0.1:8080/api/putMessage", + "getTokenUrl": "http://10.0.0.49:8080/api/getToken", + "putMessageUrl": "http://10.0.0.49:8080/api/putMessage", "tenantCode": "32", "channelNo": "${vod_channelNo}", "timeout_ms": 3000, diff --git a/configs/sample_cam3.json.last_good.json b/configs/sample_cam3.json.last_good.json index 6f544f9..0fe6f28 100644 --- a/configs/sample_cam3.json.last_good.json +++ b/configs/sample_cam3.json.last_good.json @@ -1 +1 @@ -{"graphs":[{"edges":[["in_cam1","pre_cam1"],["in_cam1","pre_face_cam1"],["pre_cam1","yolo_cam1"],["yolo_cam1","trk_cam1"],["trk_cam1","osd_cam1"],["osd_cam1","post_cam1"],["post_cam1","pub_cam1"],["pub_cam1","alarm_cam1"],["pre_face_cam1","face_det_cam1"],["face_det_cam1","face_recog_cam1"],["face_recog_cam1","alarm_face_cam1"]],"name":"cam1_sample_full_pipeline","nodes":[{"enable":true,"force_tcp":true,"fps":30,"height":720,"id":"in_cam1","reconnect_backoff_max_sec":30,"reconnect_sec":5,"role":"source","type":"input_rtsp","url":"rtsp://10.0.0.49:8554/cam","use_ffmpeg":false,"use_mpp":true,"width":1280},{"dst_format":"rgb","dst_h":640,"dst_packed":true,"dst_w":640,"enable":true,"id":"pre_cam1","keep_ratio":false,"rga_gate":"cam1_sample_full_pipeline","role":"filter","type":"preprocess","use_rga":true},{"class_filter":[],"conf":0.35,"enable":true,"id":"yolo_cam1","infer_fps":10,"model_path":"./models/yolov5s-640-640.rknn","model_version":"v5","nms":0.45,"num_classes":80,"role":"filter","type":"ai_yolo"},{"conf":0.7,"enable":true,"id":"face_det_cam1","input_format":"rgb","max_faces":10,"model_path":"./models/RetinaFace_mobile320.rknn","nms":0.4,"output_landmarks":true,"role":"filter","type":"ai_face_det"},{"align":true,"emit_embedding":false,"enable":true,"gallery":{"backend":"sqlite","dtype":"auto","expected_dim":512,"load_on_start":true,"path":"./models/face_gallery.db"},"id":"face_recog_cam1","input_dtype":"uint8","input_format":"rgb","max_faces":10,"model_path":"./models/mobilefacenet_arcface.rknn","role":"filter","threshold":{"accept":0.45,"margin":0.05},"type":"ai_face_recog"},{"allowed_models":["yolov5","yolov8"],"debug":{"stats":false,"stats_interval":200},"enable":true,"high_th":0.5,"id":"trk_cam1","ignore_classes":[],"iou_th":0.3,"low_th":0.1,"max_age_ms":1500,"max_tracks":128,"min_hits":2,"mode":"bytetrack_lite","per_class":true,"role":"filter","state_key":"cam1_sample_full_pipeline","track_classes":[0],"type":"tracker"},{"dst_format":"rgb","dst_h":0,"dst_packed":true,"dst_w":0,"enable":true,"id":"pre_face_cam1","keep_ratio":false,"rga_gate":"cam1_sample_full_pipeline","role":"filter","type":"preprocess","use_rga":true},{"draw_bbox":true,"draw_face_bbox":false,"draw_face_det":false,"draw_text":true,"enable":true,"font_scale":1,"id":"osd_cam1","labels":[],"line_width":2,"role":"filter","type":"osd","use_rga_bbox":false},{"dst_format":"nv12","dst_h":720,"dst_w":1280,"enable":true,"id":"post_cam1","keep_ratio":false,"rga_gate":"cam1_sample_full_pipeline","role":"filter","type":"preprocess","use_rga":true},{"bitrate_kbps":2000,"codec":"h264","enable":true,"fps":30,"gop":60,"id":"pub_cam1","outputs":[{"path":"/live/cam1","port":8555,"proto":"rtsp_server"},{"path":"./web/hls/cam1/index.m3u8","proto":"hls","segment_sec":2}],"role":"filter","type":"publish","use_ffmpeg_mux":true,"use_mpp":true},{"actions":{"clip":{"enable":true,"format":"mp4","fps":30,"post_sec":10,"pre_sec":5,"upload":{"access_key":"minioadmin","bucket":"myminio","endpoint":"http://10.0.0.49:9000","region":"us-east-1","secret_key":"minioadmin","type":"minio"}},"external_api":{"channelNo":"${vod_channelNo}","enable":true,"getTokenUrl":"http://127.0.0.1:8080/api/getToken","include_media_url":true,"putMessageUrl":"http://127.0.0.1:8080/api/putMessage","tenantCode":"32","timeout_ms":3000,"token_cache_sec":1200,"token_header":"X-Access-Token","token_json_path":"responseBody.token"},"http":{"enable":false,"include_media_url":true,"method":"POST","timeout_ms":3000,"url":"http://127.0.0.1:8080/api/alarm"},"log":{"enable":true,"level":"info"},"snapshot":{"enable":true,"format":"jpg","quality":85,"upload":{"access_key":"minioadmin","bucket":"myminio","endpoint":"http://10.0.0.49:9000","region":"us-east-1","secret_key":"minioadmin","type":"minio"}}},"enable":true,"eval_fps":10,"face_rules":[],"id":"alarm_cam1","labels":[],"role":"sink","rules":[{"class_ids":[0],"cooldown_ms":5000,"hit_window_ms":1500,"min_box_area_ratio":0.02,"min_duration_ms":1500,"min_hits":3,"min_score":0.4,"name":"person_in_view","per_track_cooldown_ms":5000,"require_track_id":true,"roi":{"h":1,"w":1,"x":0,"y":0}}],"type":"alarm"},{"actions":{"clip":{"enable":false},"http":{"enable":true,"include_media_url":true,"method":"POST","timeout_ms":3000,"url":"http://127.0.0.1:8080/api/alarm"},"log":{"enable":false,"level":"info"},"snapshot":{"enable":true,"format":"jpg","quality":85,"upload":{"access_key":"minioadmin","bucket":"myminio","endpoint":"http://10.0.0.49:9000","region":"us-east-1","secret_key":"minioadmin","type":"minio"}}},"enable":true,"eval_fps":5,"face_rules":[{"cooldown_ms":7000,"hit_window_ms":1500,"max_face_aspect":1.6,"min_face_area_ratio":0.01,"min_face_aspect":0.6,"min_hits":2,"min_sim":0.35,"name":"unknown_face","type":"unknown"},{"cooldown_ms":7000,"hit_window_ms":1500,"max_face_aspect":1.6,"min_face_area_ratio":0.01,"min_face_aspect":0.6,"min_hits":2,"min_sim":0.6,"name":"known_person","type":"person"}],"id":"alarm_face_cam1","labels":[],"role":"sink","rules":[],"type":"alarm"}]}],"queue":{"size":8,"strategy":"drop_oldest"}} \ No newline at end of file +{"graphs":[{"edges":[["in_cam1","pre_cam1"],["in_cam1","pre_face_cam1"],["pre_cam1","yolo_cam1"],["yolo_cam1","trk_cam1"],["trk_cam1","osd_cam1"],["osd_cam1","post_cam1"],["post_cam1","pub_cam1"],["pub_cam1","alarm_cam1"],["pre_face_cam1","face_det_cam1"],["face_det_cam1","face_recog_cam1"],["face_recog_cam1","alarm_face_cam1"]],"name":"cam1_sample_full_pipeline","nodes":[{"enable":true,"force_tcp":true,"fps":30,"height":720,"id":"in_cam1","reconnect_backoff_max_sec":30,"reconnect_sec":5,"role":"source","type":"input_rtsp","url":"rtsp://10.0.0.49:8554/cam","use_ffmpeg":false,"use_mpp":true,"width":1280},{"dst_format":"rgb","dst_h":640,"dst_packed":true,"dst_w":640,"enable":true,"id":"pre_cam1","keep_ratio":false,"rga_gate":"cam1_sample_full_pipeline","role":"filter","type":"preprocess","use_rga":true},{"class_filter":[],"conf":0.35,"enable":true,"id":"yolo_cam1","infer_fps":10,"model_path":"./models/yolov5s-640-640.rknn","model_version":"v5","nms":0.45,"num_classes":80,"role":"filter","type":"ai_yolo"},{"conf":0.7,"enable":true,"id":"face_det_cam1","input_format":"rgb","max_faces":10,"model_path":"./models/RetinaFace_mobile320.rknn","nms":0.4,"output_landmarks":true,"role":"filter","type":"ai_face_det"},{"align":true,"emit_embedding":false,"enable":true,"gallery":{"backend":"sqlite","dtype":"auto","expected_dim":512,"load_on_start":true,"path":"./models/face_gallery.db"},"id":"face_recog_cam1","input_dtype":"uint8","input_format":"rgb","max_faces":10,"model_path":"./models/mobilefacenet_arcface.rknn","role":"filter","threshold":{"accept":0.45,"margin":0.05},"type":"ai_face_recog"},{"allowed_models":["yolov5","yolov8"],"debug":{"stats":false,"stats_interval":200},"enable":true,"high_th":0.5,"id":"trk_cam1","ignore_classes":[],"iou_th":0.3,"low_th":0.1,"max_age_ms":1500,"max_tracks":128,"min_hits":2,"mode":"bytetrack_lite","per_class":true,"role":"filter","state_key":"cam1_sample_full_pipeline","track_classes":[0],"type":"tracker"},{"dst_format":"rgb","dst_h":0,"dst_packed":true,"dst_w":0,"enable":true,"id":"pre_face_cam1","keep_ratio":false,"rga_gate":"cam1_sample_full_pipeline","role":"filter","type":"preprocess","use_rga":true},{"draw_bbox":true,"draw_face_bbox":false,"draw_face_det":false,"draw_text":true,"enable":true,"font_scale":1,"id":"osd_cam1","labels":[],"line_width":2,"role":"filter","type":"osd","use_rga_bbox":false},{"dst_format":"nv12","dst_h":720,"dst_w":1280,"enable":true,"id":"post_cam1","keep_ratio":false,"rga_gate":"cam1_sample_full_pipeline","role":"filter","type":"preprocess","use_rga":true},{"bitrate_kbps":2000,"codec":"h264","enable":true,"fps":30,"gop":60,"id":"pub_cam1","outputs":[{"path":"/live/cam1","port":8555,"proto":"rtsp_server"},{"path":"./web/hls/cam1/index.m3u8","proto":"hls","segment_sec":2}],"role":"filter","type":"publish","use_ffmpeg_mux":true,"use_mpp":true},{"actions":{"clip":{"enable":true,"format":"mp4","fps":30,"post_sec":10,"pre_sec":5,"upload":{"access_key":"minioadmin","bucket":"myminio","endpoint":"http://10.0.0.49:9000","region":"us-east-1","secret_key":"minioadmin","type":"minio"}},"external_api":{"channelNo":"${vod_channelNo}","enable":true,"getTokenUrl":"http://10.0.0.49:8080/api/getToken","include_media_url":true,"putMessageUrl":"http://10.0.0.49:8080/api/putMessage","tenantCode":"32","timeout_ms":3000,"token_cache_sec":1200,"token_header":"X-Access-Token","token_json_path":"responseBody.token"},"http":{"enable":false,"include_media_url":true,"method":"POST","timeout_ms":3000,"url":"http://127.0.0.1:8080/api/alarm"},"log":{"enable":true,"level":"info"},"snapshot":{"enable":true,"format":"jpg","quality":85,"upload":{"access_key":"minioadmin","bucket":"myminio","endpoint":"http://10.0.0.49:9000","region":"us-east-1","secret_key":"minioadmin","type":"minio"}}},"enable":true,"eval_fps":10,"face_rules":[],"id":"alarm_cam1","labels":[],"role":"sink","rules":[{"class_ids":[0],"cooldown_ms":5000,"hit_window_ms":1500,"min_box_area_ratio":0.02,"min_duration_ms":1500,"min_hits":3,"min_score":0.4,"name":"person_in_view","per_track_cooldown_ms":5000,"require_track_id":true,"roi":{"h":1,"w":1,"x":0,"y":0}}],"type":"alarm"},{"actions":{"clip":{"enable":false},"http":{"enable":true,"include_media_url":true,"method":"POST","timeout_ms":3000,"url":"http://127.0.0.1:8080/api/alarm"},"log":{"enable":false,"level":"info"},"snapshot":{"enable":true,"format":"jpg","quality":85,"upload":{"access_key":"minioadmin","bucket":"myminio","endpoint":"http://10.0.0.49:9000","region":"us-east-1","secret_key":"minioadmin","type":"minio"}}},"enable":true,"eval_fps":5,"face_rules":[{"cooldown_ms":7000,"hit_window_ms":1500,"max_face_aspect":1.6,"min_face_area_ratio":0.01,"min_face_aspect":0.6,"min_hits":2,"min_sim":0.35,"name":"unknown_face","type":"unknown"},{"cooldown_ms":7000,"hit_window_ms":1500,"max_face_aspect":1.6,"min_face_area_ratio":0.01,"min_face_aspect":0.6,"min_hits":2,"min_sim":0.6,"name":"known_person","type":"person"}],"id":"alarm_face_cam1","labels":[],"role":"sink","rules":[],"type":"alarm"}]}],"queue":{"size":8,"strategy":"drop_oldest"}} \ No newline at end of file diff --git a/scripts/mock_alarm_server.py b/scripts/mock_alarm_server.py index 717420e..4c792de 100755 --- a/scripts/mock_alarm_server.py +++ b/scripts/mock_alarm_server.py @@ -20,8 +20,8 @@ import sys app = Flask(__name__) -# 模拟 token 存储 -mock_token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.mock_token_for_testing" +# 模拟 token 存储 - 使用纯ASCII字符,避免转义问题 +mock_token = "mocktoken123456789abcdef123456789" token_expire_time = 30 * 60 # 30分钟过期时间(秒) # 统计信息 @@ -42,19 +42,12 @@ def get_token(): # 打印请求信息 print(f"\n[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 收到 Token 请求") - print(f" 请求头: {dict(request.headers)}") - print(f" 请求体: {request.data.decode('utf-8') if request.data else 'None'}") + # 简化的响应,纯ASCII,避免转义问题 response = { - "errorDesc": None, - "message": None, + "errorDesc": "", + "message": "", "responseBody": { - "userInfo": { - "username": "szls", - "realname": "数字孪生", - "deptName": "精密铸造厂", - "id": "8a746b7d91deb3270191df35f42e000e" - }, "expireTime": str(token_expire_time), "token": mock_token, "refreshToken": mock_token + "_refresh" @@ -62,8 +55,12 @@ def get_token(): "retCode": "200" } - print(f" 响应: 返回 mock token") - return jsonify(response) + # 手动序列化并打印原始JSON + raw_json = json.dumps(response, ensure_ascii=True) + print(f" 返回 JSON: {raw_json}") + + # 返回纯文本JSON,避免Flask jsonify的额外处理 + return raw_json, 200, {'Content-Type': 'application/json'} @app.route('/api/putMessage', methods=['POST'])