fluent-ffmpeg / node-fluent-ffmpeg

A fluent API to FFMPEG (http://www.ffmpeg.org)
MIT License
7.64k stars 874 forks source link

Error: ffmpeg exited with code 1: av_interleaved_write_frame(): Invalid argument #1167

Closed hakimscode closed 2 years ago

hakimscode commented 2 years ago

I try to make a thumbnail gif from video and using pallete to generate color. When I try my code below in Mac, everything works fine. But when I upload it to Lambda (Runtime: Node.Js 12.x, Architecture: x86_64 Linux) it produces errors. Somebody please help, I don't know what to do since I run locally on my machine (mac) works fine.

Version information

Code to reproduce

ffmpeg(videoPath)
      .videoBitrate('512k')
      .setStartTime(0) //Can be in "HH:MM:SS" format also
      .setDuration(0.8)
      .fps(10)
      .size('200x?')
      .on('end', () => {
        ffmpeg(`${TMP_PATH}/scaledown.mp4`)
        .fps(10)
        .complexFilter(['[0:v]palettegen'])
        .on('end', () => {
          if (fs.existsSync(`${TMP_PATH}/palettegen.png`)) {
            ffmpeg(`${TMP_PATH}/scaledown.mp4`)
              .fps(10)
              .addInput(`${TMP_PATH}/palettegen.png`)
              .complexFilter(['[0:v][1:v]paletteuse'])
              .on('end', async () => {
                fs.readFile(`${TMP_PATH}/${filenameTemp}`, async (errRead, data) => {
                  fs.writeFile(requestedUri, data);
                  resolve('success');
                })
              })
              .on('error', err => {
                console.log('error on end 3', err);
                reject(err);
              })
              .save(`${TMP_PATH}/${filenameTemp}`)
          } else {
            console.log('not found');
            reject('not found');
          }
        })
        .on('error', err => {
            reject(err);
        })
        .save(`${TMP_PATH}/palettegen.png`)
      })
      .save(`${TMP_PATH}/scaledown.mp4`)

(note: if the problem only happens with some inputs, include a link to such an input file)

Expected results

GIF generated

Observed results

and error was happen on console.log('error on end 3', err);

Error: ffmpeg exited with code 1: av_interleaved_write_frame(): Invalid argument frame= 4 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.20 bitrate=N/A speed=2.68x
video:260kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Conversion failed!

hakimscode commented 2 years ago

Silly me, that was absolutely 100% my false and I feel embarrassed about this.

after I added on error callback to get the detail about error, I've found that I give the wrong parameter to my function

.on('error', function(err, stdout, stderr) {
        if (err) {
            console.log(err.message);
            console.log("stdout:\n" + stdout);
            console.log("stderr:\n" + stderr);
            reject("Error");
        }
    })