Eu tenho um script como segue:
ffmpeg -i input.mp4 -stabilization-pass-1-stuff && \
ffmpeg -i input.mp4 -b:v xxxxk -stabilization-pass-2-h264-pass-1-stuff && \
ffmpeg -i input.mp4 -b:v xxxxk -h264-pass-2-output-stuff output.mp4
Como posso reescrever o script para fornecer input.mp4 e taxa de bits xxxxk uma vez no início do script?
Responder1
Com variáveis de shell. "Não se repetir" é um dos principais casos de uso de variáveis shell:
#!/bin/sh
file='input.mp4'
bitrate='xxxxk'
ffmpeg -i "$file" -stabilization-pass-1-stuff &&
ffmpeg -i "$file" -b:v "$bitrate" -stabilization-pass-2-h264-pass-1-stuff &&
ffmpeg -i "$file" -b:v "$bitrate" -h264-pass-2-output-stuff output.mp4
Notas:
Seu script não contémShebang. Nesse casoo intérprete depende do shell do qual você invoca o script. Em geral, não é uma boa ideia omitir tudo. Adicionei
#!/bin/sh
por dois motivos:- para mostrar a aparência de um shebang;
- para indicar que as variáveis do shell são um conceito bastante básico que funciona no
sh
, portanto, você pode esperar que o mesmo código funcione em qualquer shell que tente ser compatível com POSIX.
- Citar é importante.