FFMPEG 2 Видео перекодировано и бок о бок в 1 кадре?

У меня есть 2 видео: HEADSHOT.MOV и SCREEN.MOV. Оба файла представляют собой большие файлы, и я рассчитываю уменьшить их размер (размер, битрейт и т. Д.) И поместить эти два рядом друг с другом в один и тот же очень широкий видеокадр. Конечным результатом будет то, что при воспроизведении output_video.mp4 у вас будет очень широкий кадр с синхронизированными видео и воспроизведением с одинаковой скоростью.

Вот синтетически неверная версия того, что я пытаюсь сделать:

ffmpeg -i HEADSHOT.MOV -t 00:02:00 -acodec libfaac -ab 64k -vcodec libx264 -r 30 -pass 1 -s 374x210 -vf "movie=SCREEN.MOV [small]; [in][small] -an -r 30 -pass 1 -s 374x210 overlay=10:10 -t 00:02:00 [out]" -threads 0 output_movie.mp4

В приведенном выше примере я также попытался установить длительность тестового фильма на 2 минуты, что поднимает другой вопрос: как лучше всего обрабатывать 2 фильма различной длины (если они близки)?

Ресурсы, которые я нашел полезными до сих пор:

Несколько источников видео объединены в один и

http://ffmpeg.org/ffmpeg.html

Любая помощь / совет с благодарностью. У меня проблемы с синтаксисом FFMPEG! Спасибо!

2 ответа

Решение

Результат может быть достигнут с помощью комбинации фильтров масштаба, наложения и наложения, как показано ниже:

ffmpeg.exe -i LeftInput.mp4 -vf "[in] scale=iw/2:ih/2, pad=2*iw:ih [left]; 
    movie=RightInput.mp4, scale=iw/3:ih/3, fade=out:300:30:alpha=1 [right]; 
    [left][right] overlay=main_w/2:0 [out]" -b:v 768k Output.mp4

Здесь первое видео сокращается вдвое и дополняется до исходного размера. Второе видео сокращается на две трети и накладывается на правую половину (область заполнения) первого.

Более короткое видео может исчезнуть; в противном случае последний кадр будет отображаться до конца объединенного видео.

Результирующая скорость передачи может быть установлена ​​с помощью -b:v вариант. Кроме того, размеры и положения видео можно указывать в пикселях для фильтров пэдов, масштабов и наложения.

Чтобы одно видео занимало всю левую половину выходного видео, а другое видео занимало всю правую половину выходного видео И чтобы иметь правильный звук, я расширю ответ @Dmitry Shkuropatsky. На это у меня ушло 5 или более минут, и я использовал ffmpeg версии 3.4 (Copyright (c) 2000-2017):

>ffmpeg -i left.webm -vf "[in] scale=iw/2:ih/2, pad=2*iw:ih [left]; movie=right.mp4, scale=iw/2:ih/2, fade=alpha=1 [right]; [left][right] overlay=main_w/2:0 [out]" -c:a aac -b:v 3800k output.mp4

>ffmpeg -i output.mp4 -i right.mp4 -c copy -map 0:0 -map 1:1 -shortest output_with_audio.mp4

Изменения:

  • Без затухания
    Я успешно удалил параметр / аргумент затухания, потому что он вызывал у меня проблемы. Если вы хотите использовать постепенное исчезновение, возможно, измените числа в fade=out:300:30:alpha=1 для вашего конкретного случая.
  • Левое видео заполняет всю левую половину, а правое видео заполняет всю правую половину.
    Вместо того, чтобы правая половина была заполнена только на две трети правым видео, я изменил его, чтобы он был полностью заполнен видео для правой половины.
  • Исправлены проблемы со звуком.
    Я выполнил вторую команду FFmpeg, потому что первая (со всеми -vfstuff), похоже, использует только звук из содержимого, а не из содержимого. Это проблема, если -i это видео без звука, и вы хотите использовать звук из movie=. Вторая команда ffmpeg копирует видеопоток из output.mp4 и аудиопоток из right.mp4 в output_with_audio.mp4.
Другие вопросы по тегам