Чи є спосіб додати ефект "зів'ялого до чорного" до відео з командного рядка?


9

У мене є сценарій для кодування відео (за допомогою mencoder), але чи є спосіб додати простий "fade out / in black" з командного рядка, бажано безкоштовно (як у відкритому коді).

Це може бути або в Windows, або Ubuntu Linux.


1
Є чи mmsuper8 , схоже на роботу для вас? Будь ласка, вкажіть операційну систему тощо
slhck

Вибачте. Ubuntu або сім.
Ману

Зробіть mmsuper8 як свою відповідь, я проголосую за вас :)
Ману

Відповіді:


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.