{
  "slug": "video-add-silent-audio",
  "name": "gizza-ai/video-add-silent-audio",
  "version": "0.1.0",
  "title": "Add a Silent Audio Track to a Video Online — gizza.ai",
  "description": "Give an audio-less video a silent audio track so uploaders and editors that require an audio stream accept it. The picture is copied untouched, in your browser.",
  "tags": [
    "add silent audio",
    "silent audio track",
    "video has no audio",
    "dummy audio track",
    "anullsrc",
    "upload rejected no audio",
    "add audio stream",
    "ffmpeg"
  ],
  "category": "audio",
  "urls": {
    "page": "https://gizza.ai/tools/video-add-silent-audio/",
    "markdown": "https://gizza.ai/tools/video-add-silent-audio/index.md",
    "descriptor": "https://gizza.ai/tools/video-add-silent-audio/tool.json",
    "deep_link_example": "https://gizza.ai/tools/video-add-silent-audio/?url=https://example.com/input&channels=stereo&sample_rate=48000&bitrate=128&existing_audio=replace"
  },
  "cli": "gizza tool video-add-silent-audio 'url=https://example.com/input' 'channels=stereo' 'sample_rate=48000' 'bitrate=128' 'existing_audio=replace'",
  "tool": {
    "description": "Add a track of pure digital silence to a video that has NO audio stream, so platforms, editors and players that require an audio stream accept it. The picture is stream-copied (`-c:v copy`) — lossless, fast, byte-identical — and the silence is generated by ffmpeg's anullsrc filter, so no second file is needed. Provide either url (HTTP/HTTPS) or ref (id from a prior tool call). Options: channels (mono|stereo, default stereo), sample_rate (22050|44100|48000 Hz, default 48000), bitrate (32|64|96|128|192 kbps, default 128), existing_audio (replace|keep, default replace — 'replace' leaves exactly one silent track, 'keep' preserves an existing track and adds silence as a second one). The silence is bounded to the video's length and the output keeps the input container (WebM gets Opus at 48 kHz, everything else AAC). Note: runs on the standalone page and the CLI (chat ffmpeg is unavailable).",
    "parameters": {
      "additionalProperties": false,
      "oneOf": [
        {
          "required": [
            "url"
          ]
        },
        {
          "required": [
            "ref"
          ]
        }
      ],
      "properties": {
        "bitrate": {
          "default": "128",
          "description": "Audio bitrate of the silent track in kbps: 128 (default, universally accepted), 32/64 to keep the added bytes negligible on a long clip, 192 if a strict validator wants a higher rate. Silence sounds identical at every value.",
          "enum": [
            "32",
            "64",
            "96",
            "128",
            "192"
          ],
          "type": "string"
        },
        "channels": {
          "default": "stereo",
          "description": "Channel layout of the silent track: 'stereo' (default — what most upload validators expect) or 'mono' (half the size, still a valid audio stream). The track is digital silence either way.",
          "enum": [
            "mono",
            "stereo"
          ],
          "type": "string"
        },
        "existing_audio": {
          "default": "replace",
          "description": "What to do if the video ALREADY has an audio track: 'replace' (default — the output carries exactly one track, the silence, so the clip ends up muted) or 'keep' (the existing track is kept and the silence is added as a second track; the existing track is re-encoded at the chosen bitrate). For a video with no audio both behave identically.",
          "enum": [
            "replace",
            "keep"
          ],
          "type": "string"
        },
        "ref": {
          "description": "Reference id from a prior tool call. Use either url or ref.",
          "type": "string"
        },
        "sample_rate": {
          "default": "48000",
          "description": "Sample rate of the silent track in Hz: 48000 (default, the video-world standard), 44100 (CD/editor-friendly) or 22050 (smallest). WebM output is always 48000 because Opus only encodes at that rate.",
          "enum": [
            "22050",
            "44100",
            "48000"
          ],
          "type": "string"
        },
        "url": {
          "description": "Video URL (HTTP/HTTPS). Use either url or ref.",
          "type": "string"
        }
      },
      "type": "object"
    }
  }
}