Видео FFMPEG 4 объединяются на одном экране [дубликат]

Здесь улучшен ответ @lucasjones. Я включил улучшения, упомянутые в разделе комментариев после его ответа. Я надеюсь, что кто-то найдет это полезным.

public static string[] GetTypePropertyNames(object classObject,  BindingFlags bindingFlags)
{
    if (classObject == null)
    {
        throw new ArgumentNullException(nameof(classObject));
    }

        var type = classObject.GetType();
        var propertyInfos = type.GetProperties(bindingFlags);

        return propertyInfos.Select(propertyInfo => propertyInfo.Name).ToArray();
 }
4
задан LordNeckbeard 4 June 2018 в 19:30
поделиться

2 ответа

См. этот ответ на этот вопрос для более нового способа сделать это.


Старая версия: вы должны сделать это, используя панель , movie и overlay в FFmpeg. Команда будет выглядеть примерно так:

ffmpeg -i top.mov -vf 'pad=iw:2*ih [top]; movie=bottom.mov [bottom]; \
  [top][bottom] overlay=0:main_h/2' stacked.mov

Сначала фильм, который должен быть сверху, заполняется в два раза выше его высоты. Затем загружается нижний фильм. Затем нижний фильм накладывается на заполненный верхний фильм со смещением половины высоты проложенного фильма.

13
ответ дан Community 15 August 2018 в 16:42
поделиться

Используйте фильтры vstack (вертикальный) или hstack (горизонтальный). Это легче и быстрее, чем другие методы.

Оригиналы из Один в пустыне :

С vstack:

Пример 1: Только видео

ffmpeg -i input0 -i input1 -filter_complex vstack output
  • Вы можете складывать по горизонтали вместо hstack .

Пример 2: С аудио

Комбинированный звук с обоих входов

Добавьте фильтр amerge для объединения аудиоканалов с обоих входов:

ffmpeg -i input0 -i input1 -filter_complex "[0:v][1:v]vstack[v];[0:a][1:a]amerge=inputs=2[a]" -map "[v]" -map "[a]" -ac 2 output
  • -ac 2 включается в понижающее микширование в стерео, если оба входа содержат многоканальный звук. Например, если оба входа являются стереофоническими, вы получите 4-канальный выходной аудиопоток вместо стерео, если вы опустите -ac 2.

Использование звука с одного конкретного входа

ffmpeg -i input0 -i input1 -filter_complex "[0:v][1:v]vstack[v]" -map "[v]" -map 1:a output

Добавление звука без звука

Если вы смешиваете входы с аудио и входами, у которых нет звука, то amerge будет терпеть неудачу, потому что каждый вход требует звука. Вы можете добавить звук без звука anullsrc filter , чтобы предотвратить это:

ffmpeg -i input0 -i input1 -filter_complex "[0:v][1:v]vstack[v];anullsrc[silent];[0:a][silent]amerge=inputs=2[a]" -map "[v]" -map "[a]" -ac 2 output.mp4

Пример 4: Три видео

ffmpeg -i input0 -i input1 -i input2 -filter_complex "[0:v][1:v][2:v]vstack=inputs=3[v]" -map "[v]" output

Пример 5: сетка 2x2

ffmpeg -i input0 -i input1 -i input2 -i input3 -filter_complex "[0:v][1:v]hstack[top];[2:v][3:v]hstack[bottom];[top][bottom]vstack[v]" -map "[v]" output

Пример 6: Изменить размер / масштаб ввода

Поскольку оба видео должны иметь одинаковые для vstack и одинаковые высоты для hstack, вам может понадобиться масштабировать одно из других видео в соответствии с другим:

Простая шкала / g10], чтобы установить ширину входного сигнала от 0 до 640 и автоматически установить высоту при сохранении пропорции:

ffmpeg -i input0 -i input2 -filter_complex "[0:v]scale=640:-1[v0];[v0][1:v]vstack" output
29
ответ дан LordNeckbeard 15 August 2018 в 16:42
поделиться
  • 1
    ffmpeg сообщает No such filter: 'vstack'. Должен ли я сначала установить его? – frans 12 December 2015 в 14:39
  • 2
    @frans Вы, вероятно, догадались об этом, но ваш ffmpeg слишком стар. Пользователям рекомендуется использовать сборку ffmpeg, созданную из текущей ветви git master. – LordNeckbeard 14 December 2015 в 02:36
  • 3
    Stream specifier ':a' in filtergraph description [0:v][1:v]vstack[v];[0:a][1:a]amerge=inputs=2[a] matches no streams. Почему я это получаю? – RaduM 29 June 2017 в 09:02
  • 4
    @RaduM, потому что у одного из ваших видео нет звука в нем, вам нужно добавить в него аудио или тихий звук, попробуйте использовать ту же команду, используя два видео с аудио, это будет работать, я отправляю сообщение, потому что у меня была такая же проблема сегодня и выпрямили его, используя тихое добавление звука. – Jeffin 10 July 2017 в 07:24
  • 5
    @LordNeckbeard Я использовал команду Example 2 для слияния двух видео. Это сработало для меня, и я получил результат с объединением двух видеороликов вместе с их аудиосистемами. Что такое команда, если я добавлю третий файл, скажем mp3-файл, и объединить 2 видео по-прежнему и объединить 3 аудио вместе. – Nasseh 31 July 2017 в 07:59
Другие вопросы по тегам:

Похожие вопросы: