1 votos

Ejecutando FFmpeg en Automator/AppleScript

He escrito una Apple script previamente para automatizar una tarea que hago en mi trabajo muchas veces.

Con la actualización de Apple a Catalina perderé el uso de Quicktime 7 (que forma parte de mi flujo de trabajo de secuenciación de imágenes) Quiero aprovechar la oportunidad para reescribir mi script.

Estoy dando un paso a la vez y el primero es correr la FFmpeg.

He escrito un script:

ffmpeg -r 25 -f image2 -pattern_type glob -i '*.JPG' -codec:v prores_ks -profile:v 0 imagemagick_TL_Test_01.mov

Esto funciona en la Terminal si navego a la carpeta y la ejecuto. Muy bien.

Ahora quiero encontrar una manera de hacer que la acción sea arrastrable.

He intentado adaptar mi antiguo código para incluirlo en la sección correspondiente para ejecutar el ffpmeg en la carpeta eliminada, pero he encontrado un error tras otro. Lo ideal sería renombrar el archivo de salida para tener el nombre de la carpeta de los abuelos y guardarlo en la carpeta principal.

on open dd

    repeat with d in dd
        set d to d's contents
        tell application "Finder"
            set seq1 to (d's file 1 as alias)
            set dparent to d's container as alias
            set mov to "" & dparent & (dparent's name) & ".mov"
        end tell
        do shell script "d=" & d's POSIX path's quoted form & "
    /opt/local/bin/ffmpeg -r 25 -f image2 -i \"" & seq1 & "\" '*.JPG' -codec:v prores_ks -profile:v 0 \"" & dparent & ".mov\" && exit
    "
    end repeat
end open

Esto me da el error:

[image2 @ 0x7ff9cd000000] Could find no file with path '***:Users:***:Desktop:imagemagick_TL_Test:01:_DAN7741.JPG' and index in the range 0-4
***:Users:***:Desktop:imagemagick_TL_Test:01:_DAN7741.JPG: No such file or directory

¡Cualquier consejo sería muy apreciado! ¡Gracias!

1voto

Kerry Puntos 100

Una consideración importante cuando se programa es elaborar un plan para depurar su código. Así es como yo habría codificado el código para la depuración.

Es difícil depurar un controlador abierto. Añado un manejador en ejecución donde puedo manipular la entrada de una rutina común que se llama en ejecución y en abierto. Para tu información: Corregí cómo se procesaba la entrada de en abierto.

(* 
   AskDifferent question:
     https://apple.stackexchange.com/questions/366992/running-ffmpeg-in-automator-applescript
 Use log statements.

 It is easier to diagnose problems with debug information. I suggest adding log statements to your script to see what is going on.  Here is an example.

For testing, run in the Script Editor.
    1) Click on the Event Log tab to see the output from the log statement
    2) Click on Run

 *)
on run
    --  debug lines
    set desktopPath to (path to desktop) as string

    -- here is a log statment.
    log "desktopPath = " & desktopPath

    -- Be sure to select a file on your DESKTOP.
    set see to alias (desktopPath & "auto-show-2015.mp4")

    -- Simulate dropped items list.
    set dropped_items to {see}

    common(dropped_items)

end run

-- Gets invoked here when something is dropped on this AppleScript icon

on open dropped_items

    common(dropped_items)

end open

on common(dd)

    repeat with d in dd
        set d to d's contents
        log d
        tell application "Finder"
            --set seq1 to (d's file 1 as alias)  -- dropped items come in as an array of aliased items. 
            set seq1 to d
            set dparent to d's container as alias
            set mov to "" & dparent & (dparent's name) & ".mov"
            log "mov is " & mov
        end tell

        set toUnix to "d=" & d's POSIX path's quoted form & " /opt/local/bin/ffmpeg -r 25 -f image2 -i \"" & seq1 & "\" '*.JPG' -codec:v prores_ks -profile:v 0 \"" & dparent & ".mov\" && exit
    "
        log "toUnix is " & toUnix
        set fromUnix to do shell script toUnix
        log "fromUnix is " & fromUnix
    end repeat
end common

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X