MLT/melt: объединение клипов, плавное появление/затухание звука и видео

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

Предположим, у меня есть видео a, b и c. Я хотел бы сделать следующее:

  1. Вырежьте a1, b1 и c1 внутри a, b и c.
  2. Объедините a1, b1 и c1 в одно видео.
  3. Переход от черного к черному на одну секунду при переходе между a1, b1 и c1.
  4. Примените саундтрек к объединенному выходу a1, b1 и c1, сохранив при этом исходный звук.
  5. Заглушите саундтрек, когда c1 станет черным (завершение видео).

Согласно которому:

  1. a, b и c имеют произвольную длину.
  2. a, b и c — все видео 1080p, снятые со скоростью 60 кадров в секунду.
  3. a, b, c, a1, b1 и c1 — все файлы .mp4.
  4. Саундтрек представляет собой файл .mp3.

Это так близко, как я получил:

#!/bin/sh
melt \
  colour:black out=59 $VIDEO1 in=0 out=600 -mix 60 -mixer luma \
  colour:black out=59 -mix 60 -mixer luma \
  colour:black out=59 $VIDEO2 in=0 out=600 -mix 60 -mixer luma \
  colour:black out=59 -mix 60 -mixer luma \
  colour:black out=59 $VIDEO3 in=0 out=600 -mix 60 -mixer luma \
  colour:black out=59 -mix 60 -mixer luma \
  -audio-track $AUDIO -transition mix

(В приведенном выше примере я использую произвольные заполнители для соответствующих файлов и времени появления/затухания.)

Это позволяет отрезать и объединить a1, b1 и c1 с анимированными переходами. Однако:

  1. Если $AUDIO длиннее комбинации a1, b1 и c1, звук продолжает воспроизводиться (с белым экраном) после окончания видео.

  2. Звуковая дорожка не исчезает, когда исчезает c1 (т.е. когда видео заканчивается).

Из того, что я понял, исчезновение саундтрека может быть достигнуто путем «анимации звукового фильтра громкости», но мне не удалось это сделать.

Что мне попробовать?

Спасибо за вашу помощь.


person Chris Allen Lane    schedule 07.02.2017    source источник


Ответы (1)


Для № 1 вам нужно установить точку выхода для звука. У вас есть три клипа по 601 кадру (нулевой кадр считается за один), всего 1803 кадра. Итак, выход = 1802.

Для № 2 вы можете применить фильтр громкости к концу звуковой дорожки, чтобы она затухала.

См. документацию по объемному фильтру, чтобы понять параметры усиления и окончания: https://www.mltframework.org/plugins/FilterVolume/

#!/bin/sh
melt \
  colour:black out=59 $VIDEO1 in=0 out=600 -mix 60 -mixer luma \
  colour:black out=59 -mix 60 -mixer luma \
  colour:black out=59 $VIDEO2 in=0 out=600 -mix 60 -mixer luma \
  colour:black out=59 -mix 60 -mixer luma \
  colour:black out=59 $VIDEO3 in=0 out=600 -mix 60 -mixer luma \
  colour:black out=59 -mix 60 -mixer luma \
  -audio-track $AUDIO out=1802 -attach-track volume:0db end=-70db in=1703 out=1802 \
  -transition mix in=0 out=1802
person Brian    schedule 08.02.2017
comment
Так что это решает проблему № 1 (окончание звука, когда заканчивается видео), так что спасибо за это! Однако по какой-то причине кажется, что звук не исчезает (№ 2), когда фильм заканчивается. Документация, на которую вы ссылаетесь, предполагает, что она должна работать, поэтому я не понимаю, почему она не работает:/ Я продолжу копаться в документах и ​​опубликую ответ здесь, если получу это работать. - person Chris Allen Lane; 08.02.2017
comment
На мой взгляд, микширование может не делать того, что вам нужно, потому что на самом деле это кроссфейд, и он применяет линейный переход, а не логарифмический. Возможно, попробуйте применить фильтр громкости, как это предлагается в моем обновленном ответе. - person Brian; 09.02.2017
comment
Это делает именно то, что я искал, и удовлетворяет всем целям, указанным в моем вопросе. Большое спасибо за Вашу помощь! (Как только SO позволит мне, я назначу награду в 100 баллов за ваш ответ в качестве благодарности за то, что это стоит.) - person Chris Allen Lane; 09.02.2017