# 1 Để đồng thời làm mờ dần âm thanh vào / ra:
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
Thời gian afade là trong vài giây .
# 2 Tự động? Không. Nhưng xem cách giải quyết dưới đây
Trước tiên bạn có thể chạy ffprobe để có thời lượng.
ffprobe -i clip.mp4 -show_entries stream=codec_type,duration -of compact=p=0:nk=1
Bạn sẽ nhận được một cái gì đó như thế này:
video|13.556000
audio|13.816000
Sau đó, bạn có thể sử dụng ở trên để đặt mờ dần. Những lần này là trong vài giây.
Cách giải quyết
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 có một sseof
tùy chọn cho phép một người tìm kiếm đầu vào từ cuối. Chúng ta có thể sử dụng điều đó để thực hiện mục tiêu của mình. Vì vậy, chúng tôi cung cấp đầu vào hai lần, với lần thứ hai chỉ ăn vào giây cuối cùng. Chúng tôi nói với FFmpeg để bảo vệ dấu thời gian, để ffmpeg duy trì vị trí tạm thời của phần đuôi này.
Chúng tôi áp dụng độ mờ dần cho đuôi này và sau đó phủ kết quả lên đầu vào đầy đủ. Vì chúng là cùng một tệp phương tiện, tiền cảnh hoàn toàn bao phủ nền và kể từ khi copyts
được áp dụng, lớp phủ xảy ra trên khung giống hệt tương ứng trong đầu vào nền.
Đối với âm thanh, chúng tôi tạo ra một âm thanh giả có thời lượng 2 giây và sau đó áp dụng một âm thanh chéo âm thanh từ âm thanh chính cho âm thanh giả này. Vì âm thanh thứ 2 trống, nên thực tế, đây là phần mờ dần cho đầu vào chính. Việc -shortest
này được thêm vào để loại bỏ các phần của âm thanh giả sau khi xảy ra giao thoa.