{
  "checked": "2026-10-10",
  "encoder": "ffmpeg version 7.1.5-0+deb13u1 Copyright (c) 2000-2026 the FFmpeg developers",
  "method": "Executed the repository commandFor and runFfmpeg functions locally. Measurements by FFprobe and filesystem bytes; no production upload, physical device or subjective speech-quality test.",
  "license": "Original Mediaivo synthetic fixtures created by the included generator, released under CC0 1.0. No third-party footage, personal images or recorded voices.",
  "cases": [
    {
      "id": "trim-video",
      "tool": "trim-video",
      "input": "time-marked-source.mp4",
      "options": {
        "start": 1.5,
        "duration": 2
      },
      "output": "trimmed.mp4",
      "command": [
        "ffmpeg",
        "-hide_banner",
        "-loglevel",
        "error",
        "-ss",
        "1.500",
        "-i",
        "time-marked-source.mp4",
        "-t",
        "2.000",
        "-c:v",
        "libx264",
        "-preset",
        "veryfast",
        "-c:a",
        "aac",
        "-movflags",
        "+faststart",
        "-y",
        "trimmed.mp4"
      ],
      "source": {
        "name": "time-marked-source.mp4",
        "bytes": 1033039,
        "sha256": "6fcde82fc1c34ca20040e1b54b7ee9e7eed3bb479998c55857b1637f54da53aa",
        "duration": 6,
        "streams": [
          {
            "type": "video",
            "codec": "h264",
            "width": 640,
            "height": 360
          },
          {
            "type": "audio",
            "codec": "aac",
            "channels": 1,
            "sampleRate": 48000
          }
        ]
      },
      "result": {
        "name": "trimmed.mp4",
        "bytes": 212916,
        "sha256": "15d945c3cc23fceaa20a64c6930e2d3d1fc1e0437bfda3b486129964ee8e8d27",
        "duration": 2,
        "streams": [
          {
            "type": "video",
            "codec": "h264",
            "width": 640,
            "height": 360
          },
          {
            "type": "audio",
            "codec": "aac",
            "channels": 1,
            "sampleRate": 48000
          }
        ]
      },
      "notes": "Keeps one interval from source time 1.5 to approximately 3.5 seconds. H.264 video and AAC audio are re-encoded. Synthetic tone, not speech; inspect your own cut boundaries."
    },
    {
      "id": "resize-image",
      "tool": "resize-image",
      "input": "landscape-source.png",
      "options": {
        "width": 600,
        "height": 600
      },
      "output": "padded-square.png",
      "command": [
        "ffmpeg",
        "-hide_banner",
        "-loglevel",
        "error",
        "-i",
        "landscape-source.png",
        "-frames:v",
        "1",
        "-vf",
        "scale=600:600:force_original_aspect_ratio=decrease,pad=600:600:(ow-iw)/2:(oh-ih)/2:color=white",
        "-map_metadata",
        "-1",
        "-y",
        "padded-square.png"
      ],
      "source": {
        "name": "landscape-source.png",
        "bytes": 5613,
        "sha256": "02dd4950be023c9fe6de0276d410bf76f2e30af74d4192027064c30ede02456c",
        "duration": null,
        "streams": [
          {
            "type": "video",
            "codec": "png",
            "width": 1200,
            "height": 800
          }
        ]
      },
      "result": {
        "name": "padded-square.png",
        "bytes": 3536,
        "sha256": "8bcbd51892157471b3c88d0f0e83a53a5b0cb483aeff0930bc7dbc4f18d77bf2",
        "duration": null,
        "streams": [
          {
            "type": "video",
            "codec": "png",
            "width": 600,
            "height": 600
          }
        ]
      },
      "notes": "The 1200 × 800 source becomes a 600 × 400 picture inside a 600 × 600 canvas with 100-pixel white bands above and below."
    },
    {
      "id": "under-500kb",
      "tool": "compress-image",
      "input": "oversized-chart.jpg",
      "options": {
        "quality": 80
      },
      "output": "under-500kb.jpg",
      "command": [
        "ffmpeg",
        "-hide_banner",
        "-loglevel",
        "error",
        "-i",
        "oversized-chart.jpg",
        "-frames:v",
        "1",
        "-q:v",
        "8",
        "-map_metadata",
        "-1",
        "-y",
        "under-500kb.jpg"
      ],
      "source": {
        "name": "oversized-chart.jpg",
        "bytes": 1036138,
        "sha256": "8ba5a4ee1a401ab2dbf6c1e945ea0e18a74e3087d5121a5394c0c6530e390a6c",
        "duration": 0.04,
        "streams": [
          {
            "type": "video",
            "codec": "mjpeg",
            "width": 1200,
            "height": 800
          }
        ]
      },
      "result": {
        "name": "under-500kb.jpg",
        "bytes": 394042,
        "sha256": "ff04052ef91c9dcfe5765295664f18f140338ac5091a3fed2354e01c692e4de8",
        "duration": 0.04,
        "streams": [
          {
            "type": "video",
            "codec": "mjpeg",
            "width": 1200,
            "height": 800
          }
        ]
      },
      "notes": "Original synthetic dense chart, not a photograph. This tests the byte threshold and unchanged dimensions; visual acceptability depends on your content."
    },
    {
      "id": "convert-audio-mp3",
      "tool": "convert-audio",
      "input": "tone-source.wav",
      "options": {
        "format": "mp3"
      },
      "output": "tone.mp3",
      "command": [
        "ffmpeg",
        "-hide_banner",
        "-loglevel",
        "error",
        "-i",
        "tone-source.wav",
        "-vn",
        "-c:a",
        "libmp3lame",
        "-q:a",
        "2",
        "-y",
        "tone.mp3"
      ],
      "source": {
        "name": "tone-source.wav",
        "bytes": 1152078,
        "sha256": "1f6afb96c446e9ed8b4073429b176e28daa7a96af00165ea59ce43f6dfdd831a",
        "duration": 12,
        "streams": [
          {
            "type": "audio",
            "codec": "pcm_s16le",
            "channels": 1,
            "sampleRate": 48000
          }
        ]
      },
      "result": {
        "name": "tone.mp3",
        "bytes": 53732,
        "sha256": "4b7d9aafbd82137c1ccb1648415f73152bb65654f204e787b1f4493f1c829e9c",
        "duration": 12.024,
        "streams": [
          {
            "type": "audio",
            "codec": "mp3",
            "channels": 1,
            "sampleRate": 48000
          }
        ]
      },
      "notes": "Fixed MP3 quality 2; variable bitrate. Synthetic tone only, not a podcast listening test."
    },
    {
      "id": "convert-audio-m4a",
      "tool": "convert-audio",
      "input": "tone-source.wav",
      "options": {
        "format": "m4a"
      },
      "output": "tone.m4a",
      "command": [
        "ffmpeg",
        "-hide_banner",
        "-loglevel",
        "error",
        "-i",
        "tone-source.wav",
        "-vn",
        "-c:a",
        "aac",
        "-b:a",
        "192k",
        "-y",
        "tone.m4a"
      ],
      "source": {
        "name": "tone-source.wav",
        "bytes": 1152078,
        "sha256": "1f6afb96c446e9ed8b4073429b176e28daa7a96af00165ea59ce43f6dfdd831a",
        "duration": 12,
        "streams": [
          {
            "type": "audio",
            "codec": "pcm_s16le",
            "channels": 1,
            "sampleRate": 48000
          }
        ]
      },
      "result": {
        "name": "tone.m4a",
        "bytes": 230159,
        "sha256": "215a2a0099c97d8faf8667943706b5cdebfbca85dfd980aea83874c92f0d528d",
        "duration": 12,
        "streams": [
          {
            "type": "audio",
            "codec": "aac",
            "channels": 1,
            "sampleRate": 48000
          }
        ]
      },
      "notes": "AAC target 192 kbps. A short mono tone may encode below the target; do not extrapolate its exact size to speech."
    }
  ]
}
