Ошибка Fluent-FFmpeg: ffprobe завершился с кодом 1 - PullRequest
0 голосов
/ 17 июня 2020

Я использую функцию Lambda для разделения данного файла на части, и часто я получаю сообщение об ошибке во время обработки файла:

{
    "errorType": "Error",
    "errorMessage": "ffprobe exited with code 1\nffprobe version 4.2.2-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2007-2019 the FFmpeg developers\n  built with gcc 8 (Debian 8.3.0-6)\n  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg\n  libavutil      56. 31.100 / 56. 31.100\n  libavcodec     58. 54.100 / 58. 54.100\n  libavformat    58. 29.100 / 58. 29.100\n  libavdevice    58.  8.100 / 58.  8.100\n  libavfilter     7. 57.100 /  7. 57.100\n  libswscale      5.  5.100 /  5.  5.100\n  libswresample   3.  5.100 /  3.  5.100\n  libpostproc    55.  5.100 / 55.  5.100\n[mov,mp4,m4a,3gp,3g2,mj2 @ 0x6f35c40] Format mov,mp4,m4a,3gp,3g2,mj2 detected only with low score of 1, misdetection possible!\n[mov,mp4,m4a,3gp,3g2,mj2 @ 0x6f35c40] moov atom not found\n/tmp/file.mp4: Invalid data found when processing input\n",
    "stack": [
        "Error: ffprobe exited with code 1",
        "ffprobe version 4.2.2-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2007-2019 the FFmpeg developers",
        "  built with gcc 8 (Debian 8.3.0-6)",
        "  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg",
        "  libavutil      56. 31.100 / 56. 31.100",
        "  libavcodec     58. 54.100 / 58. 54.100",
        "  libavformat    58. 29.100 / 58. 29.100",
        "  libavdevice    58.  8.100 / 58.  8.100",
        "  libavfilter     7. 57.100 /  7. 57.100",
        "  libswscale      5.  5.100 /  5.  5.100",
        "  libswresample   3.  5.100 /  3.  5.100",
        "  libpostproc    55.  5.100 / 55.  5.100",
        "[mov,mp4,m4a,3gp,3g2,mj2 @ 0x6f35c40] Format mov,mp4,m4a,3gp,3g2,mj2 detected only with low score of 1, misdetection possible!",
        "[mov,mp4,m4a,3gp,3g2,mj2 @ 0x6f35c40] moov atom not found",
        "/tmp/file.mp4: Invalid data found when processing input",
        "",
        "    at ChildProcess.<anonymous> (/var/task/node_modules/fluent-ffmpeg/lib/ffprobe.js:233:22)",
        "    at ChildProcess.emit (events.js:198:13)",
        "    at ChildProcess.EventEmitter.emit (domain.js:448:20)",
        "    at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)"
    ]
}

Я вижу сообщение об ошибке и то, что оно мне сообщает , но чего я не могу понять, так это того, что этот самый файл иногда работает. Перед началом процесса я загружаю файл из S3 в свой контейнер Lambda, возможно, это моя проблема, но все же иногда это срабатывает.

1 Ответ

0 голосов
/ 24 июня 2020

После долгого расследования выясняется, что моя проблема действительно заключалась в том, как мои исходные файлы загружались с S3, поэтому после исправления ошибок больше не возникало!

Для дальнейшего использования, вот что изменилось в моем процессе, надеюсь, это поможет кому-то в будущем.

Вот как он загружал файл:

    return new Promise((resolve: Function, reject: Function): void => {
      const s3Stream: stream.Readable = this.client.getObject(params).createReadStream()
      const fileStream: stream.Writable = fs.createWriteStream(filePath)
      s3Stream.on('error', () => {
        fileStream.destroy()
        reject()
      })
      fileStream.on('error', () => {
        s3Stream.destroy()
        reject()
      })
      s3Stream.pipe(fileStream)
        .on('close', resolve())
      })
    }

А теперь, после изменений:

    return new Promise((resolve: Function, reject: Function): void => {
      const fileStream: stream.Writable = fs.createWriteStream(filePath)
      this.client.getObject(params)
        .on('error', (err: NodeJS.ErrnoException) => {
          fileStream.destroy()
          reject(err)
        })
        .on('httpData', (chunk: unknown) => {
          fileStream.write(chunk);
        })
        .on('httpDone', () => {
          fileStream.end();
          resolve()
        })
        .send();
      })
    }
...