Existe-t-il un moyen d'ajouter un effet "fondu au noir" à une vidéo, à partir de la ligne de commande?

9

J'ai un script pour encoder des vidéos (en utilisant mencoder), mais y a-t-il un moyen d'ajouter un simple "fondu sortant / noir vers le noir" à partir de la ligne de commande, de préférence gratuit (comme en open source).

Il peut s'agir de Windows ou d'Ubuntu Linux.

Manu
la source
1
Est- ce que mmsuper8 fonctionne pour vous? Veuillez indiquer le système d'exploitation, etc.
slhck
Désolé. Ubuntu ou sept.
Manu
Faites mmsuper8 comme réponse, je vais vous voter :)
Manu

Réponses:

1

La seule chose que j'ai pu trouver - basée sur la ligne de commande - est mmsuper8un outil Linux.

Plus précisément, il comporte l' mmsuper8fadeoutil, qui semble pouvoir vous être utile.

Le mieux serait de modifier cette question et de fournir un exemple qui a fonctionné pour vous!

slhck
la source
14

Un ffmpeg récent avec le filtre vidéo 'fade' peut le faire. Malheureusement, le ffmpeg dans les dépôts Ubuntu n'a pas de filtres activés pour une raison stupide, vous devrez donc l'obtenir ailleurs (voir ici ).

Pour un fondu en noir à partir de l'image 0, sur 50 images (2 secondes à 25 ips):

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

Pour disparaître progressivement à partir de l'image 21000 (14 minutes à 25 ips), sur 50 images:

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

Vous pouvez combiner les deux dans une chaîne de filtres:

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

Comme vous pouvez le voir sur ces exemples, vous devez transcoder la vidéo lorsque vous utilisez un filtre vidéo. Étant donné que ffmpeg et mencoder partagent de nombreuses bibliothèques, il devrait être assez facile de réécrire vos scripts pour utiliser ffmpeg au lieu de mencoder et éviter un encodage supplémentaire inutile. Je suis presque sûr que vous pouvez réaliser la même chose dans mencoder, mais je ne connais pas la syntaxe de mencoder.

evilsoup
la source
6

J'ai ce script bash pour atténuer automatiquement la fin des films (audio + vidéo):

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

Utilisation:

FadeOutMp4 <input mp4> <output mp4>
Gilles Quenot
la source