2

Предположим, у меня есть два видео (формат AVI, если это имеет значение), например, movie1.avi и movie2.avi .

movie1.avi имеет частоту кадров 10 кадров в секунду. movie2.avi также есть частота кадров 10 кадров в секунду, но она где-то ускорена, так что она должна воспроизводиться со скоростью 5 кадров в секунду.

Теперь я хочу создать новый фильм, который состоит в основном из movie2.avi (замедленного), спроецированного в правом нижнем углу movie1.avi .

Какой метод я могу использовать для создания этих двух фильмов, как это? Нужно ли разбивать их на несколько кадров, составлять изображения и снимать новый фильм? Будет ли это сохранить качество как есть? Легко доступные инструменты, чтобы получить то, что я хочу?

Либо предложение Windows, либо Linux сделало бы эту работу за меня.

2 ответа2

2

Вы можете использовать фильтры ffmpeg для наложения видео и создания эффекта «картинка в картинке». Чтобы наложить movie2.avi , нам нужно уменьшить его, а для воспроизведения с более низкой частотой кадров мы будем использовать другой фильтр.

Ваша команда выглядит примерно так:

ffmpeg -i movie1.avi \
-filter:v "movie=movie2.avi, scale=iw/2:ih/2, setpts=2.0*PTS [small];\
[in][small] overlay=main_w-overlay_w:main_h-overlay_h [out]" output.avi

Для удобства чтения я разделил команду где \ находятся. Чтобы сломать это:

  • -i movie1.avi - ваш большой входной фильм.
  • -filter:v "movie=movie2.avi загружает небольшой фильм.
  • scale=iw/2:ih/2 уменьшает этот фильм до половины его ширины и высоты. iw и ih - параметры, которые принимают ширину и высоту ввода соответственно. Посмотрите на параметры фильтра scale , если вы хотите настроить это.
  • setpts=2.0*PTS позволяет видео показываться в два раза медленнее, чем оригинал, "расширяя" отдельные метки времени представления кадров. Вы можете ускорить его с 0.5*PTS . Смотрите setpts .
  • Это присваивается ссылке [small] .
  • Ссылки [in] и [small] затем объединяются с overlay фильтром, размещая верхний левый угол меньшего видео в середине кадра. Параметры main_w и main_h принимают ширину и высоту рамки, поэтому здесь вы выбираете точную среднюю точку.
  • Это делается для [out] .

Это может выглядеть примерно так:

Вот несколько советов:

  • Всегда используйте последнюю версию ffmpeg , а не ту, которая указана в вашем дистрибутиве Linux. Страница загрузки FFmpeg содержит список статических сборок для каждой операционной системы.

  • Команда по умолчанию будет использовать некоторые основные настройки, касающиеся видео и аудио кодеков. Это может привести к ухудшению качества изображения по сравнению с оригиналом. Вы можете настроить качество, установив более высокую скорость передачи данных или флаг переменной качества с помощью -qscale . Посмотрите руководство по кодированию XviD / MPEG-4 для видео AVI или выберите MP4 в качестве выхода с кодером x264 .

    На практике это может выглядеть следующим образом:

    ffmpeg -i movie1.avi … -c:v libxvid -qscale 2 output.avi
    ffmpeg -i movie1.avi … -c:v libx264 -crf 21 output.mp4
    
1

Вы можете сделать это, разбивая кадр за кадром, но существует множество бесплатных программ для редактирования видео, которые позволят вам сделать это намного проще.

В качестве примеров вы можете взглянуть на Windows Movie Maker как на решение для Windows или на kdenlive как на решение для Linux.

Почти каждое программное обеспечение для редактирования видео может изменить скорость воспроизведения видео или составить два видео, как вы описываете.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .