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

9

Tengo un script para codificar videos (usando mencoder), pero ¿hay alguna manera de agregar un simple "fundido de entrada / salida a negro" desde la línea de comandos, preferiblemente gratis (como en código abierto).

Podría estar en Windows o Ubuntu Linux.

Manu
fuente
1
¿ Parece que mmsuper8 funciona para ti? Indique el sistema operativo, etc.
slhck
Lo siento. Ubuntu o siete.
Manu
Haga que mmsuper8 sea su respuesta, lo votaré :)
Manu

Respuestas:

1

Lo único que pude encontrar, basado en la línea de comandos, es mmsuper8una herramienta de Linux.

Específicamente, presenta la mmsuper8fadeherramienta, que parece que podría ser útil para usted.

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

slhck
fuente
13

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

Para desvanecerse del negro, comenzando en el cuadro 0, más de 50 cuadros (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 comenzando en el cuadro 21000 (14 minutos a 25 fps), más de 50 cuadros:

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 puede lograr lo mismo en mencoder, pero no sé la sintaxis de mencoder.

maldad
fuente
6

Tengo este script bash para desvanecer 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>
Gilles Quenot
fuente