Neste caso, onde você deseja que $ argsN seja passado para o ffmpeg como vários argumentos que você realmente não deseja citá-lo. Para ser claro, você quer citar a linha onde você está configurando, então:
args1="-r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i"
Está correto. Mas a linha ffmpeg deve ser algo como isto:
/usr/local/bin/ffmpeg $args1 "${file}" -vf $args2 $args3 "${args[0]}_${startingfrom}_0001_02.mp4"
O problema aqui é que o ffmpeg está esperando uma série de argumentos como este:
0: /usr/local/bin/ffmpeg
1: -r
2: 29.97
3: -t
...
Quando você cita a variável que contém os argumentos, todos eles são enviados como um único argumento como este:
0: /usr/local/bin/ffmpeg
1: -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i
...
Como o ffmpeg não tem uma única opção, -r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i
reclama corretamente.
Se você quer brincar com a capacidade de ver exatamente como seus argumentos estão sendo passados, você pode usar este simples shell script que imprime cada argumento passado para ele em uma linha separada:
#!/bin/bash
echo "0: $0"
i=1
for argument in "$@"; do
echo "${i}: $argument"
((i++))
done