# 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.
-report
menambahkan dan berbagi laporan.Ini adalah retasan yang mengerikan, tetapi ini mungkin berhasil jika yang Anda ingin lakukan hanyalah audio fade in / out tetapi tidak tahu persis berapa lama klipnya:
[edit 2019-07-24: Perhatikan bahwa solusi ini tidak baik untuk solusi streaming karena membutuhkan trek lengkap untuk diproses sebelum byte pertama dapat di-stream]
Pilihan lain yang akan saya gunakan
acrossfade
dengan trek diam:sumber
Jawaban atas pertanyaan 2 adalah YA tegas! Saya sedang mencari fungsi yang sama dan saya akhirnya menulis skrip bash yang meminta durasi fade dalam hitungan detik dan menghitung frame awal untuk fade-out:
Fade memerlukan pengodean ulang sehingga menggunakan
crf
nilai rendah untuklibx264
memberikan pengodean ulang berkualitas tinggi. Komentar harus menjelaskan yang lainnya.sumber
automatically figure out the duration
menggunakanffprobe
, yang diinstal denganffmpeg
. Siapa yang mengatakan sesuatu tentang pembatasan jumlah perintah atau*nix
? Tampaknya OP menggunakan versi UNIX. Tidak.exe
dalamffmpeg
perintah. Saya sendiri menggunakanOS X
yang dibangunUNIX
tetapi tidakUNIX
.ffprobe
merupakan bagian integral dariffmpeg
distribusi. Anda memilih di nits untuk menyelamatkan IMO wajah.