Ffmpeg - Изменение частоты кадров без перекодирования

Ffmpeg - Изменение частоты кадров без перекодирования

Я пытаюсь изменить частоту кадров видео, чтобы оно длилось немного дольше. Я не хочу перекодировать и хочу, чтобы звук оставался синхронизированным. Мне удалось извлечь необработанное видео из видео, а затем ремикшировать с помощью...

ffmpeg -i source.mkv -c copy -f h264 video.h264
ffmpeg -r 23.976 -i video.h264 -c copy dest.mp4

Это создает видео, которое теперь идет в правильном темпе и без звука.

Как мне получить готовый .mp4 со звуком?

решение1

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

Сначала вычислите, насколько вам нужно настроить аудио. Предполагая, что изначально это было видео 25 кадров в секунду, которое вы замедляете до 23,976, ваш фактор скорости составляет 23,976/25 = 0,959. Мы подключим это к фильтру, atempoчтобы настроить скорость аудио, вытащив его из оригинала source.mkv.

ffmpeg -i source.mkv -r 23.976 -i video.h264 -filter_complex "[0:a]atempo=0.959[out]" -map 1:v -map "[out]" -c:a aac -c:v copy out.mp4

Здесь -filter_complexберется аудиопоток из нулевого входного файла ( source.mkv) и пропускается через atempoфильтр, затем выход называется [out]. Затем мы используем -mapаргументы, чтобы сказать, что мы хотим взять этот аудиопоток, а также видеопоток из первого входного файла (начиная с нуля, то есть фактически со второго, video.h264). Нам нужно перекодировать аудио, потому что мы хотим его изменить, но мы можем просто скопировать видео в контейнер.

Связанный контент