bash - eu estou fazendo para i em * .mp4, então no loop eu quero usar $ {i} mas sem o .mp4. como posso fazer isso?

3

Basicamente eu estou fazendo isso:

for i in *.mp4; 
do ffmpeg -i "${i}" -vf "movie=logo.png [watermark]; [in][watermark] overlay=10:10 [out]" -strict -2 -qscale 0 "${i}-watermarked.mp4"; 
done;

mas isso efetivamente faz esse comando

do ffmpeg -i "video.mp4" -vf "movie=logo.png [watermark];\ 
 [in][watermark] overlay=10:10 [out]" -strict -2 -qscale 0 "video.mp4-watermarked.mp4"; 

o bit no final - video.mp4-watermarked.mp4 é o meu problema. Eu quero que seja video-watermarked.mp4.

como posso fazer isso?

    
por slycat 10.03.2013 / 00:59

1 resposta

6

Se você estiver usando o bash, tente usar ${i%%.mp4} .

Para o seu exemplo, seria:

for i in *.mp4; 
do ffmpeg -i "${i}" -vf "movie=logo.png [watermark]; [in][watermark] overlay=10:10 [out]" -strict -2 -qscale 0 "${i%%.mp4}-watermarked.mp4"; 
done;

Existem muitas outras manipulações possíveis. O termo que você pode pesquisar nas páginas de manual é Expansão de Parâmetros .

    
por 10.03.2013 / 02:26