¿Hay alguna manera de agregar un efecto de "fundido a negro" a un video, desde la línea de comando?

¿Hay alguna manera de agregar un efecto de "fundido a negro" a un video, desde la línea de comando?

Tengo un script para codificar videos (usando mencoder), pero ¿hay alguna manera de agregar un simple "desvanecimiento/aparición en negro" desde la línea de comando, preferiblemente gratis (como en el código abierto)?

Podría ser en Windows o Ubuntu Linux.

Respuesta1

Lo único que pude encontrar, según la línea de comando, esmmsuper8, una herramienta de Linux.

Específicamente, incluye la mmsuper8fadeherramienta, que parece que podría resultarle útil.

¡Lo mejor sería editar esta pregunta y proporcionar un ejemplo que funcione para usted!

Respuesta2

Un ffmpeg reciente con el filtro de video 'desvanecido' puede hacer esto. Desafortunadamente, el ffmpeg en los repositorios de Ubuntu no tiene filtros habilitados por alguna razón tonta, por lo que tendrás que obtenerlo de otro lugar (veraquí).

Para desvanecerse desde el negro, comenzando en el fotograma 0, más de 50 fotogramas (2 segundos a 25 fps):

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

Para desvanecerse a partir del fotograma 21000 (14 minutos a 25 fps), más de 50 fotogramas:

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

Puedes combinar los dos en una cadena de filtros:

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

Como puede ver en estos ejemplos, debe transcodificar el video cuando usa un filtro de video. Dado que ffmpeg y mencoder comparten muchas bibliotecas, debería ser bastante fácil reescribir sus scripts para usar ffmpeg en lugar de mencoder y evitar una codificación adicional innecesaria. Estoy bastante seguro de que puedes lograr lo mismo en mencoder, pero no conozco la sintaxis de mencoder.

Respuesta3

Tengo este script bash para atenuar el final de las películas (audio + video) automáticamente:

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

Uso:

FadeOutMp4 <input mp4> <output mp4>

información relacionada