Gibt es eine Möglichkeit, einem Video über die Befehlszeile einen „Ausblende-zu-Schwarz“-Effekt hinzuzufügen?

Gibt es eine Möglichkeit, einem Video über die Befehlszeile einen „Ausblende-zu-Schwarz“-Effekt hinzuzufügen?

Ich habe ein Skript zum Kodieren von Videos (mit Mencoder), aber gibt es eine Möglichkeit, über die Befehlszeile ein einfaches „Ausblenden/Einblenden in Schwarz“ hinzuzufügen, vorzugsweise kostenlos (also Open Source)?

Es könnte entweder unter Windows oder Ubuntu Linux laufen.

Antwort1

Das einzige, was ich finden konnte – basierend auf der Befehlszeile – istmmsuper8, ein Linux-Tool.

Insbesondere wird das mmsuper8fadeTool vorgestellt, das für Sie nützlich sein könnte.

Am besten wäre es, wenn Sie diese Frage bearbeiten und ein Beispiel angeben, das für Sie funktioniert hat!

Antwort2

Ein aktuelles ffmpeg mit dem Videofilter „fade“ kann dies. Leider hat das ffmpeg in den Ubuntu-Repos aus irgendeinem albernen Grund keine Filter aktiviert, also müssen Sie es woanders herbekommen (sieheHier).

So blenden Sie ab Bild 0 über 50 Bilder (2 Sekunden bei 25 fps) von Schwarz ein:

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

Zum Ausblenden ab Bild 21000 (14 Minuten bei 25 fps) über 50 Bilder:

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

Sie können beides zu einer Filterkette kombinieren:

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

Wie Sie diesen Beispielen entnehmen können, müssen Sie Videos transkodieren, wenn Sie einen Videofilter verwenden. Da ffmpeg und mencoder viele Bibliotheken gemeinsam nutzen, sollte es relativ einfach sein, Ihre Skripte so umzuschreiben, dass sie ffmpeg statt mencoder verwenden und eine unnötige zusätzliche Kodierung vermeiden. Ich bin ziemlich sicher, dass Sie dasselbe in mencoder erreichen können, aber ich kenne die Mencoder-Syntax nicht.

Antwort3

Ich habe dieses Bash-Skript, um das Ende von Filmen (Audio + Video) automatisch auszublenden:

#!/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"

Verwendung :

FadeOutMp4 <input mp4> <output mp4>

verwandte Informationen