{
  "checked": "2026-09-09",
  "method": "Executed commandFor() and runFfmpeg()/probeFile() from Mediaivo lib/processors.js with FFmpeg; outputs committed as reference fixtures.",
  "encoder": "ffmpeg version 6.1.1-3ubuntu5 Copyright (c) 2000-2023 the FFmpeg developers",
  "cases": [
    {
      "id": "compress-video",
      "input": "source-chart.mp4",
      "options": {
        "quality": "balanced"
      },
      "settings": "Compression: Balanced",
      "check": "The output keeps 1280 × 720 pixels and three seconds. Inspect moving edges for new blockiness; this setting does not promise a particular MB limit.",
      "output": "compress-video.mp4",
      "source": {
        "name": "source-chart.mp4",
        "bytes": 2334407,
        "sha256": "b0f787cf519c93b62f6ed7b2e53f508e1d9e8077a3c01e5484ba120e3f589702",
        "width": 1280,
        "height": 720,
        "codec": "h264",
        "format": "mov,mp4,m4a,3gp,3g2,mj2",
        "duration": 3
      },
      "result": {
        "name": "compress-video.mp4",
        "bytes": 719603,
        "sha256": "6301398a38059f68bd73ce2bc437f6297cf5739a732064bd6e7fa002ffa0faaf",
        "width": 1280,
        "height": 720,
        "codec": "h264",
        "format": "mov,mp4,m4a,3gp,3g2,mj2",
        "duration": 3
      }
    },
    {
      "id": "resize-video",
      "input": "source-chart.mp4",
      "options": {
        "width": 360,
        "height": 640
      },
      "settings": "Width: 360; Height: 640",
      "check": "The complete 16:9 frame is fitted inside a 360 × 640 portrait canvas. Black bars are expected above and below; the image is not stretched.",
      "output": "resize-video.mp4",
      "source": {
        "name": "source-chart.mp4",
        "bytes": 2334407,
        "sha256": "b0f787cf519c93b62f6ed7b2e53f508e1d9e8077a3c01e5484ba120e3f589702",
        "width": 1280,
        "height": 720,
        "codec": "h264",
        "format": "mov,mp4,m4a,3gp,3g2,mj2",
        "duration": 3
      },
      "result": {
        "name": "resize-video.mp4",
        "bytes": 48220,
        "sha256": "03eaf4e944fce7cb017f1bee4516faf2ae5dd4bbc8748bb04e7af104b255229c",
        "width": 360,
        "height": 640,
        "codec": "h264",
        "format": "mov,mp4,m4a,3gp,3g2,mj2",
        "duration": 3
      }
    },
    {
      "id": "crop-video",
      "input": "source-chart.mp4",
      "options": {
        "width": 720,
        "height": 720,
        "x": 280,
        "y": 0
      },
      "settings": "Crop width: 720; Crop height: 720; X offset: 280; Y offset: 0",
      "check": "The center square retains the full height and removes 280 pixels from each side. Edge content disappears deliberately. Crop does not add padding.",
      "output": "crop-video.mp4",
      "source": {
        "name": "source-chart.mp4",
        "bytes": 2334407,
        "sha256": "b0f787cf519c93b62f6ed7b2e53f508e1d9e8077a3c01e5484ba120e3f589702",
        "width": 1280,
        "height": 720,
        "codec": "h264",
        "format": "mov,mp4,m4a,3gp,3g2,mj2",
        "duration": 3
      },
      "result": {
        "name": "crop-video.mp4",
        "bytes": 548283,
        "sha256": "306eaca87f64ee074a956c3bd5dc61b1597e205cd28e21c621e4ffb786fef2c7",
        "width": 720,
        "height": 720,
        "codec": "h264",
        "format": "mov,mp4,m4a,3gp,3g2,mj2",
        "duration": 3
      }
    },
    {
      "id": "convert-video",
      "input": "source-chart.mp4",
      "options": {
        "format": "webm"
      },
      "settings": "Convert to: WebM",
      "check": "The output is a WebM container with VP9 video. A new extension alone is not conversion; check the codec reported below and try playback in the intended browser.",
      "output": "convert-video.webm",
      "source": {
        "name": "source-chart.mp4",
        "bytes": 2334407,
        "sha256": "b0f787cf519c93b62f6ed7b2e53f508e1d9e8077a3c01e5484ba120e3f589702",
        "width": 1280,
        "height": 720,
        "codec": "h264",
        "format": "mov,mp4,m4a,3gp,3g2,mj2",
        "duration": 3
      },
      "result": {
        "name": "convert-video.webm",
        "bytes": 963558,
        "sha256": "1972451a1ee20b8c83652ff2859cab3b304322e439410bef0f4bc2d5cddb9974",
        "width": 1280,
        "height": 720,
        "codec": "vp9",
        "format": "matroska,webm",
        "duration": 3
      }
    },
    {
      "id": "compress-image",
      "input": "source-chart.jpg",
      "options": {
        "quality": 80
      },
      "settings": "Quality: 80",
      "check": "The JPEG keeps its pixel dimensions. Inspect fine lines and color boundaries at full zoom; quality is an encoder setting, not a promise of 80% visual fidelity.",
      "output": "compress-image.jpg",
      "source": {
        "name": "source-chart.jpg",
        "bytes": 66230,
        "sha256": "600b3753ec268cb154df7c61ec7e57bf17eaa11d7eff26e7305663a9b461fb8f",
        "width": 1280,
        "height": 720,
        "codec": "mjpeg",
        "format": "image2",
        "duration": 0.04
      },
      "result": {
        "name": "compress-image.jpg",
        "bytes": 33890,
        "sha256": "378f9a7065a3714713fdbdc131e1bbf88a866824546fff04e213c8c6bb5c9033",
        "width": 1280,
        "height": 720,
        "codec": "mjpeg",
        "format": "image2",
        "duration": 0.04
      }
    },
    {
      "id": "metadata-viewer",
      "input": "source-chart.mp4",
      "output": "metadata.json",
      "options": {},
      "settings": "Read metadata",
      "check": "The report identifies H.264 video, 1280 × 720 pixels, 24 frames per second and a three-second duration. There is no audio stream. The synthetic title and comment are metadata; they do not prove ownership or authenticity.",
      "source": {
        "name": "source-chart.mp4",
        "bytes": 2334407,
        "sha256": "b0f787cf519c93b62f6ed7b2e53f508e1d9e8077a3c01e5484ba120e3f589702",
        "width": 1280,
        "height": 720,
        "codec": "h264",
        "format": "mov,mp4,m4a,3gp,3g2,mj2",
        "duration": 3
      },
      "result": {
        "name": "metadata.json",
        "bytes": 2287
      }
    }
  ],
  "failure": {
    "tool": "crop-video",
    "settings": "1400 × 720 crop from 1280 × 720 input",
    "observed": "Rejected: crop width exceeds the input frame. Choose a region within the source dimensions.",
    "raw": "[Parsed_crop_0 @ 0x5602435f3000] Invalid too big or non positive size for width '1400' or height '720'\n[Parsed_crop_0 @ 0x5602435f3000] Failed to configure input pad on Parsed_crop_0\n[vf#0:0 @ 0x560243563540] Error reinitializing filters!\nFailed to inject frame into filter network: Invalid argument\nError while filtering: Invalid argument\n[out#0/mp4 @ 0x5602435a4000] Nothing was written into output file, because at least one of its streams received no packets."
  }
}
