diff --git a/apps/worker/video_processing/dedup.py b/apps/worker/video_processing/dedup.py old mode 100644 new mode 100755 index 9e7a992d3..e71d96cb8 --- a/apps/worker/video_processing/dedup.py +++ b/apps/worker/video_processing/dedup.py @@ -93,12 +93,16 @@ class VideoFingerprint: resolution: tuple[int, int] def to_dict(self) -> dict: + # 注意:color_histograms 里的值可能是 np.float32(来自 cv2.normalize), + # 直接存进 dict 后 SQLAlchemy JSON 序列化会报 "float32 is not JSON serializable"。 + # 这里统一转成 Python 原生 float。 + native_histograms = [[float(v) for v in hist] for hist in self.color_histograms] return { "md5": self.md5, "keyframe_phashes": self.keyframe_phashes, - "color_histograms": self.color_histograms, - "duration": self.duration, - "resolution": list(self.resolution), + "color_histograms": native_histograms, + "duration": float(self.duration), + "resolution": [int(self.resolution[0]), int(self.resolution[1])], }