# 1 오디오를 동시에 페이드 인 / 아웃하려면 :
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
afade 시간은 초 단위 입니다.
# 2 자동으로? 아니요. 아래 해결 방법을 참조하십시오.
먼저 ffprobe를 실행하여 지속 시간을 얻을 수 있습니다.
ffprobe -i clip.mp4 -show_entries stream=codec_type,duration -of compact=p=0:nk=1
다음과 같은 것을 얻을 수 있습니다 :
video|13.556000
audio|13.816000
그런 다음 위의 내용을 사용하여 페이드를 배치 할 수 있습니다. 이 시간은 초입니다.
해결 방법
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에는 sseof
끝에서 입력을 찾을 수 있는 옵션이 있습니다. 우리는 그것을 사용하여 목표를 달성 할 수 있습니다. 따라서 두 번째 시간은 마지막 초만 섭취하면서 입력을 두 번 공급합니다. 우리는 FFmpeg에게 타임 스탬프를 보존하도록 지시하여 ffmpeg는이 꼬리 부분의 시간적 위치를 보존합니다.
이 꼬리에 페이드 아웃을 적용한 다음 결과를 전체 입력에 오버레이합니다. 그것들은 동일한 미디어 파일이기 때문에, 전경은 배경을 완전히 덮고, copyts
적용된 이후 , 배경 입력에서 대응하는 동일한 프레임에 오버레이가 발생합니다.
오디오의 경우 지속 시간이 2 초인 빈 더미 오디오를 만든 다음 기본 오디오에서이 더미 오디오로 오디오 크로스 페이드를 적용합니다. 두 번째 오디오는 비어 있으므로 사실상 주 입력의 페이드 아웃입니다. 은 -shortest
크로스 페이드가 발생한 후에, 더미 오디오의 일부분을 남겨 추가된다.