Como diminuir o volume em um intervalo de tempo específico com ffmpeg.exe

1

Estou tentando diminuir o volume em um intervalo de tempo específico com ffmpeg.exe. Digamos que eu tenha um vídeo de 5 minutos e quero diminuir o volume entre 00:01:30 e 00:02:00. Eu li que podemos usar parâmetros diferentes ao mesmo tempo, mas não consegui descobrir.

Qualquer ajuda seria muito apreciada.

    
por iwocan 02.12.2013 / 13:52

1 resposta

4

Você pode fazer isso com o complexo de filtros:

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

Diminui o volume para 0,1 (1,0 está cheio) no segmento de 90 seg para 120 seg. Como funciona? Não faz nada com fluxo de vídeo (filtro nulo) apenas para incluí-lo no gráfico de filtro. Em seguida, apara os primeiros 90 segundos do fluxo de áudio, depois corta 30 segundos (90-120) do fluxo de áudio e reduz o volume para 0,1. Em seguida, combina os últimos dois fluxos de áudio com concat. Então novamente corta o fluxo de áudio restante e combina novamente.

Espero que ajude.

    
por 02.12.2013 / 15:30

Tags