Apakah ada cara untuk menambahkan efek "fade to black" ke video, dari baris perintah?

9

Saya memiliki skrip untuk meng-encode video (menggunakan mencoder), tetapi apakah ada cara untuk menambahkan "fade out / in to black" sederhana dari baris perintah, lebih disukai gratis (seperti dalam open source).

Itu bisa di Windows atau Ubuntu Linux.

Manu
sumber
1
Apakah mmsuper8 tampaknya berfungsi untuk Anda? Sebutkan sistem operasi, dll.
slhck
Maaf. Ubuntu atau tujuh.
Manu
Jadikan mmsuper8 sebagai jawaban Anda, saya akan memilih Anda :)
Manu

Jawaban:

1

Satu-satunya hal yang dapat saya temukan - berdasarkan pada baris perintah - adalah mmsuper8, alat Linux.

Secara khusus, fitur mmsuper8fadealat, yang sepertinya bisa berguna untuk Anda.

Yang terbaik adalah jika Anda mengedit pertanyaan ini dan memberikan contoh yang sesuai untuk Anda!

slhck
sumber
13

Ffmpeg baru-baru ini dengan filter video 'fade' dapat melakukan ini. Sayangnya, ffmpeg di repo Ubuntu tidak memiliki filter yang diaktifkan karena alasan yang tidak masuk akal, jadi Anda harus mendapatkannya dari tempat lain (lihat di sini ).

Untuk memudar dari hitam, mulai dari frame 0, lebih dari 50 frame (2 detik @ 25fps):

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

Untuk memudar mulai dari frame 21000 (14 menit @ 25fps), lebih dari 50 frame:

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

Anda dapat menggabungkan keduanya menjadi 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

Seperti yang dapat Anda lihat dari contoh-contoh ini, Anda harus transcode video saat menggunakan filter video. Karena ffmpeg dan mencoder membagikan banyak pustaka, seharusnya cukup mudah untuk menulis ulang skrip Anda untuk menggunakan ffmpeg alih-alih mencoder & menghindari enkode tambahan yang tidak perlu. Saya cukup yakin bahwa Anda dapat mencapai hal yang sama dalam mencoder, tetapi saya tidak tahu sintaks mencoder.

Evilsoup
sumber
6

Saya memiliki skrip bash ini untuk memudar akhir film (audio + video) secara otomatis:

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

Penggunaan:

FadeOutMp4 <input mp4> <output mp4>
Gilles Quenot
sumber