Estoy usando Automator para ejecutar un script de shell (transcodificación ffmpeg a h264) como un 'Servicio', de modo que puedo hacer clic derecho en el archivo .mov de alta resolución y seleccionar el servicio. Funciona bien, pero como es ffmpeg, sería bueno ver el resultado en una ventana de Terminal. ¿Hay alguna manera de ver la salida en tiempo real?
No debería hacer una diferencia, pero aquí está el script por si acaso:
for f in "$@"
do
/usr/local/bin/ffmpeg -i "$f" -c:v libx264 -vf yadif -pix_fmt yuv420p -crf 21 -preset slow -movflags faststart -c:a copy ${f%.*}_h264_yadif.mov
done
Este AppleScript abrirá una ventana de Terminal con el comando que especificó:
en ejecución {entrada, parámetros} Dile a la aplicación "Terminal" activar establecer cadena de archivos en "" repetir con file_ en la entrada establezca filesString en filesString & " " & forma citada de (ruta POSIX de file_) terminar repetir hacer script "for f in" & filesString & "; hacer /usr/local/bin/ffmpeg -i \"$f\" -c:v libx264 -vf yadif -pix_fmt yuv420p -crf 21 -preset lento -movflags faststart -c:a copy ${f%.*}_h264_yadif. mover hecho" final decir entrada de retorno carrera final
Cree una acción "Ejecutar AppleScript" en Automator y péguela allí.
Una solución agradable y limpia es mostrar el mensaje a través del Centro de notificaciones. Simplemente ejecute el siguiente comando de terminal en su secuencia de comandos.
osascript -e 'display notification "All files converted" with title "ffmpeg converter"'
El comando 'osascript' ejecuta cualquier AppleScript desde la terminal, 'mostrar notificación' muestra una notificación agradable.
También puede usar 'mostrar alerta'. No tiene limitación de longitud de mensaje y es fácil agregarle un OKbotón.
osascript -e 'set alertResult to display alert "Bad news :( Error converting your video file." buttons {"OK"} as warning'
Aquí está la referencia de los comandos de Apple Script. Busque 'mostrar notificación' y 'mostrar alerta' para obtener más información.
Aquí hay una solución simple que funcionó, que muestra el resultado del comando una vez que finaliza:
Por ejemplo, con el test.py
script de Python, todo lo que estoy haciendo es imprimir los argumentos pasados ("Ejecutando un script con..."), así que cuando lo ejecuto, después de terminar, muestra:
usuario1148106