fluent-ffmpeg h264 to gif сгенерировал «ошибку 1» - PullRequest
0 голосов
/ 04 сентября 2018

ниже мой код для преобразования h264 в gif

var ffmpeg = require("fluent-ffmpeg");
var inFilename = "/home/pi/Videos/video.mp4";
var outFilename = "/home/pi/Videos/video.gif";
var fs = require('fs');
ffmpeg(inFilename)
  .outputOptions("-c:v", "copy")
  .output(outFilename)
  .run();

этот код работает ОТЛИЧНО, когда он переходит с h264 на mp4, просто интересно, почему он не работает с h264 в gif или если бы я мог заставить его работать.

1 Ответ

0 голосов
/ 04 сентября 2018

Основная проблема в том, что в этом случае вы не можете использовать H.264 внутри GIF-файла, поэтому вам нужно удалить строку outputOptions (которая пытается скопировать видео H.264 непосредственно в GIF ), чтобы FFmpeg перекодировал входное видео.

Однако преобразование размера видео и частоты кадров AS-IS в GIF-анимацию не всегда целесообразно, поэтому я рекомендовал бы добавить новую опцию (см., Например, этот ответ для получения дополнительных примеров и варианты) для учета этого.

Позволяет немного изменить код для начала; давайте заменим параметры вывода для этого случая:

var ffmpeg = require("fluent-ffmpeg");
var inFilename = "/home/pi/Videos/video.mp4";
var outFilename = "/home/pi/Videos/video.gif";

ffmpeg(inFilename)
  .outputOption("-vf", "scale=320:-1:flags=lanczos,fps=15")
  .save(outFilename);

Параметры здесь такие же, как при запуске FFmpeg напрямую:

ffmpeg -i inputfile.h264 -vf scale=320:-1:flags=lanczos,fps=15 outputfile.gif

Параметры:

  • scale=320:-1 будет масштабироваться до ширины 320 пикселей. -1 будет использовать высоту, пропорциональную ширине. Вы можете перевернуть их, чтобы использовать высоту как абсолютный размер.
  • flags=lanczos - алгоритм, используемый для повторной выборки изображения. Lanczos обеспечивает хорошее качество образца
  • fps=15 означает, что GIF будет работать со скоростью около 15 кадров в секунду (FPS).
...