
조건부로 비디오를 흐리게 하고 싶습니다. 30초 비디오 형식의 경우 2-10초는 12-20초와 다른 영역을 흐리게 합니다.
하지만 지금까지 한 번만 흐리게 할 수 있습니다. 다음은 목표를 달성하려고 시도한 명령입니다. 사용산술 표현식
ffmpeg -y -i with_out_sound.mp4 filter_complex [0:v]boxblur=10:enable='between(t,2,10)'[bg],[0:v]crop=206:169:3 2:121[fg],[bg][fg]overlay=32:121:enable='between(t,2,10)'[tmp];[0:v]boxblur=10: enable='between(t,12,20)'[bg],[0:v]crop=206:169:42:100[fg],[bg][fg]overlay=42:100 :enable='between(t,12,20)'[tmp2];[tmp][tmp2]concat[tmp3] -map [tmp3] with_out_sou ndd.mp4
하지만 위의 명령은 먼저 Blur(2-10) 전체 비디오를 완료한 다음 Blur(12-20)를 사용하여 전체 비디오를 다시 연결하므로 30초 대신 60초 비디오를 얻습니다.
ffmpeg -y -i with_out_sound.mp4 -filter_complex [0:v]boxblur=10:enable='between(t,2,10)'[bg];[bg]crop=206:169:32:121[fg];[bg][fg]overlay=32:121:enable='between(t,2,10)'[tmp],[tmp]b oxblur=10:enable='between(t,12,20)'[tbg],[tmp]crop=206:169:42:100[tfg],[tbg][tfg]overlay=42:100:enable='between(t,12,20)'[tmp2] -map "[tmp2]" with_out_soundd.mp4
하지만 이 경우 필터 그래프 설명의 스트림 지정자 'tmp'가 스트림과 일치하지 않는다는 오류가 발생하기 시작합니다.
Windows에서 ffmpeg 최신 버전을 사용하고 있습니다.
답변1
사용
ffmpeg -y -i with_out_sound.mp4 -filter_complex \
"[0:v]boxblur=10:enable='if(between(t,2,10)+between(t,12,20),1,0)'[bg];
[0:v]crop=206:169:32:121[fg1];[0:v]crop=206:169:42:100[fg2];
[bg][fg1]overlay=32:121:enable='between(t,2,10)'[tmp];
[tmp][fg2]overlay=42:100:enable='between(t,12,20)'[tmp2]"
-map [tmp2] with_blur.mp4
당신은 할 수 있습니다추가하다여러 조건을 사용하여 한 번의 필터 실행으로 흐림을 수행한 다음 두 개의 오버레이를 사용합니다. 연결은 피합니다. 연결을 사용하려면 두 스트림을 잘라야 하지만 이것이 더 쉽습니다.
사용된 조건은 true이면 if(x,y,z)
평가 x
하고 반환하는 else 입니다 .y
z