Есть ли способ приостановить запись звука и возобновить с QuickTime и AppleScript? - PullRequest
0 голосов
/ 24 января 2020

Я пытался сделать это в AppleScript:

tell application "QuickTime Player"
    activate
    set doku to new audio recording
    start doku
    delay 4
    pause doku
end tell

Во время запуска проигрывателя QuickTime и начала записи он не останавливается, есть ли способ сделать паузу → воспроизведение → пауза и c с помощью AppleScript и QuickTime-плеер для записи звука?

1 Ответ

1 голос
/ 05 февраля 2020

Хорошо, я немного покопался в этом и придумал следующий скрипт. Если открыто окно аудиозаписи, этот сценарий начнет или возобновит запись, если запись приостановлена, и приостановит запись, если это не так. При этом используется python для имитации нажатий клавиши выбора (удерживание клавиши выбора превращает кнопку «стоп» в кнопку «пауза»), , поэтому вам может потребоваться установить Objective- python Objective- C пакеты. См. этот ответ StackOverflow для получения подробной информации: Я только что обнаружил, что PyObj c 2.5 установлен в OSX по умолчанию, и этого должно быть более чем достаточно для этой цели.

tell application "QuickTime Player" to activate

tell application "System Events"
    tell process "QuickTime Player"
        tell window "Audio Recording"
            set actionButton to first button whose description is "stop recording" or description is "start recording" or description is "resume recording"

            if description of actionButton is in {"start recording", "resume recording"} then
                -- start/resume audio recording
                click actionButton
            else if description of actionButton is "stop recording" then
                -- pause audio recording
                my controlKeyEvent(true)
                click actionButton
                my controlKeyEvent(false)
            end if
        end tell
    end tell
end tell

on controlKeyEvent(isKeyDown)
    if isKeyDown then
        set boolVal to "True"
    else
        set boolVal to "False"
    end if
    do shell script "

/usr/bin/python <<END

from Quartz.CoreGraphics import CGEventCreateKeyboardEvent
from Quartz.CoreGraphics import CGEventCreate
from Quartz.CoreGraphics import CGEventPost
from Quartz.CoreGraphics import kCGHIDEventTap
import time

def keyEvent(keyCode, isKeyDown):
    theEvent = CGEventCreateKeyboardEvent(None, keyCode, isKeyDown)
    CGEventPost(kCGHIDEventTap, theEvent)

keyEvent(58," & boolVal & ");

END"
end controlKeyEvent

В данный момент Quicktime Player должен находиться на переднем плане, чтобы перехватить событие нажатия клавиши, иначе приостановка не будет работать. Я думаю, что могу настроить это так, чтобы событие нажатия клавиш направлялось прямо в приложение Player, но я должен разобраться в этом. Кроме того, я никак не кодировал, чтобы остановить запись (хотя это было бы достаточно просто: просто нажмите кнопку без вызова controlKeyEvent). Я не был уверен, как выглядит ваш рабочий процесс, и я не хотел нарушать его, выдавая неудобное предупреждение.

...