{
  "measuredAt": "2026-10-02",
  "article": "/ja/articles/audio-drifts-gradually/",
  "method": "A synthetic test clip made with native FFmpeg 8.1 on Windows; one run per step. The misread step imitates an editor that assumes a constant 30 fps by giving the input -r 30. The tool step ran the production page /ja/tools/vfr-to-cfr/ in headless Chromium (Playwright) on Windows with the page's defaults.",
  "ffmpegVersion": "ffmpeg version 8.1-full_build-www.gyan.dev",
  "sample": {
    "name": "vfr-sample.mp4",
    "bytes": 930062,
    "sha256": "eb6bd934a12a63961522e17688e26972c96dc3a77b0fb98d1345adaec05f1a54",
    "video": "H.264 640x360; 5 s at 30 fps then 5 s at 15 fps; 225 frames; r_frame_rate 30/1, avg_frame_rate 3375/149 (22.65 fps)",
    "audio": "AAC 128 kb/s 48 kHz, 10.0 s, a 1 kHz tone for 0.1 s at the start of every second",
    "commands": [
      "ffmpeg -f lavfi -i testsrc2=size=640x360:rate=30:duration=5 -c:v libx264 -pix_fmt yuv420p -g 30 a.mp4",
      "ffmpeg -f lavfi -i testsrc2=size=640x360:rate=15:duration=5 -c:v libx264 -pix_fmt yuv420p -g 15 b.mp4",
      "ffmpeg -f concat -safe 0 -i list.txt -c copy v.mp4   (list.txt: file a.mp4 / file b.mp4)",
      "ffmpeg -f lavfi -i \"sine=f=1000:d=10:sample_rate=48000\" -af \"volume='if(lt(mod(t,1),0.1),1,0)':eval=frame\" -c:a aac -b:a 128k a.m4a",
      "ffmpeg -i v.mp4 -i a.m4a -map 0:v -map 1:a -c copy -movflags +faststart vfr-sample.mp4"
    ]
  },
  "misreadAs30fps": {
    "command": "ffmpeg -r 30 -i v.mp4 -i a.m4a -map 0:v -map 1:a -c:v libx264 -pix_fmt yuv420p -c:a copy misread30.mp4",
    "videoFrames": 225,
    "videoSeconds": 7.5,
    "audioSeconds": 10.0,
    "result": "The first 5 s stay in sync; from 5 s the picture runs ahead and ends 2.5 s before the audio.",
    "sha256": "48313eddd39232b889025b53d680578281a58c5c5f12f062b5ea3aa1107d68bf"
  },
  "tool": {
    "page": "https://ffmpeg-cookbook.com/ja/tools/vfr-to-cfr/",
    "browser": "Chromium (Playwright, headless) on Windows",
    "headerVerdict": "VFR の疑い 平均 22.65 fps ≠ 基準 30（差 24.5%）",
    "intervalCheck": "解析 225 フレーム / 9.9 秒（平均 22.55 fps）。最頻間隔 1/30.03 秒、不揃いな間隔 33.0%（最短 1/30 秒 〜 最長 1/15.0 秒）",
    "settings": {
      "outputRate": "auto (30)",
      "crf": 22
    },
    "command": "ffmpeg -y -i input-1.mp4 -map 0:v:0 -map \"0:a:0?\" -vf \"fps=30,scale=trunc(iw/2)*2:trunc(ih/2)*2\" -c:v libx264 -preset veryfast -crf 22 -pix_fmt yuv420p -c:a aac -b:a 160k -movflags +faststart output-2.mp4",
    "output": {
      "bytes": 822716,
      "videoFrames": 300,
      "videoSeconds": 10.0,
      "audioSeconds": 10.005,
      "sha256": "d880e2ccbb7d6ba47c3522fa9f3a52dc22ac7e582750f0835feece0891dc8159"
    }
  }
}
