Eu tenho um script para codificar vídeos (usando mencoder), mas existe uma maneira de adicionar um simples "fade out/in to black" na linha de comando, de preferência gratuito (como em código aberto).
Pode ser no Windows ou no Ubuntu Linux.
Responder1
A única coisa que consegui encontrar – com base na linha de comando – émmsuper8
, uma ferramenta Linux.
Especificamente, ele apresenta a mmsuper8fade
ferramenta, que parece ser útil para você.
Melhor seria se você editasse esta pergunta e fornecesse um exemplo que funcionasse para você!
Responder2
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 algum motivo fútil, então você terá que obtê-lo de outro lugar (vejaaqui).
Para desaparecer 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), acima 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 e evitar uma codificação extra desnecessária. Tenho certeza de que você pode conseguir a mesma coisa no mencoder, mas não conheço a sintaxe do mencoder.
Responder3
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>