happytails.ai

Video Trimmer

Open Video Trimmer on Happytails.ai. This view has the same page content and links, with explicit tool capabilities. Read the processing notes before using a tool.

Tool capabilities

{
  "id": "trim-video",
  "category": "media-tools",
  "built": true,
  "requirements": "Preview boundaries and keyframe versus re-encoded cuts; aspect/audio handling.",
  "implementation": {
    "fields": [
      {
        "key": "start",
        "label": "Start (seconds)",
        "value": 0,
        "type": "number",
        "min": 0,
        "max": 1800,
        "step": "any"
      },
      {
        "key": "end",
        "label": "End (seconds)",
        "value": 1,
        "type": "number",
        "min": 0.01,
        "max": 1800,
        "step": "any"
      },
      {
        "key": "engine",
        "label": "Processing location",
        "type": "select",
        "value": "browser",
        "values": [
          "browser",
          "server"
        ],
        "labels": {
          "browser": "Browser (files stay here)",
          "server": "Local server (larger files)"
        }
      }
    ],
    "files": true,
    "accept": ".mp4,.mov,.mkv,.webm,.avi",
    "multiple": false,
    "input": false,
    "processing": "Browser or server",
    "native": true,
    "maxFileBytes": 20971520,
    "note": "Browser processing keeps files on this device. Choosing Local server sends files to this website’s own processor. ",
    "hybrid": true,
    "desktopAdapter": "ffmpeg-wasm-local-v1",
    "experience": {
      "automatic": false,
      "single": false,
      "inputMaxLength": 1000000,
      "inputMode": "text",
      "label": "Your text",
      "placeholder": "Type or paste your input…",
      "help": "Up to 1,000,000 characters. Review the settings before running.",
      "helpParts": [
        "Up to 1,000,000 characters.",
        "Review the settings before running."
      ],
      "action": null
    },
    "mode": "explicit",
    "interactive": false
  },
  "execution": "POST /api/v1/tools/trim-video/run",
  "api": {
    "id": "trim-video",
    "name": "Trim video",
    "category": "media-tools",
    "description": "Export a selected section of a video.",
    "notes": "Browser processing keeps files on this device. Choosing Local server sends files to this website’s own processor. ",
    "human_path": "/en/media-tools/trim-video/",
    "method": "POST",
    "endpoint": "/api/v1/tools/trim-video/run",
    "schema_url": "/api/v1/tools/trim-video",
    "input_schema": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "input": {
          "type": "string",
          "maxLength": 1000000,
          "default": "",
          "description": "Plain text input. File tools use files instead unless otherwise documented."
        },
        "options": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "start": {
              "type": "number",
              "description": "Start (seconds)",
              "default": 0.0,
              "minimum": 0,
              "maximum": 1800
            },
            "end": {
              "type": "number",
              "description": "End (seconds)",
              "default": 1.0,
              "minimum": 0.01,
              "maximum": 1800
            },
            "engine": {
              "type": "string",
              "description": "Processing location",
              "default": "browser",
              "enum": [
                "browser",
                "server"
              ]
            }
          }
        },
        "files": {
          "type": "array",
          "maxItems": 1,
          "items": {
            "type": "object",
            "required": [
              "name",
              "base64"
            ],
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string",
                "maxLength": 200,
                "description": "Filename only, no path."
              },
              "mime": {
                "type": "string",
                "maxLength": 150
              },
              "bytes": {
                "type": "integer",
                "minimum": 0,
                "description": "Optional decoded byte count; must match content if supplied."
              },
              "base64": {
                "type": "string",
                "contentEncoding": "base64",
                "description": "File bytes as padded base64. Use the tool-specific limits.files_bytes value for the total decoded input size."
              }
            }
          }
        }
      }
    },
    "output_schema": {
      "type": "object",
      "required": [
        "tool",
        "result"
      ],
      "properties": {
        "tool": {
          "type": "string"
        },
        "result": {
          "type": "object",
          "required": [
            "text",
            "files"
          ],
          "properties": {
            "text": {
              "type": [
                "string",
                "null"
              ]
            },
            "data": {
              "description": "Parsed JSON when the textual result is JSON."
            },
            "name": {
              "type": "string"
            },
            "mime": {
              "type": "string"
            },
            "files": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "name",
                  "mime",
                  "bytes",
                  "base64"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "mime": {
                    "type": "string"
                  },
                  "bytes": {
                    "type": "integer"
                  },
                  "base64": {
                    "type": "string",
                    "contentEncoding": "base64"
                  }
                }
              }
            }
          }
        }
      }
    },
    "processing": "Server; self-hosted native engine, no external conversion service",
    "limits": {
      "request_bytes": 31457280,
      "input_characters": 1000000,
      "files_bytes": 20971520,
      "max_files": 1,
      "timeout_seconds": 90
    }
  },
  "agent_processing": "Server; self-hosted native engine, no external conversion service",
  "browser_agent": {
    "supported": true,
    "name": "run_current_tool",
    "discovery": "WebMCP on the human page in a supporting browser",
    "verification": "See audit/API-AUDIT.md; availability is not verification"
  }
}

Page guide

Keep the section of a video you need.

How to use Trim video
  1. Choose an MP4, MOV, MKV, WEBM or AVI video.
  2. Enter the start and end of the clip in seconds, then run the tool.
  3. Download the trimmed MP4.

Useful next steps

What to expect

Export a selected section of a video. Browser processing keeps files on this device. Server processing is currently unavailable.