Usando el cli automático y el freno de mano para convertir videos automáticamente

1

Estoy tratando de automatizar el proceso de conversión de video usando la versión CLI de Automator y Handbrake. Estoy tratando de implementar la funcionalidad de que cada vez que un video se descarga en mi carpeta de Dropbox en mi PC, se convierte y se coloca en otra carpeta. Actualmente lo estoy probando con una carpeta de prueba (no en Dropbox, así que solo estoy copiando archivos para probar). Cuando se pone un solo archivo o varios archivos en la carpeta simultáneamente, funciona. Pero cuando pongo un archivo (o muchos) y el script se está ejecutando, es decir, la conversión de los videos y pongo otro archivo en la carpeta, entonces ese nuevo archivo nunca se llama para que el nuevo video no se convierta.

Entonces, ¿cómo puedo lograr esta funcionalidad que cuando el script se está ejecutando y se agrega un nuevo archivo, se inicia otra instancia del script para el nuevo archivo.

Y también el nuevo archivo se guarda con solo la primera palabra en el nombre si el nombre tiene muchas palabras (es decir, se rompe en el espacio)

Aquí está la captura de pantalla de mi configuración de automatizador:

Imagen del automatizador

Gracias de antemano por tu ayuda.

Aquí está mi script de ejecutar script de shell como usted preguntó @: Tony Williams

for f in "$@"
do
    Applications/HandBrakeCLI -i "$f" -t 1 --angle 1 -c 1 -o "/Users/abc/Desktop/TestVidDest/$(basename $f)"  -f mp4  -4  -O  --decomb="fast" -w 1280 -l 720 --modulus 16 -e x264 -b 3800 -2  -T  --cfr -a 1 -E faac -6 dpl2 -R 48 -B 128 -D 0 --gain 0 --audio-fallback ffac3 --x264-preset=slow  --x264-profile=high  --x264-tune="film"  --h264-level="4.0"  --verbose=1
done
Muhammad Tahir
fuente
Es casi imposible leer ese paso de guión de shell. ¿Podría pegar solo el texto en su pregunta?
Tony Williams
Lo más probable es que el problema sea que Automator no se active con archivos nuevos, no con el script de shell. Para probar eso, ¿puede reemplazar el contenido del forbucle con sleep 30 && mv "$f" /tmpy ver si se copian todos los archivos o solo los que se colocan primero?
nohillside
1
@patrix gracias por tu respuesta! El mismo problema aquí también. funciona si pongo archivos y luego espero a que se muevan y luego pon nuevos archivos. pero no funciona cuando pongo algunos archivos y mientras se mueven (es decir, el script se está ejecutando) pongo algunos archivos más y luego los archivos nuevos no se mueven.
Muhammad Tahir
Cuando se utilizan acciones de carpeta, for i in "$@" ...debería quedar obsoleto ...
CousinCocaine

Respuestas:

3

Proceso en segundo plano

Idealmente, su secuencia de comandos debe completarse lo más rápido posible. La forma más fácil es separar el procesamiento de las películas en procesos en segundo plano. Puede hacer esto agregando un espacio y un ampersand & al final de su HandBrakeCLIlínea.

Mover antes de procesar

Sin embargo, esto no resuelve el problema de los nuevos archivos que se ignoran. De hecho, sus archivos ahora podrían procesarse dos veces si el procesamiento no se completa antes de que aparezca el siguiente archivo nuevo.

Su secuencia de comandos debe mover cada archivo nuevo a otra carpeta no supervisada antes de que comience el procesamiento. Considere agregar un mvcomando antes de su HandBrakeCLIlínea. Alternativamente, puede hacer que Automator realice el movimiento.

Lo ideal es que la carpeta de destino esté en la misma unidad, por lo que se completa rápidamente y no retrasa el script.

Graham Miln
fuente
0

Recomiendo encarecidamente el script de transcodificación de video de Don Melton (ex jefe de Apple Safari) para convertir archivos de video. El tema y el guión se tratan en profundidad en el podcast Vector de iMore, episodio 22 .

Para automatizar, el script podría estar envuelto en una Acción de carpeta, o ver el comentario de Don's Gist (24 de junio) sobre cómo realiza las transcodificaciones por lotes.

Seb Nash
fuente