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

StackOverflow https://stackoverflow.com/questions/575705

  •  05-09-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

GStreamer отлично работает и в Windows.Возможно, вы захотите ознакомиться с GStreamer выигрывает сборки если вам интересно.

Пример
Вот базовый скрипт, который работает у меня в 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

Другие советы

Следующая команда 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

Во-первых, фильтр pad удваивает размер первого входного видео, оставляя исходное видео в верхнем левом углу.Фильтры последовательного наложения затем помещают другие входные данные поверх черной обивки, добавленной фильтром pad.

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

Это звучит как проблема такого рода, которая Ависинт был разработан для решения.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top