Você esqueceu de usar backticks - ou melhor: $( )
subshell - na invocação seq
. Isso funciona:
for i in $( seq 50 );
do ffmpeg -i input.mpg -sameq -ss 00:'expr $i \* 2 - 2':00 -t 00:02:00 output.mpg; done
Outra coisa é que você provavelmente não quer que output.mpg
seja sobrescrito em cada rodada, não é? :) Use $i
no nome do arquivo de saída também.
Além disso: No bash, você pode usar apenas $(( ))
ou $[ ]
em vez de expr
- também parece mais claro (na minha opinião). Além disso, não há necessidade de seq
- a expansão de chaves é tudo o que você precisa para obter uma sequência. Aqui está um exemplo:
for i in {1..50}
do ffmpeg -i input.mpg -sameq -ss 00:$[ i* 2 - 2 ]:00 -t 00:02:00 output_$i.mpg
done
Outra coisa boa sobre chaves é que você pode ter zeros à esquerda nos nomes (muito útil para a classificação de arquivos no futuro):
for i in {01..50}
do ffmpeg -i input.mpg -sameq -ss 00:$[ i* 2 - 2 ]:00 -t 00:02:00 output_$i.mpg
done
Observe também que i*2 - 2
pode ser facilmente simplificado para i*2
se você alterar o intervalo:
for i in {00..49}
do ffmpeg -i input.mpg -sameq -ss 00:$[ i*2 ]:00 -t 00:02:00 output_$i.mpg
done