gdigrab is not available

Author: bluewave41Created May 6, 2025Updated May 6, 2025

./ffmpeg -formats D d gdigrab GDI API Windows frame grabber

Delete FFMPEG.exe and run my source file FFmpeg error: Cannot find ffmpeg

Confirmed it's using the ffmpeg.exe in the directory

ffmpeg()
  .input("desktop")
  .inputFormat("gdigrab")
  .inputOptions([
    "-framerate 30",
    "-probesize 50M",
  ])
  .videoCodec("h264_nvenc")
  .outputOptions([
    "-preset fast",
    "-b:v 5M",
    "-pix_fmt yuv420p",
    "-movflags +faststart",
  ])
  .on("start", (cmd) => {
    console.log("FFmpeg started with:", cmd);
  })
  .on("stderr", (line) => {
    // Avoid excessive logging
    if (!line.includes("frame=")) {
      console.error("FFmpeg stderr:", line);
    }
  })
  .on("error", (err) => {
    console.error("FFmpeg error:", err.message);
  })
  .on("end", () => {
    console.log("Recording finished");
  })
  .save("output.mp4");

FFmpeg error: Input format gdigrab is not available

I just proved that it is available and that it's using this executable. getAvailableFormats isn't showing gdigrab as being a format despite the executable reporting that it does.

When run manually on the command line gdigrab works correct as expected.

I've just done a choco install ffmpeg and deleted all local copies of ffmpeg. Running my script again returns

FFmpeg error: Input format gdigrab is not available

ffmpeg -formats

Still correctly reports gdigrab as being available while the library does not.

Source: fluent-ffmpeg/node-fluent-ffmpeg