ffmpeg.exe를 사용하여 특정 시간 간격으로 볼륨을 낮추는 방법

ffmpeg.exe를 사용하여 특정 시간 간격으로 볼륨을 낮추는 방법

ffmpeg.exe를 사용하여 특정 시간 간격으로 볼륨을 낮추려고 합니다. 5분 길이의 비디오가 있고 00:01:30에서 00:02:00 사이에 볼륨을 낮추고 싶다고 가정해 보겠습니다. 동시에 다른 매개변수를 사용할 수 있다는 내용을 읽었지만 이해할 수 없었습니다.

어떤 도움이라도 대단히 감사하겠습니다.

답변1

필터 콤플렉스를 사용하여 이를 수행할 수 있습니다.

ffmpeg -i in.mp4 -filter_complex "[0:v]null[out2];[0:a]atrim=duration=90[a];\
[0:a]atrim=start=90:duration=30,volume=0.1,asetpts=PTS-STARTPTS[b];[a][b]concat=v=0:a=1[c];\
[0:a]atrim=start=120,asetpts=PTS-STARTPTS[d];[c][d]concat=v=0:a=1[out1]" \
-acodec mp2 -map [out1] -map [out2] out.mp4

90초에서 120초까지의 세그먼트에서 볼륨을 0.1(1.0이 가득 찼음)로 낮춥니다. 어떻게 작동하나요? 필터 그래프에 포함시키기 위해 비디오 스트림(필터 null)에는 아무 작업도 수행하지 않습니다. 그런 다음 오디오 스트림에서 처음 90초를 자르고 오디오 스트림에서 30초(90-120)를 자르고 볼륨을 0.1로 줄입니다. 그런 다음 마지막 2개의 오디오 스트림을 concat과 결합합니다. 그런 다음 나머지 오디오 스트림을 다시 다듬고 다시 결합합니다.

도움이 되길 바랍니다.

관련 정보