Прерывистая ошибка формата пикселя при использовании fluent-ffmpeg - PullRequest
1 голос
/ 03 апреля 2019

Я использую (отлично!) node-fluent-ffmpeg в качестве первого шага в конвейере обработки видео.В зависимости от исходного видео, которое я предоставляю для node-fluent-ffmpeg (видео приходят от одного и того же провайдера, что делает это поведение удивительным, но я отвлекаюсь), иногда я вижу следующую ошибку при передаче вывода на следующий процессор ffmpeg в моем конвейере:

Невозможно проанализировать значение параметра "-1" в формате пикселей

В этой проблеме. Я попытался установить inputFormat('mp4'), videoCodec('libx264')и .inputOption('-pix_fmt yuv420p').Первые два, кажется, не имеют никакого эффекта, а третье вызывает следующую ошибку: «Ошибка: ffmpeg завершен с кодом 1: опция pixel_format не найдена».(Чтобы усложнить ситуацию, я запускаю этот процесс в облачной функции Google, поэтому мне неясно, как запросить, какие pix_fmts доступны .)

Кто-нибудь знает, как я могуобойти эту проблему?

Вот моя последняя попытка в полном объеме:

  const process = ffmpeg({source: stream})
    .inputFormat('mp4')
    .inputOption('-pix_fmt yuv420p')
    .setFfmpegPath(ffmpeg_static.path)
    .videoBitrate(1024)
    .videoCodec('libx264')
    .aspect('1:1')
    .format('mp4')
    .noAudio()
    .seekInput(start)
    .duration(duration)
    .save(destination);

Мне удалось запросить ffmpeg для доступных форматов пикселей и, пока yuv420p недоступен, несколькодругие есть.Наиболее близким (текстовым) соответствием является yuv4mpegpipe, но это приводит к той же ошибке.

1 Ответ

1 голос
/ 03 апреля 2019

yuv4mpegpipe не является пиксельным форматом, это формат ввода / вывода.Причина, по которой ваш код не работает, -pix_fmt yuv420p - это outputOption, а не inputOption.Вероятно, лучше также не устанавливать inputFormat, и позволить ffmpeg принимать решение автоматически.

...