# 1 Untuk secara bersamaan memudar audio masuk / keluar:
ffmpeg -i clip.mp4 -vf 'fade=in:0:30,fade=out:960:30'
-af 'afade=in:st=0:d=1,afade=out:st=32:d=1'
-c:v libx264 -crf 22 -preset veryfast fadeInOut.mp4
Kali afade berada di detik .
# 2 Secara Otomatis? Tapi lihat solusi di bawah ini
Pertama-tama Anda dapat menjalankan ffprobe untuk mendapatkan durasi.
ffprobe -i clip.mp4 -show_entries stream=codec_type,duration -of compact=p=0:nk=1
Anda akan mendapatkan sesuatu seperti ini:
video|13.556000
audio|13.816000
Anda kemudian dapat menggunakan hal di atas untuk memudar. Waktu ini dalam detik.
Penanganan masalah
ffmpeg -i clip.mp4 -sseof -1 -copyts -i clip.mp4 -filter_complex
"[1]fade=out:0:30[t];[0][t]overlay,fade=in:0:30[v];
anullsrc,atrim=0:2[at];[0][at]acrossfade=d=1,afade=d=1[a]"
-map "[v]" -map "[a]" -c:v libx264 -crf 22 -preset veryfast -shortest fadeInOut.mp4
FFmpeg memiliki sseof
opsi yang memungkinkan seseorang untuk mencari input dari akhir. Kita dapat menggunakannya untuk mencapai tujuan kita. Jadi kami memberi makan input dua kali, dengan waktu ke-2 menelan hanya detik terakhir. Kami memberi tahu FFmpeg untuk menjaga stempel waktu, sehingga ffmpeg mempertahankan posisi temporal dari bagian ekor ini.
Kami menerapkan fade out untuk ekor ini dan kemudian menampilkan hasilnya ke input penuh. Karena mereka adalah file media yang sama, latar depan sepenuhnya menutupi latar belakang, dan sejak copyts
diterapkan, overlay terjadi pada bingkai identik yang sesuai pada input latar belakang.
Untuk audio, kami membuat audio dummy kosong berdurasi 2 detik, dan kemudian menerapkan crossfade audio dari audio utama ke audio dummy ini. Karena audio ke-2 kosong, efeknya adalah fade-out untuk input utama. Itu -shortest
ditambahkan untuk meninggalkan bagian dari audio boneka setelah crossfade telah terjadi.