MathewSachin/Captura · error · FFmpegNotFoundException
FFmpeg could not be found. Please download using the in-buil
Error message
FFmpeg could not be found. Please download using the in-built downloader.
What it means
Thrown by FFmpegVideoConverter.StartAsync (src/Captura.FFmpeg/Video/FFmpegVideoConverter.cs:25) when FFmpegService.FFmpegExists is false. The video converter cannot transcode without an ffmpeg binary, so it guards entry identically to the audio/GIF converters.
Source
Thrown at src/Captura.FFmpeg/Video/FFmpegVideoConverter.cs:25
// ReSharper disable once InconsistentNaming
class FFmpegVideoConverter : IVideoConverter
{
readonly FFmpegVideoCodec _videoCodec;
public FFmpegVideoConverter(FFmpegVideoCodec VideoCodec)
{
_videoCodec = VideoCodec;
}
public string Name => $"{_videoCodec.Name} (FFmpeg)";
public string Extension => _videoCodec.Extension;
public async Task StartAsync(VideoConverterArgs Args, IProgress<int> Progress)
{
if (!FFmpegService.FFmpegExists)
{
throw new FFmpegNotFoundException();
}
var argsBuilder = new FFmpegArgsBuilder();
argsBuilder.AddInputFile(Args.InputFile);
var output = argsBuilder.AddOutputFile(Args.FileName)
.SetFrameRate(Args.FrameRate);
_videoCodec.Apply(ServiceProvider.Get<FFmpegSettings>(), Args, output);
//if (Args.AudioProvider != null)
{
_videoCodec.AudioArgsProvider(Args.AudioQuality, output);
}
var process = FFmpegService.StartFFmpeg(argsBuilder.GetArgs(), Args.FileName, out var log);
View on GitHub (pinned to 3fdf41529b)
Solutions
- Ensure ffmpeg is downloaded via the in-built downloader before conversions are exposed in the UI.
- Validate the FFmpeg folder setting resolves to a real ffmpeg.exe.
- Ship or place ffmpeg.exe in the app/lib directory as a fallback.
Example fix
// before
await new FFmpegVideoConverter(codec).StartAsync(args, progress);
// after
if (!FFmpegService.FFmpegExists)
await DownloadFFmpeg.Run();
await new FFmpegVideoConverter(codec).StartAsync(args, progress); Defensive patterns
Strategy: validation
Validate before calling
if (!FFmpegService.FFmpegExists) await DownloadFFmpeg.Run(); if (!FFmpegService.FFmpegExists) throw new FFmpegNotFoundException();
Try / catch
try { await new FFmpegVideoConverter(codec).StartAsync(args, progress); }
catch (FFmpegNotFoundException) { /* download then retry once */ } Prevention
- Gate the video-conversion UI behind FFmpegService.FFmpegExists.
- Auto-run the downloader on first launch.
- Re-verify after the FFmpeg folder setting is edited.
When it happens
Trigger: Starting a video conversion while FFmpegService.FFmpegExists is false (no ffmpeg.exe in folder/app/lib/PATH).
Common situations: Fresh install where the downloader has not been run; FFmpeg folder setting cleared; ffmpeg removed from PATH.
Related errors
- FFmpeg could not be found. Please download using the in-buil
- FFmpeg could not be found. Please download using the in-buil
- FFmpeg could not be found. Please download using the in-buil
- An Error Occurred with FFmpeg, Exit Code: {ExitCode}.\nSee F
- An Error Occurred with FFmpeg, Exit Code: {ExitCode}.\nSee F
AI-assisted analysis of MathewSachin/Captura@3fdf41529b (2026-08-13).
Data as JSON: /api/errors/6c342dc408697ce2.
Report an issue: GitHub.