Ho uno script per codificare i video (usando mencoder), ma c'è un modo per aggiungere un semplice "dissolvenza / in nero" dalla riga di comando, preferibilmente libero (come in open source).
Potrebbe essere su Windows o Ubuntu Linux.
Ho uno script per codificare i video (usando mencoder), ma c'è un modo per aggiungere un semplice "dissolvenza / in nero" dalla riga di comando, preferibilmente libero (come in open source).
Potrebbe essere su Windows o Ubuntu Linux.
Risposte:
Un ffmpeg recente con il filtro video "dissolvenza" può farlo. Sfortunatamente, ffmpeg nei repository di Ubuntu non ha filtri abilitati per qualche motivo insano, quindi dovrete ottenerlo da qualche altra parte (vedi qui ).
Per sfumare dal nero, iniziando dal fotogramma 0, oltre 50 fotogrammi (2 secondi 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
Per sfumare a partire dal fotogramma 21000 (14 minuti a 25 fps), oltre 50 fotogrammi:
ffmpeg -i input.mp4 -filter:v 'fade=out:21000:50' \
-c:v libx264 -crf 22 -preset veryfast -c:a copy output.mp4
Puoi combinare i due in una filterchain:
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
Come puoi vedere da questi esempi, devi transcodificare i video quando usi un filtro video. Poiché ffmpeg e mencoder condividono molte librerie, dovrebbe essere abbastanza facile riscrivere i propri script per utilizzare ffmpeg invece di mencoder ed evitare una codifica aggiuntiva non necessaria. Sono abbastanza sicuro che puoi ottenere la stessa cosa in mencoder, ma non conosco la sintassi di mencoder.
Ho questo script bash per sfumare automaticamente la fine dei film (audio + video):
#!/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"
FadeOutMp4 <input mp4> <output mp4>