{"record":{"id":"1435094c5fcd8431","repo":"tonhowtf/omniget","slug":"ffmpeg-not-found-install-ffmpeg-to-download-this-format","errorCode":null,"errorMessage":"FFmpeg not found. Install FFmpeg to download this format.","messagePattern":"FFmpeg not found\\. Install FFmpeg to download this format\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src-tauri/omniget-core/src/core/ytdlp.rs","lineNumber":4483,"sourceCode":"        );\n    }\n    if lower.contains(\"video unavailable\") || lower.contains(\"not available\") {\n        return anyhow!(\"Video unavailable or removed.\");\n    }\n    if lower.contains(\"private video\") {\n        return anyhow!(\"This video is private.\");\n    }\n    if lower.contains(\"copyright\") {\n        return anyhow!(\"Video blocked due to copyright.\");\n    }\n    if lower.contains(\"geo\") && lower.contains(\"block\") {\n        return anyhow!(\"Video restricted in your region.\");\n    }\n    if lower.contains(\"timed out\") || lower.contains(\"timeout\") {\n        return anyhow!(\"Connection timed out. Check your internet and try again.\");\n    }\n    if lower.contains(\"ffmpeg\") && (lower.contains(\"not found\") || lower.contains(\"no such file\")) {\n        return anyhow!(\"FFmpeg not found. Install FFmpeg to download this format.\");\n    }\n    if lower.contains(\"unsupported url\") || lower.contains(\"no suitable infojson\") {\n        return anyhow!(\"Unsupported URL. Check that the link is correct.\");\n    }\n    if lower.contains(\"unable to download\") && lower.contains(\"webpage\") {\n        return anyhow!(\"Failed to access the page. Check the link and your connection.\");\n    }\n    if lower.contains(\"is not a valid url\") || lower.contains(\"no video formats\") {\n        return anyhow!(\"No video formats found for this link.\");\n    }\n\n    let last_error_line = stderr\n        .lines()\n        .rev()\n        .find(|l| {\n            let t = l.trim().to_lowercase();\n            t.starts_with(\"error:\") || t.starts_with(\"error \")\n        })","sourceCodeStart":4465,"sourceCodeEnd":4501,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src-tauri/omniget-core/src/core/ytdlp.rs#L4465-L4501","documentation":"This error is raised when yt-dlp's stderr indicates FFmpeg is missing: it matches 'ffmpeg' plus 'not found' or 'no such file'. yt-dlp requires FFmpeg for merging separate video/audio streams (DASH formats) and post-processing, so downloads of such formats fail without it.","triggerScenarios":"Selecting a format that requires merging (separate video+audio, e.g. YouTube bestvideo+bestaudio) while the ffmpeg binary is absent from PATH or the configured location.","commonSituations":"Fresh installs where only yt-dlp was installed, Docker/minimal images without ffmpeg, Windows users who never added ffmpeg to PATH, or a bundled ffmpeg path that changed after an app update.","solutions":["Install FFmpeg (apt/brew/choco or download static build) and ensure it is on PATH","Verify with `ffmpeg -version` in the same environment the app runs in","Point the app/bundle to a valid ffmpeg binary path if configurable","Update yt-dlp in Settings → Dependencies if the app manages dependencies"],"exampleFix":"// before\n// download bestvideo+bestaudio without ffmpeg -> subprocess fails\n// after\nif lower.contains(\"ffmpeg\") && (lower.contains(\"not found\") || lower.contains(\"no such file\")) {\n    return anyhow!(\"FFmpeg not found. Install FFmpeg to download this format.\");\n}","handlingStrategy":"validation","validationCode":"// ensure ffmpeg is resolvable before requesting merge formats\nlet ok = tokio::process::Command::new(\"ffmpeg\").arg(\"-version\").output().await.is_ok();\nif !ok { eprintln!(\"FFmpeg missing; install it before downloading merged formats\"); }","typeGuard":null,"tryCatchPattern":"match result {\n    Err(e) if e.to_string().contains(\"FFmpeg not found\") => show_ffmpeg_install_dialog(),\n    other => other?,\n}","preventionTips":["Bundle ffmpeg with the app or verify it at startup","Run `ffmpeg -version` as a dependency check on first launch","Prefer progressive formats when ffmpeg is unavailable","Document ffmpeg as a required dependency for DASH merges"],"tags":["ffmpeg","missing-dependency","yt-dlp","environment"],"backgroundTag":"missing-dependency","analyzedSha":"8600b91f4246848bac346874daa9e61c1fc5677a","analyzedAt":"2026-09-12T14:29:19.317Z","contentChangedAt":"2026-09-12T14:29:19.317Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}