{
  "generatedAt": "2026-09-12T03:40:59.043Z",
  "ffmpegVersion": "ffmpeg version 8.1-full_build-www.gyan.dev Copyright (c) 2000-2026 the FFmpeg developers",
  "platform": "win32",
  "runnerOptions": [
    "-hide_banner",
    "-loglevel",
    "error",
    "-nostdin",
    "-y"
  ],
  "scope": "Synthetic local input, one run per case. Frame counts and timestamps only; not browser, real-recording lip sync or visual-quality testing.",
  "input": {
    "generatorArgs": [
      "-f",
      "lavfi",
      "-i",
      "testsrc2=size=320x180:rate=30:duration=3",
      "-f",
      "lavfi",
      "-i",
      "sine=frequency=440:sample_rate=48000:duration=3",
      "-vf",
      "select='not(mod(n,3))+between(n,30,59)'",
      "-fps_mode",
      "vfr",
      "-c:v",
      "libx264",
      "-pix_fmt",
      "yuv420p",
      "-c:a",
      "aac",
      "input.mp4"
    ],
    "frames": 50,
    "durationSeconds": 3,
    "sha256": "5be8a96df0d7c9a06d385e218bf8ab6c01750414d23bef5874a9555646a176a9"
  },
  "cases": [
    {
      "id": "cfr-30",
      "command": "ffmpeg -i input.mp4 -fps_mode cfr -r 30 -c:v libx264 -c:a copy output.mp4",
      "passed": true,
      "output": {
        "frames": 90,
        "durationSeconds": 3,
        "minIntervalSeconds": 0.033332999999999835,
        "maxIntervalSeconds": 0.033334000000000086,
        "audioStreams": 1,
        "bytes": 93387,
        "sha256": "8e8151c91059b72f3af51e782a9997c93bc1c92ae34c2d707d66004776bbc714"
      }
    },
    {
      "id": "cfr-60",
      "command": "ffmpeg -i input.mp4 -fps_mode cfr -r 60 -c:v libx264 -crf 18 -c:a aac output.mp4",
      "passed": true,
      "output": {
        "frames": 180,
        "durationSeconds": 3.008,
        "minIntervalSeconds": 0.016665999999999848,
        "maxIntervalSeconds": 0.0166670000000001,
        "audioStreams": 1,
        "bytes": 122165,
        "sha256": "8fc726aa54c9e30d697b68e51ced3d879d1bff2aecf5e1a9fad5598df7b360e5"
      }
    },
    {
      "id": "passthrough-png",
      "command": "ffmpeg -i input.mp4 -fps_mode passthrough output_%04d.png",
      "passed": true,
      "output": {
        "images": 50,
        "firstImageSha256": "8ea0a32f6eef5dc1d7a533fda33df6b90308460cd60cb24bceff43b3f647e3a0",
        "lastImageSha256": "9b1db40ba943a09ed19a97302ef81db0db95d5a821062992f199975fe8834171"
      }
    },
    {
      "id": "missing-sequence-pattern",
      "command": "ffmpeg -i input.mp4 -frames:v 2 single.png",
      "passed": true,
      "expectedFailure": true,
      "output": {
        "exitCode": 4294967274,
        "images": 1
      }
    }
  ]
}
