Isso vai te dar a duração do seu arquivo em segundos:
let A=$(avprobe input.webm 2>&1 | grep "^ *Duration: " | sed "s/^ *Duration: \([0-9:]*\).*/(((\1)/" | sed "s/0\([0-9]\)/\1/g" | sed "s/:/)*60+/g")
Embora avprobe
retorne as frações dos segundos, bash não lida com frações. Então eu estou soltando tudo que é menos de 1 segundo.
Depois disso, você pode facilmente fazer algo assim:
let A=$A-5
avconv -i input.webm -t $A -c:v copy -c:a copy output.webm
Desculpe por não usar ffmpeg
. Eu mudei para avconv
há um tempo atrás, eu acredito que as opções devem ser as mesmas, e se não, deve ser trivial reescrevê-las conforme necessário.
Depois disso, a questão é apenas enrolar a coisa toda no loop for e fazer todos os arquivos de uma só vez.