2017-02-07 2 views
1

Я пытаюсь автоматизировать повседневную задачу редактирования видео, которую я выполняю еженедельно. Я бы хотел использовать melt.MLT/melt: конкатенатные клипы, аудио и видео fade-in/fade-out

Предположим, у меня есть видеоролики 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 исчезает (т.е. когда видео заканчивается).

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

Что мне делать?

Благодарим за помощь.

ответ

3

Для # 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 
+0

Так это решает пункт # 1 (окончание аудио, когда видео заканчивается), так что спасибо за это! По какой-то причине, по-видимому, он не исчезает из-за звука (№2), когда фильм заканчивается. Связанная с вами документация говорит о том, что она * должна * работать, поэтому я не понимаю, почему это не так:/ Я продолжу копаться в документах и ​​опубликую ответ здесь, если я получу это для работы. –

+0

Как я думаю об этом, «mix» может не делать то, что вы хотите, потому что это действительно кроссфейд, и он применяет линейный переход, а не логарифмический. Возможно, попробуйте применить фильтр «объем», как это предлагается в моем обновленном ответе. – Brian

+0

Это делает именно то, что я искал, и удовлетворяет всем целям, изложенным в моем вопросе. Большое спасибо за Вашу помощь! (Как только SO позволяет мне, я собираюсь присудить вам 100 баллов за ваш ответ в качестве благодарности за то, что это стоит.) –

Смежные вопросы