import cv2
import numpy as np

def analyze_video(path, max_frames=300):
    cap = cv2.VideoCapture(path)
    fps = cap.get(cv2.CAP_PROP_FPS)
    total = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    print(f"File: {path}")
    print(f"FPS: {fps}, Total frames: {total}")

    prev = None
    dups = 0
    diffs = []
    frozen_streaks = []
    current_freeze = 0

    for i in range(max_frames):
        ret, frame = cap.read()
        if not ret:
            break
        # downsample for fast diff
        small = cv2.resize(frame, (320, 180))
        if prev is not None:
            # Mean absolute difference
            diff = np.mean(np.abs(small.astype(float) - prev.astype(float)))
            diffs.append(diff)
            if diff < 0.5: # Virtually identical frame
                dups += 1
                current_freeze += 1
            else:
                if current_freeze > 1:
                    frozen_streaks.append((i - current_freeze, current_freeze))
                current_freeze = 0
        prev = small

    cap.release()
    print(f"Analyzed {len(diffs)} frames:")
    print(f"  Duplicate/frozen frames: {dups} ({dups/len(diffs)*100:.1f}%)")
    print(f"  Frozen streaks (>1 frame): {len(frozen_streaks)}, sample: {frozen_streaks[:5]}")
    print(f"  Average frame difference: {np.mean(diffs):.2f}, min diff: {np.min(diffs):.2f}, max diff: {np.max(diffs):.2f}")

print("=== CHECKING EP2_4K ON POD ===")
analyze_video("/workspace/outputs_4k/ep2_4k.mp4", max_frames=500)

