{
  "schema_version": "1.0",
  "privacy": {
    "paths": "basename-only",
    "url_credentials": "redacted",
    "url_queries": "redacted",
    "secret_assignments": "<redacted>",
    "content_hashing": "sha256-opt-in"
  },
  "plan": {
    "workflow": "compress",
    "command": [
      "ffmpeg",
      "-n",
      "-nostdin",
      "-progress",
      "pipe:1",
      "-nostats",
      "-i",
      "<path>/input.webm",
      "-c:v",
      "libx264",
      "-b:v",
      "778816",
      "-preset",
      "medium",
      "-pass",
      "1",
      "-passlogfile",
      "<pyffmpegcore-passlog>",
      "-an",
      "-f",
      "null",
      "<path>/null"
    ],
    "inputs": [
      "<path>/input.webm"
    ],
    "outputs": [
      "<path>/verified.mp4"
    ],
    "policy": {
      "overwrite": "refuse",
      "timeout_seconds": 180.0,
      "stdout": "tail",
      "stderr": "tail",
      "capture_tail_chars": 16384,
      "temporary_files": "clean"
    },
    "required_capabilities": [
      "encoder:libx264"
    ],
    "selected_streams": [
      "video"
    ],
    "operations": [
      "fit output under 1048576 bytes",
      "input has no audio stream; reserve 7% container overhead",
      "two-pass video bitrate: 778816 bps",
      "quality floor: 100000 bps"
    ],
    "steps": [
      {
        "name": "analysis-pass",
        "command": [
          "ffmpeg",
          "-n",
          "-nostdin",
          "-progress",
          "pipe:1",
          "-nostats",
          "-i",
          "<path>/input.webm",
          "-c:v",
          "libx264",
          "-b:v",
          "778816",
          "-preset",
          "medium",
          "-pass",
          "1",
          "-passlogfile",
          "<pyffmpegcore-passlog>",
          "-an",
          "-f",
          "null",
          "<path>/null"
        ]
      },
      {
        "name": "encode-pass",
        "command": [
          "ffmpeg",
          "-n",
          "-nostdin",
          "-progress",
          "pipe:1",
          "-nostats",
          "-i",
          "<path>/input.webm",
          "-c:v",
          "libx264",
          "-b:v",
          "778816",
          "-preset",
          "medium",
          "-pass",
          "2",
          "-passlogfile",
          "<pyffmpegcore-passlog>",
          "-pix_fmt",
          "yuv420p",
          "-movflags",
          "+faststart",
          "<path>/verified.mp4"
        ]
      }
    ],
    "warnings": [],
    "metadata": {
      "structured_progress": true,
      "required_stream_types": [
        "video"
      ],
      "estimated_output_bytes": 1048576,
      "target_size_bytes": 1048576,
      "minimum_feasible_bytes": 134638,
      "duration_seconds": 10.017,
      "temporary_placeholders": [
        "<pyffmpegcore-passlog>"
      ]
    },
    "schema_version": "1.0"
  },
  "tools": {
    "pyffmpegcore": "0.3.1",
    "python": "3.14.6",
    "platform": "macOS-26.6-arm64-arm-64bit-Mach-O",
    "ffmpeg": "ffmpeg version 9.0.1 Copyright (c) 2000-2026 the FFmpeg developers",
    "ffprobe": "ffprobe version 9.0.1 Copyright (c) 2007-2026 the FFmpeg developers"
  },
  "summary": {
    "total": 1,
    "succeeded": 1,
    "failed": 0
  },
  "items": [
    {
      "input_probe": {
        "path": "<path>/input.webm",
        "format_name": "matroska,webm",
        "duration": 10.017,
        "size_bytes": 8147493,
        "bit_rate": 6506932,
        "streams": [
          {
            "index": 0,
            "type": "video",
            "codec": "vp9",
            "width": 1280,
            "height": 720,
            "sample_rate": null,
            "channels": null,
            "language": null,
            "rotation": null
          }
        ],
        "chapter_count": 0
      },
      "output_probe": {
        "path": "<path>/verified.mp4",
        "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
        "duration": 10.016667,
        "size_bytes": 1035870,
        "bit_rate": 827317,
        "streams": [
          {
            "index": 0,
            "type": "video",
            "codec": "h264",
            "width": 1280,
            "height": 720,
            "pixel_format": "yuv420p",
            "sample_rate": null,
            "channels": null,
            "language": "und",
            "rotation": null
          }
        ],
        "chapter_count": 0
      },
      "proof": {
        "input_size_bytes": 8147493,
        "output_size_bytes": 1035870,
        "size_change_bytes": -7111623,
        "reduction_percent": 87.29,
        "target_size_bytes": 1048576,
        "target_met": true
      },
      "preflight": {
        "schema_version": "1.0",
        "workflow": "compress",
        "ok": true,
        "checks": [
          {
            "name": "ffmpeg",
            "status": "pass",
            "message": "Executable: /opt/homebrew/bin/ffmpeg",
            "hint": null
          },
          {
            "name": "capability/encoder:libx264",
            "status": "pass",
            "message": "Available",
            "hint": null
          },
          {
            "name": "input/<path>/input.webm",
            "status": "pass",
            "message": "Input is readable",
            "hint": null
          },
          {
            "name": "streams/<path>/input.webm",
            "status": "pass",
            "message": "Required streams available: video",
            "hint": null
          },
          {
            "name": "output/<path>/verified.mp4",
            "status": "pass",
            "message": "Output parent is writable: <path>",
            "hint": null
          },
          {
            "name": "collision/<path>/verified.mp4",
            "status": "pass",
            "message": "No blocking output collision",
            "hint": null
          },
          {
            "name": "disk/<path>/verified.mp4",
            "status": "pass",
            "message": "Free space 162824278016 bytes; estimate 1048576",
            "hint": null
          },
          {
            "name": "container/<path>/verified.mp4",
            "status": "pass",
            "message": "Muxer available: mp4",
            "hint": null
          }
        ]
      },
      "result": {
        "workflow": "compress",
        "status": "succeeded",
        "exit_category": "ok",
        "returncode": 0,
        "elapsed_seconds": 6.696470334019978,
        "progress": {
          "schema_version": "1.0",
          "sequence": 9,
          "status": "end",
          "frame": 601,
          "time_seconds": 9.983333,
          "speed": 2.3,
          "item": "encode-pass"
        },
        "warnings": []
      }
    }
  ],
  "content_hashes": [
    {
      "path": "<path>/input.webm",
      "algorithm": "sha256",
      "digest": "a090e17dd2c781f16604b2a56989482db05249dd1ac92d36ec0050ea516e36c3"
    },
    {
      "path": "<path>/verified.mp4",
      "algorithm": "sha256",
      "digest": "66773993cac83b0310fbe606cfe30514a11a538af8cb894cf67cfdc1ca1c83ba"
    }
  ]
}
