3

Есть ли способ использовать FFMPEG для разложения видео на отдельные файлы изображений, а затем повторно собрать эти файлы изображений в видео со звуком из исходного видео в синхронизации с новой видеодорожкой?

Я считаю, что одним из ключевых элементов может быть правильная установка частоты кадров, но все комбинации, которые я пробовал, не сработали.

Я попробовал следующие комбинации:

ffmpeg -i "/InputVideoFilePath" "/OutputImageFilePath" 

(Эта команда возвращает одинаковое количество файлов выходных изображений независимо от того, помещена ли спецификация частоты кадров во входной файл, выходной файл или в оба.)

Затем я также извлекаю аудио в отдельный файл, выполняя следующую команду:

ffmpeg -i "/InputVideoFilePath" "/OutputAudioFilePath"

Затем я собираю изображения в другой видеофайл, набрав одно из следующих:

  1. ffmpeg -i "/OutputImageFilePath" "/OutputVideoFilePath"
  2. ffmpeg -i "/OutputImageFilePath" -r 23.98 "/OutputVideoFilePath"
  3. ffmpeg -r 23.98 -i "/OutputImageFilePath" -r 23.98 "/OutputVideoFilePath"

(23,98 была исходная частота кадров видео)

До сих пор как 1, так и 2 создают видео, которое короче исходного видео, а 3 создает видео одинаковой длины. Я не понимаю, как установка частоты кадров для ввода может иметь какое-либо значение, поскольку вход представляет собой просто серию изображений (т. Е. Как может серия кадров иметь частоту кадров?). В документации FFmpeg говорится, что установка частоты кадров на входе приводит к игнорированию меток времени, но как изображения могут иметь метки времени, если они не являются частью видео?

После использования метода 3 я накладываю аудиофайл mp3 на вновь созданный видеофайл с помощью команды:

ffmpeg -i "/PathToVideoFile" -i "/PathToAudioFile" "/PathOfFinalVideoOutput"

Конечный продукт только немного не синхронизирован, но все же заметно. Я могу показать вывод FFmpeg для каждого из этих шагов, если это необходимо (хотя, конечно, много выходных данных).

0