Как я могу плиточные видео / создать видео монтаж? - PullRequest
4 голосов
/ 22 февраля 2009

У меня есть четыре видео, которые я бы хотел использовать в виде 2х2 для создания нового видео. Есть ли способ, которым я могу сделать это легко, желательно бесплатно и под Linux? Я желаю запрограммировать небольшое количество, возможно, для взаимодействия с какой-то библиотекой, но не хочу сам писать программу обработки видео. Вы можете предположить, что входное и выходное видео записаны в любом наиболее распространенном формате:

Аналог команды gm montage (для изображений) был бы фантастическим.

Ответы [ 4 ]

6 голосов
/ 17 января 2013

Следующая команда ffmpeg сделает именно то, что хотел спрашивающий:

ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -i input4.mp4 -filter_complex \
'[0:v]pad=iw*2:ih*2:0:0[int2];[int2][1:v]overlay=0:H/2[int3];[int3][2:v]overlay=W/2:0[int4];[int4][3:v]overlay=W/2:H/2[out]' \
-map [out] -c:v libx264 -crf 23 -preset veryfast output.mp4

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

Если видео имеют разное разрешение, команда потребует некоторой модификации.

4 голосов
/ 06 января 2010

Это похоже на проблему, для решения которой AviSynth .

AviSynth по сути является языком сценариев для управления видеопотоками. Текстовый файл описывает, какие операции вы хотите применить к одному или нескольким входным видеопотокам. Текстовый файл передается механизму AviSynth, который предоставляет виртуальный файл .AVI, который обрабатывает исходные потоки по одному кадру за раз по мере их извлечения.

Объедините AviSynth с отдельным инструментом, который читает из виртуального файла .AVI и записывает в новый файл, чтобы сохранить изменения.

4 голосов
/ 07 января 2010

Я сейчас использую GStreamer для аналогичного проекта (захвата лекции). Вы, вероятно, ищете элемент videomixer . Посмотрите на этот пример: конвейер gstreamer для 4-стороннего разделения видео (здесь находится сценарий ).

GStreamer прекрасно работает и на Windows. Вы можете проверить GStreamer WinBuilds , если вы заинтересованы.

Пример
Вот основной сценарий, который работает для меня в Windows (у него нет обратной косой черты, потому что я использую вызов gst_parse_launch из кода C для анализа описания конвейера):

  v0. ! queue
      ! decodebin
      ! ffmpegcolorspace
      ! videoscale
      ! video/x-raw-yuv,width=320,height=240
      ! videobox right=-320 bottom=-240
      ! ffmpegcolorspace
      ! vmix.sink_0
  v1. ! queue   
      ! decodebin
      ! ffmpegcolorspace
      ! videoscale
      ! video/x-raw-yuv,width=320,height=240
      ! videobox bottom=-240
      ! ffmpegcolorspace
      ! vmix.sink_1
  v2. ! queue   
      ! decodebin
      ! ffmpegcolorspace
      ! videoscale
      ! video/x-raw-yuv,width=320,height=240
      ! videobox right=-240
      ! ffmpegcolorspace
      ! vmix.sink_2
  v3. ! queue   
      ! decodebin
      ! ffmpegcolorspace
      ! videoscale
      ! video/x-raw-yuv,width=320,height=240
      ! ffmpegcolorspace
      ! vmix.sink_3
  vmix. ! queue 
        ! ffmpegcolorspace
        ! dshowvideosink
  filesrc location="c:/test.mpg" name="v0"
  filesrc location="c:/test.mpg" name="v1"
  filesrc location="c:/test.mpg" name="v2"
  filesrc location="c:/test.mpg" name="v3"
  videomixer name=vmix
             sink_0::xpos=0   sink_0::ypos=0   sink_0::zorder=0
             sink_1::xpos=320 sink_1::ypos=0   sink_1::zorder=1
             sink_2::xpos=0   sink_2::ypos=240 sink_2::zorder=2
             sink_3::xpos=320 sink_3::ypos=240 sink_3::zorder=3
1 голос
/ 23 февраля 2009

Одним из возможных решений было бы описание макета вашего видеомонтажа с помощью SMIL , языка разметки мультимедиа. Для этого требуется текстовый редактор для написания документа SMIL и видеопроигрыватель SMIL (например, Ambulant , Quicktime или Realplayer) для его отображения.

...