Есть ли способ добавить эффект «Затухание в черный» к видео из командной строки?


9

У меня есть скрипт для кодирования видео (с помощью mencoder), но есть ли способ добавить простое «затухание / чернение» из командной строки, желательно бесплатно (как в открытом исходном коде).

Это может быть как в Windows, так и в Ubuntu Linux.


1
Есть ли mmsuper8 , похоже на работу для вас? Пожалуйста, укажите операционную систему и т. Д.
slhck

Сожалею. Ubuntu или семь.
Ману

Сделайте mmsuper8 своим ответом, я буду голосовать за вас :)
Manu

Ответы:


1

Единственное, что я смог найти - основываясь на командной строке - mmsuper8это инструмент Linux.

В частности, он имеет mmsuper8fadeинструмент, который, кажется, может быть полезен для вас.

Лучше всего, если вы отредактируете этот вопрос и предоставите пример, который сработал для вас!


14

Недавний ffmpeg с видеофильтром 'fade' может сделать это. К сожалению, ffmpeg в репозиториях Ubuntu не имеет фильтров, включенных по какой-то внутренней причине, поэтому вам придется получить его откуда-то еще (см. Здесь ).

Для перехода от черного, начиная с кадра 0, более 50 кадров (2 секунды при 25 кадрах в секунду):

ffmpeg -i input.mp4 -filter:v 'fade=in:0:50' \
-c:v libx264 -crf 22 -preset veryfast -c:a copy output.mp4

Для затухания, начиная с кадра 21000 (14 минут при 25 кадрах в секунду), более 50 кадров:

ffmpeg -i input.mp4 -filter:v 'fade=out:21000:50' \
-c:v libx264 -crf 22 -preset veryfast -c:a copy output.mp4

Вы можете объединить два в цепочку фильтров:

ffmpeg -i input.mp4 -filter:v 'fade=in:0:50,fade=out:21000:50' \
-c:v libx264 -crf 22 -preset veryfast -c:a copy output.mp4

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


6

У меня есть сценарий bash для автоматического исчезновения конца фильмов (аудио + видео):

#!/bin/bash

# Audio + vidéo fade out at the end of mp4 files

# 2015-09-09 19:07:17.0 +0200 / Gilles Quenot

# length of the fade out
fade_duration=2 # seconds

if [[ ! $2 ]]; then
    cat<<EOF
Usage:
    ${0##*/} <input mp4> <output mp4>
EOF
    exit 1
fi

for x in bc awk ffprobe ffmpeg; do
    if ! type &>/dev/null $x; then
        echo >&2 "$x should be installed"
        ((err++))
    fi
done

((err > 0)) && exit 1

duration=$(ffprobe -select_streams v -show_streams "$1" 2>/dev/null |
    awk -F= '$1 == "duration"{print $2}')
final_cut=$(bc -l <<< "$duration - $fade_duration")
ffmpeg -i "$1" \
    -filter:v "fade=out:st=$final_cut:d=$fade_duration" \
    -af "afade=t=out:st=$final_cut:d=$fade_duration" \
    -c:v libx264 -crf 22 -preset veryfast -strict -2 "$2"

Применение :

FadeOutMp4 <input mp4> <output mp4>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.