Запись аудиоклипов по таймеру?

Я работаю над проектом, который требует от меня записи большого количества 20-секундных аудиоклипов (насколько мне известно, формат файла не имеет значения). Я хотел бы иметь возможность делать это, не нажимая кнопку, чтобы останавливать каждую запись, то есть я надеюсь, что есть способ использовать таймер для автоматической остановки записи каждый раз, когда истекает 20 секунд. Могу ли я управлять этим в QuickTime? Если нет, я открыт для любых предложений сообщества. Заранее спасибо.

Вы пытались использовать AppleScript для этого?
Я должен был упомянуть, что я новый пользователь Mac ... еще не вникал в AppleScript. Простое ли это решение в данном случае?
Что ж, «простой» - это относительный термин, и, будучи новичком в OS X, это может быть сложно, однако, если вы хотите автоматизировать процесс, это можно сделать. Я отправлю и пример в качестве ответа.

Ответы (1)

Это пример сценария, чтобы попытаться соответствовать вашим потребностям/желаниям. Как закодировано, он будет делать 3 пятисекундные записи на вашем рабочем столе с именем «Recording_n.m4a», когда «n» в имени будет автоматически увеличиваться от 1 до 3, например, «Recording_1.m4a», «Recording_2.m4a» и т. д. до любого сколько установлено.

Откройте редактор сценариев , скопируйте и вставьте приведенный ниже код и нажмите кнопку «Скомпилировать».

set howMany to 3 -- The number of recordings to make.

set recordingNumber to 1 -- 'recordingNumber' is used to increment the recording number in the filename when exporting.

tell application "QuickTime Player"
    activate
    close (every document whose name contains "Untitled") saving no -- I set this just to have no other Untitled windows open when starting the recordings, especially if having broken out of the repeat loop.
    repeat howMany times
        set savePath to (the path to the desktop folder as text) & "Recording_" & recordingNumber & ".m4a"
        set recording to new audio recording
        start recording
        delay 6 -- Add an additional second to the wanted value, e.g. for 20 second recording set delay to 21.
        stop recording
        export document "Untitled" in file savePath using settings preset "Audio Only"
        delay 2 -- Set appropraite delay to allow export to complete.
        close (every document whose name contains "Untitled") saving no
        set recordingNumber to recordingNumber + 1 -- Increments recording number by one.
        -- Close "Export Progress" window.
        tell application "System Events" to click menu item "Hide Export Progress" of menu "Window" of menu bar 1 of process "QuickTime Player"
        display dialog "Click OK or press Enter to start next recording."
    end repeat
end tell

Запустите скрипт как есть раз или два, чтобы вы могли видеть, что он делает, а затем вы можете изменить значение howMany на количество записей, которые вы хотите/нужно сделать, измените значение первой задержки с «6» на « 21' для 20-секундной записи и значение второй задержки от '2' до, например, '5'. Значение второй задержки вам нужно будет определить заранее, установив значение howMany на 1 или 2 и значение первой задержки от «6» до «21», чтобы у вас была 20-секундная запись, чтобы увидеть, как много секунд требуется для экспорта. Это значение (второй задержки) может быть выше, чем это действительно необходимо, скажем, если вы хотите сделать небольшой перерыв между записями, чтобы отдышаться и собраться с мыслями для следующей записи, хотя есть еще один элемент управления в виде диалогового окна сообщения между каждой записью.

Обратите внимание на строку display dialog "Click OK or press Enter to start next recording.", она служит механизмом управления для запуска следующей записи или выхода из цикла повторения . Существует множество различных способов кодирования и выполнения такой задачи, и это просто предназначено для того, чтобы дать вам начальную структуру, на которую можно опираться, если вы хотите использовать AppleScript для выполнения автоматизированной задачи, такой как вы упомянули.

В этот сценарий не записывается проверка ошибок, что означает, что если сценарий будет запущен во второй раз, он перезапишет, например, «Recording_1.m4a», «Recording_2.m4a» и т. д. Поэтому, если вам нужно выйти из цикла повторения , нажав «Отмена» в диалоговом окне сообщения или «Стоп» в редакторе сценариев, убедитесь, что вы установили recordingNumberсоответствующее число, которое будет номером, использованным для последнего экспортированного файла + 1. Кроме того, первая close (every document whose name contains "Untitled") saving noстрока закроет любой файл открыт в QuickTime Player, имя которого содержит «Без названия», без его сохранения или запроса на сохранение. Его можно закомментировать, поместив --перед ним, если хотите, хотя, если вы вышли из повторенияцикл, который вам придется очистить вручную перед перезапуском, поэтому вы можете оставить его как есть. Просто при использовании этого сценария используйте только QuickTime Player для текущей задачи, если вы не понимаете, почему я закодировал его таким образом.

Вау, спасибо. Это помогает. Я также впечатлен тем, насколько удобочитаемым является AppleScript. Мне просто интересно... как бы указать определенную папку на рабочем столе (например, "Записи") для сохраненных записей?
@hrbellemare, это можно добавить по-разному, вот один из способов. В set savePath toстроке... добавьте & "Recordings:"перед, & "Recording_"чтобы строка читалась как set savePath to (the path to the desktop folder as text) & "Recordings:" & "Recording_" & recordingNumber & ".m4a".
Спасибо. Одна вещь, которую я хотел бы добавить для всех, кто читает, заключается в том, что папка должна существовать, чтобы это работало - она ​​не будет создана сценарием.
@ Гарольд Беллемаре, добро пожаловать! Как я уже сказал, « в этот скрипт не записывается проверка ошибок как есть », и хотя я упомянул об этом в контексте перезаписи файлов, которые он создает, это также применимо в целом. Помните, что сценарий, который я предоставил, был « примером сценария », а также сказал: « и это просто предназначено для того, чтобы дать вам начальную основу для построения », поэтому правильная обработка ошибок и дополнительные функциональные возможности, безусловно, могут быть встроены в сценарий по выбору. :)