Как я могу выложить видео мозаикой / создать видеомонтаж?

Asked
Viewd8399

4

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

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

4 ответов

4

В настоящее время я сам использую GStreamer для аналогичного проекта (запись лекций). Вероятно, вы ищете видеомиксер . Посмотрите этот пример: Конвейер 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

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

4

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

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

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