SubtitleEdit/subtitleedit · error · PlatformNotSupportedException

Process.Start() is not supported on this platform.

Error message

Process.Start() is not supported on this platform.

What it means

PlatformNotSupportedException thrown by the voice-format conversion helper when the host OS is neither Windows, Linux, nor macOS. The conversion is delegated to ffmpeg via FfmpegGenerator.ConvertFormat, and Process.Start — required to run ffmpeg — is only invoked on the three supported platforms; anything else (e.g. FreeBSD) hits this guard.

Source

Thrown at src/ui/Features/Video/TextToSpeech/Engines/Qwen3TtsCpp.cs:572

        var voicesFolder = GetSetVoicesFolder();
        var baseName = Path.GetFileNameWithoutExtension(fileName);
        var destinationFileName = GetUniqueDestinationFileName(voicesFolder, baseName);

        if (Path.GetExtension(fileName).Equals(".wav", StringComparison.OrdinalIgnoreCase))
        {
            File.Copy(fileName, destinationFileName, overwrite: false);
            return true;
        }

        var process = FfmpegGenerator.ConvertFormat(fileName, destinationFileName);
        if (OperatingSystem.IsWindows() || OperatingSystem.IsLinux() || OperatingSystem.IsMacOS())
        {
            _ = process.Start();
        }
        else
        {
            throw new PlatformNotSupportedException("Process.Start() is not supported on this platform.");
        }

        process.WaitForExit();

        return File.Exists(destinationFileName);
    }
}

View on GitHub (pinned to 17a9f07487)

Solutions

  1. Run the app on Windows, Linux, or macOS — these are the only supported hosts for the conversion path.
  2. Pre-convert the source audio to a supported format (24 kHz mono WAV) on a supported OS so the in-app ffmpeg step is skipped.
  3. If you maintain a port, replace the guard with a Process.Start path that works on your platform and contribute the change upstream.
  4. Confirm OperatingSystem.IsLinux()/IsMacOS() return true on your host — a runtime bug can mis-classify.
Defensive patterns

Strategy: validation

Validate before calling

if (!OperatingSystem.IsWindows() && !OperatingSystem.IsLinux() && !OperatingSystem.IsMacOS())
    throw new PlatformNotSupportedException("Process.Start() is not supported on this platform.");

Try / catch

try { _ = process.Start(); }
catch (PlatformNotSupportedException ex) { Se.LogError(ex); throw; }

Prevention

When it happens

Trigger: Running the app on FreeBSD, a non-standard Linux variant that OperatingSystem.IsLinux() reports as false, or an unsupported mobile/console platform; an older target framework where the OS-gating APIs behave differently.

Common situations: Community ports to unsupported OSes; CI on an unusual container base; a misreported platform due to runtime version skew.

Related errors


AI-assisted analysis of SubtitleEdit/subtitleedit@17a9f07487 (2026-08-13). Data as JSON: /api/errors/474de09a5234c2d4. Report an issue: GitHub.