Tengo un script de la siguiente manera:
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
¿Cómo puedo reescribir el script para tener que proporcionar input.mp4 y bitrate xxxxk una vez al inicio del script?
Respuesta1
Con variables de shell. "No repetirse" es uno de los principales casos de uso de las variables de 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:
Su guión no contieneel asunto. En tal casoel intérprete depende del shell desde el que se invoca el script. En general, no es una buena idea omitir shebang. Agregué
#!/bin/sh
por dos razones:- para mostrar cómo se ve un tinglado;
- para indicar que las variables de shell son un concepto bastante básico que funciona en
sh
, por lo que puede esperar que el mismo código funcione en cualquier shell que intente ser compatible con POSIX.
Después
&&
no es necesario\
continuar en la siguiente línea..- Citar es importante.