Создание видео с разделенным экраном с помощью ffmpeg

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

Знаете ли вы, какое из видео длиннее?
Да. Я знаю. Правый.

Ответы (1)

Использовать

ffmpeg -i shorter.mp4 -i longer.mp4 -filter_complex
 "[0]trim=0:3.5,drawbox=c=black[delay];[delay][0]concat[left];
  [left][1]hstack[v]"
 -map "[v]" -map 1:a -c:a copy out.mp4

где 3.5следует заменить временем отложенного начала (в секундах) более короткого видео.

Потрясающий! Но не хватало одного момента. Синхронизация была правильной. Но правильное видео не запускалось, пока не истекла задержка (13 с). Затем оба видео запустились одновременно. По сути, я потерял первые 13 секунд правильного видео.
См. отредактированный cmd.
Нет. Обновление передернуло. Оба видео начались одновременно. Через несколько секунд левое видео остановилось на несколько секунд. Затем он возобновился синхронно с нужным видео.
Показать полный журнал..
Вы используете более старую версию ffmpeg, которая нуждается в ручной буферизации. Измените первую строку фильтров на[0]trim=0:3.5,drawbox=c=black,fifo[delay];[delay][0]concat,fifo[left]
Получил ошибку drive.google.com/open?id=1vgDD6T0HlR7BBaUHLdybBzlfBQnJNqyx Сегодня я установил ffmpeg отсюда ffmpeg.org/releases/ffmpeg-3.4.1.tar.bz2 . Я работаю на macbook pro Должен ли я установить что-то еще?
Получите бинарный файл с ffmpeg.zeranoe.com/builds
Используйте ffmpeg -i left.mp4 -i right.mp4 -i left.mp4 -filter_complex "[0]trim=0:13,drawbox=c=black:t=fill[delay];[delay][2]concat[left];[left][1]hstack[v]" -map "[v]" -map 1:a -c:a copy out.mp4с новым двоичным файлом. Это нерешенная проблема управления буфером.
Каков результатffmpeg -hide_banner -filters
Он показывает фильтр concat. Редко возникает проблема с кодировкой символов при вставке в/из Stack Exchange. Повторите команду в конце и запустите.
Да. Теперь он работает отлично. Большое спасибо! Кроме того, у меня есть еще одна просьба. Небольшое расширение. Как справиться с приведенным ниже сценарием. Левое видео должно начинаться после правого видео. Но длина такова, что левое видео продолжается после окончания правого видео. Текущая команда обрабатывает это, но после того, как правое видео заканчивается, звук останавливается. Левое видео продолжается без звука. Как сделать так, чтобы после окончания правого видео звук брался из левого видео? Должен ли я задать новый вопрос для этого?
Задайте новый вопрос. Переключать звук таким образом более запутанно.
Я спросил здесь. video.stackexchange.com/q/23156/21062 Спасибо!