{
  "slug": "video-first-last-frame-extractor",
  "name": "gizza-ai/video-first-last-frame-extractor",
  "version": "0.1.0",
  "title": "First & Last Frame Extractor — Video Start-vs-End Comparison — gizza.ai",
  "description": "Grab a video's first and last frame and stitch them into one before/after image — side by side or stacked. Free, in your browser with ffmpeg, nothing uploaded.",
  "tags": [
    "first and last frame",
    "video first frame",
    "video last frame",
    "before after video",
    "start vs end frame",
    "video comparison image",
    "keyframe grab",
    "ffmpeg"
  ],
  "category": "video",
  "urls": {
    "page": "https://gizza.ai/tools/video-first-last-frame-extractor/",
    "markdown": "https://gizza.ai/tools/video-first-last-frame-extractor/index.md",
    "descriptor": "https://gizza.ai/tools/video-first-last-frame-extractor/tool.json",
    "deep_link_example": "https://gizza.ai/tools/video-first-last-frame-extractor/?url=https://example.com/input&layout=horizontal&format=png"
  },
  "cli": "gizza tool video-first-last-frame-extractor 'url=https://example.com/input' 'layout=horizontal' 'format=png'",
  "tool": {
    "description": "Extract the first frame and the last frame of a video and stitch them into a single comparison image — side by side (horizontal) or stacked (vertical). Both frames are grabbed in one decode pass, so no timestamp is needed. Handy for spotting a clip's start-vs-end change, making a before/after thumbnail, or picking start/end keyframes for AI video tools. Output is one PNG (or JPG) image with the two frames joined; the source dimensions are preserved. Provide the video as either url (HTTP/HTTPS) or ref from a prior tool call. Note: chat ffmpeg is unavailable — runs on the standalone page and the CLI.",
    "parameters": {
      "additionalProperties": false,
      "oneOf": [
        {
          "required": [
            "url"
          ]
        },
        {
          "required": [
            "ref"
          ]
        }
      ],
      "properties": {
        "format": {
          "default": "png",
          "description": "Output image format: png (lossless, crisp) or jpg (smaller file). Default png.",
          "enum": [
            "png",
            "jpg"
          ],
          "type": "string"
        },
        "layout": {
          "default": "horizontal",
          "description": "How the two frames are joined: horizontal = first frame left, last frame right (side by side); vertical = first on top, last on the bottom. Default horizontal.",
          "enum": [
            "horizontal",
            "vertical"
          ],
          "type": "string"
        },
        "ref": {
          "description": "Reference id from a prior tool call. Use either url or ref.",
          "type": "string"
        },
        "url": {
          "description": "Video URL (HTTP/HTTPS). Use either url or ref.",
          "type": "string"
        }
      },
      "type": "object"
    }
  }
}