7 votos

¿Se puede utilizar Applescript para automatizar una sesión de grabación de pantalla en OS X?

Necesito realizar las siguientes tareas desde un script:

  1. Iniciar una grabación de pantalla (con audio del sistema).
  2. Después de un retardo establecido, detenga la grabación.
  3. Guardar en un archivo.
  4. Cierra la grabación.

He intentado algunos enfoques diferentes aquí y me encontré con obstáculos. Una cosa que he intentado por ejemplo fue un QuickTime script se encuentra aquí .

tell application "QuickTime Player"
    set newScreenRecording to new screen recording
    tell newScreenRecording
        start
        delay 10
        stop
    end tell
    set newDoc to last item of (documents whose name contains "Untitled")
    set f to "" & (path to desktop) & "quicktimeFile"
    export newDoc in f using settings preset "Quicktime Movie"
end tell

Este script no da error, pero tampoco guarda nada.

En el pasado he utilizado iShowU HD pero me he encontrado con importantes problemas de rendimiento que me han hecho volver a la mesa de dibujo.

Estoy dispuesto a pagar por una aplicación de terceros siempre que cumpla mis requisitos, así que no dudes en sugerir cualquier cosa que pueda hacer el trabajo.

Corriendo OS X 10.8 Mountain Lion.

8voto

Ged Byrne Puntos 481

Prueba este script:

tell application "QuickTime Player"
    set newScreenRecording to new screen recording
    tell newScreenRecording
        start
        delay 3
        stop
    end tell
    tell last item of documents
        close
    end tell
end tell

Hará una nueva grabación durante 3 segundos (edita el delay 3 para cambiar la longitud), que se guarda automáticamente en el Películas de su directorio de inicio, y luego cierra la ventana de grabación.

Si desea exportar automáticamente a un formato diferente, puede hacerlo añadiendo la línea export in ("" & (path to desktop) & "quicktimeFile.m4v") using settings preset "480p" antes de la close línea. Los preajustes que se pueden elegir están definidos en el Archivo > Exportar diálogo:

export options

Comprueba el cuadro de diálogo actual para más detalles sobre los preajustes (ten en cuenta que son "hasta" la resolución listada - se ajustará a los píxeles horizontales disponibles, así que "480p" te da 640x400 para una grabación 16:10). Que yo sepa, no se pueden hacer preajustes personalizados.

Si quieres capturar los sonidos de tu sistema, y no el audio del micrófono/línea, consulta esta pregunta: ¿Puedo obtener el sonido del sistema junto con la grabación de pantalla de QuickTime Player?

Para los curiosos, hay un par de notas sobre por qué el script original no funciona y las peculiaridades de AppleScript de QuickTime Player:

  • El set newDoc […] intenta coger el documento más reciente con la cadena "Untitled" para tener en cuenta el newScreenRecording referencia que se vuelve inválida una vez que la grabación se detiene (lo que probablemente es una mala decisión de diseño, pero bueno). Sin embargo, QuickTime Player en Lion (y posiblemente en Snow Leopard) guarda automáticamente las grabaciones de pantalla como "Screen Recording", "Screen Recording 2", etc., por lo que no encontraba ningún documento. El hecho de que sólo se guarde el documento más reciente resuelve esto, y lo pone a prueba en el futuro hasta cierto punto.

  • El export hace referencia a un preajuste que ya no existe (o ha sido renombrado). Desgraciadamente, ni QuickTime ni AppleScript dan ningún error al respecto, simplemente fallan de forma silenciosa (más mal diseño).

  • El diccionario de AppleScript para QuickTime Player incluye un save pero no pude hacerlo funcionar; sospecho que se eliminó la funcionalidad, pero la entrada del diccionario no se eliminó. Notarás que no hay funcionalidad de guardar en la GUI, sólo exportar (y autoguardar). Así que si quieres cambiar la ubicación de guardado sin exportar un nuevo archivo, tendrás que obtener la ubicación del archivo y luego moverlo a través del Finder.

0 votos

Vale, he podido conseguir que la línea de exportación funcione gracias a tu idea. Ahora tengo otro problema: Parece que Applescript no espera el export línea para completar antes de pasar a la siguiente línea. Si cierro la ventana de grabación antes de que termine la exportación, ésta falla. Así que supongo que de alguna manera tengo que averiguar cuánto tiempo tomará una exportación, retrasar esa cantidad, y luego cerrar la ventana.

0 votos

Eso es raro, no es el comportamiento que tengo. Cuando ejecuto el script (con el export después de tell last item of documents y antes close ), se me abre una ventana de exportación aparte, se ejecuta la exportación y luego se cierra la ventana de grabación. Pero no interrumpe el proceso de exportación. Esto es usando Quicktime X en Lion.

0 votos

Puede ser porque estoy en 10.8 entonces (debería haber puesto eso en la descripción, mi error). Podría codificar un retraso, pero eso me parece sucio. Algunos vídeos podrían tardar mucho más en exportarse que otros, así que estaría jugando a las adivinanzas.

2voto

Neeraj Puntos 111

Hace poco escribí un script que no depende en absoluto de la versión de QuickTime.

Sólo simula las acciones reales del usuario para guardar/exportar la película. Toma como entrada el directorio al que quieres que se exporte el archivo de la película y el número de segundos que quieres que dure la grabación.

Consulta el script (y la entrada de blog asociada) en http://www.neerajkumar.net/blog/2013/02/16/script-a-pantalla-record en-mac-osx-y-guardar-en-disco/

0 votos

Tiene buena pinta, lo probaré. Terminé volviendo a iShowU HD porque me permite recortar a un área específica de la pantalla para mi grabación. ¿Sabes si QuickTime permite esto?

0 votos

Sí, quicktime te permite hacer eso. Hay un método de exportación de películas en el que puedes seleccionar el área que quieres exportar.

0 votos

El sitio ya no está disponible.

0voto

Sin usar applescript pero aún así útil; encontré una solución que funciona muy bien. Puedes grabar con ffmpeg usando un dispositivo de entrada llamado avfoundation .

Detalles Más opciones Opciones de ffmpeg

Este es un ejemplo de comando: ffmpeg -f avfoundation -pix_fmt yuyv422 -i "1:1" -t 10 -vf crop=1280:720:1:65 -r 30 output.mkv

  • Puede que te pidan o no que especifiques -pix_fmt cuando no se incluye esta opción; podría valer la pena probar otros formatos para ver si se obtiene un mejor rendimiento.
  • Como se explica en el enlace de detalles, -i selecciona tanto la entrada de vídeo como la de audio. Si quieres capturar el audio que se reproduce en tu ordenador, necesitarás algo como Captura de audio iShowU . Para que funcione, tendrás que pulsar opción+F11, seleccionar iShowU Audio Capture como dispositivo de entrada y como dispositivo de salida. Te darás cuenta de que una vez que lo seleccionas como dispositivo de salida, ya no puedes escuchar el audio a través de tus altavoces o auriculares. Una solución rápida es abrir la Configuración de Audio MIDI, crear un dispositivo de salida múltiple y añadir iShowU Audio Capture y su dispositivo de salida normal. Seleccione este nuevo dispositivo de salida múltiple en sus salidas de sonido y ya está, ahora puede escuchar el audio y tenerlo capturado. Desgraciadamente no puedes controlar los niveles de audio ahora... si alguien conoce una solución para esto por favor hágamelo saber.
  • -t es el tiempo en segundos para grabar.
  • -vf es muy útil para recortar y compensar. La configuración actual se recorta a 1280 de ancho y 720 de alto, con un desplazamiento de 1 píxel a la izquierda y 65 píxeles desde la parte superior. Tendrás que utilizar una herramienta de terceros para obtener las medidas exactas de píxeles de tu pantalla.
  • -r es la velocidad de fotogramas

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