Después de investigar un poco, resulta que el -i
opción para ffmpeg
toma un solo nombre de archivo y al convertir un número de archivos de imagen a un archivo .mov tiene que ser en forma de, por ejemplo %05d.png
. Obviamente, el relleno del numeración secuencial puede ser un número diferente de dígitos y el extensión del tipo de imagen también puede variar.
Entonces, para ello, lo siguiente ejemplo bash
código funciona para mí:
Método 1:
A continuación, se supone que el archivos numerados secuencialmente son cuatro dígitos a partir de 0001
, añada todo archivos tienen el mismo extensión .
Procesará todos los archivos con numeración secuencial de cuatro dígitos en el mismo directorio mientras se sobrescribe el output.mov
archivo si ya existe.
Cambiar Servicio que recibe seleccionado files or folders
en Finder
a:
Servicio que recibe seleccionado folders
en Finder
Retire el Obtenga los artículos seleccionados del buscador acción ,
Set Pase de entrada: a as arguments
en el Ejecutar Shell script acción .
Sustituir el valor por defecto código con lo siguiente ejemplo bash
código :
cd "$1" || exit
ext="$(file="$(ls 0001.*)"; echo "${file##*.}")"
/opt/local/bin/ffmpeg -y -i %04d.${ext} -r 24 -codec prores output.mov
El ejemplo bash
código arriba se supone que usted está seleccionando sólo una carpeta en Buscador . Para múltiples carpeta selecciones, utilice lo siguiente ejemplo bash
código :
for f in "$@"; do
cd "$f" || exit
ext="$(file="$(ls 0001.*)"; echo "${file##*.}")"
/opt/local/bin/ffmpeg -y -i %04d.${ext} -r 24 -codec prores output.mov
done
<strong>Nota: </strong>El <em>ejemplo </em><code>bash</code> <em>código </em>contiene un número limitado de <em>tratamiento de errores </em>. Es responsabilidad del usuario añadir cualquier <em>tratamiento de errores </em>como sea apropiado, necesario o deseado.
Método 2:
Servicio que recibe seleccionado files or folders
en Finder
Retire el Obtenga los artículos seleccionados del buscador acción ,
Set Pase de entrada: a as arguments
en el Ejecutar Shell script acción .
Suponiendo que el archivos de imagen en Buscador son todos del mismo tipo, en el mismo carpeta y el e.g. output.mov
archivo se creará en el mismo carpeta de los seleccionados archivos de imagen ...
Entonces, para ello, lo siguiente ejemplo bash
código funciona para mí:
o="output"
e="mov"
d="$(dirname "$1")"
cd "$d" || exit
if [[ ! -e "${o}.${e}" ]]; then
o="${o}.${e}"
else
n=2
for f in ${o} *.${e}; do
if [[ "${o} ${n}.${e}" == "$f" ]]; then
n="$(( n + 1 ))"
fi
done
o="${o} ${n}.${e}"
fi
foo="$(date +%s)"
mkdir "/tmp/${foo}" || exit
cd "/tmp/${foo}" || exit
i=1
for f in "$@"; do
ln -s "$f" "$(printf "%05d" $i).${f##*.}"
(( i++ ))
done
/opt/local/bin/ffmpeg -i %05d."${f##*.}" -r 24 -codec prores "${d}/${o}"
rm -r "/tmp/${foo}"
<strong>Nota: </strong>El <em>ejemplo </em><code>bash</code> <em>código </em>contiene un número limitado de <em>tratamiento de errores </em>. Es responsabilidad del usuario añadir cualquier <em>tratamiento de errores </em>como sea apropiado, necesario o deseado.
Método 2 Notas:
- Si el p. ej.
output.mov
archivo ya existe, un incremento de nombre de archivo a partir, por ejemplo, de output 2.mov
y seguir incrementando según sea necesario para que el Automatizador Servicio no falla porque el archivo de salida ya existe. Esto se gestiona principalmente en el if...else...then
bloque Sin embargo, las líneas de código anteriores también forman parte de ella.
- Para lograr el objetivo, se ha creado una directorio se crea en
/tmp
, llamado así por el número de segundos transcurridos desde el Época Unix Por ejemplo /tmp/1574058046
y es manejado por foo="$(date +%s)"
y mkdir "/tmp/${foo}"
.
- Dentro de este temporal directorio a enlace simbólico numerado secuencialmente se crea para cada uno de los archivos de imagen y es manejado principalmente por el
for f in "$@"; do ... done
bucle .
ffmpeg
entonces crea el output.mov
archivo .
- El temporal directorio Por ejemplo
/tmp/1574058046
es eliminado.
- Tenga en cuenta que el archivos de imagen deben ser todos del mismo tipo por ejecución, sin embargo, cada ejecución puede utilizar un soporte diferente tipo de archivo de imagen mientras todos sean iguales tipo por carrera. Tal y como está codificado actualmente, no se pueden mezclar diferentes tipos de archivos de imagen por cada ejecución del servicio .
Nota: El Obtener los elementos del buscador especificados acción es sólo para fines de prueba y se borraría antes de guardar el Automatizador Servicio .