6

Мне нужно выполнить 3 операции с исходным видео (последовательно)

1 изменить размер исходного видео с 320х240 до 640х480 (200%)
2 добавить еще один видеофайл, прежде чем
3 добавить 3-е видео после

Кроме того, мне нужно объединить аудиофайл с готовым результатом (объединены 3 видеофайла.

Я нашел частичное решение здесь, предлагая способ объединения двух видеофайлов http://sonnati.wordpress.com/2012/07/02/ffmpeg-the-swiss-army-knife-of-internet-streaming-part-v/

Но не уверен в правильном синтаксисе для объединения 3-го файла, а также для воспроизведения аудиофайла с готовым результатом. Может кто-нибудь помочь с некоторыми предлагаемыми настройками, чтобы попробовать?

1 ответ1

3
  1. Фильтр scale может сделать это:

    если вы хотите изменить размер входного видео до определенного размера, например 640x480, независимо от его размера и формата изображения, то:ffmpeg -i INPUT -filter_complex [0:v]scale=640:480[Scaled] -map [Scaled] OUTPUT .

    но не сохранение формата изображения может привести к появлению неприглядных видеороликов. поэтому, если вы хотите изменить размер входного видео и сохранить соотношение сторон, укажите одно из измерений и укажите -2 для другого:ffmpeg -i INPUT -filter_complex [0:v]scale=-2:480[Scaled] -map [Scaled] OUTPUT .

  2. (и 3.) Объединить несколько потоков можно с помощью фильтра concat :

    Команда ниже объединит три видеопотока (отбросит аудиопотоки, если они существуют):ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex [0:v][1:v][2:v]concat=n=3:v=1:a=0[Merged] -map [Merged] OUTPUT .

Вся команда, которая сделает для вас, будет примерно такой:

ffmpeg -i VideoBefore.mp4 -i MainVideo.mp4 -i VideoAfter.mp4 -i Audio.mp3 -filter_complex [1:v]scale=-2:480,setsar=sar=1[Scaled];[0:v][Scaled][2:v]concat=n=3:v=1:a=0[Merged] -map [Merged] -map 3:a OUTPUT.mp4

Важное примечание : документация фильтра concat гласит: все соответствующие потоки должны иметь одинаковые параметры во всех сегментах; система фильтрации автоматически выберет общий формат пикселей для видеопотоков, а также общий формат выборки, частоту дискретизации и разметку канала для аудиопотоков, но другие параметры, такие как разрешение, должны быть явно преобразованы пользователем. Атрибут SAR (примерное соотношение сторон) часто составляет 1: 1. но фильтр scale изменит это. и нам нужно изменить это снова, чтобы быть равным другим потокам. фильтр setsar делает это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .