Existe uma maneira de adicionar um efeito “fade to black” a um vídeo, a partir da linha de comando?

8

Eu tenho um script para codificar vídeos (usando o mencoder), mas existe uma maneira de adicionar um simples "fade out / in to black" da linha de comando, de preferência livre (como no código aberto).

Pode ser no Windows ou no Ubuntu Linux.

    
por Manu 04.02.2012 / 23:05

3 respostas

1

A única coisa que consegui encontrar - com base na linha de comando - é mmsuper8 , uma ferramenta do Linux.

Especificamente, ele apresenta a ferramenta mmsuper8fade , que parece ser útil para você.

Melhor seria se você editar esta questão e fornecer um exemplo que funcionou para você!

    
por 17.02.2012 / 21:06
11

Um ffmpeg recente com o filtro de vídeo 'fade' pode fazer isso. Infelizmente, o ffmpeg nos repositórios do Ubuntu não tem filtros habilitados por alguma razão vazia, então você terá que obtê-lo de algum outro lugar (veja aqui ).

Para aparecer a partir do preto, começando no quadro 0, mais de 50 quadros (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 desaparecer a partir do quadro 21000 (14 minutos a 25 fps), mais de 50 quadros:

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

Você pode combinar os dois em uma cadeia 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 você pode ver nesses exemplos, é necessário transcodificar o vídeo ao usar um filtro de vídeo. Como o ffmpeg e o mencoder compartilham muitas bibliotecas, deve ser bastante fácil reescrever seus scripts para usar o ffmpeg em vez do mencoder & evite uma codificação extra desnecessária. Tenho certeza que você pode conseguir a mesma coisa no mencoder, mas eu não sei a sintaxe do mencoder.

    
por 31.01.2013 / 01:05
5

Eu tenho esse script bash para diminuir o final dos filmes (áudio + vídeo) automaticamente:

#!/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>
    
por 09.09.2015 / 19:10