AppleScript + Quicktime:启动和停止录制动画并将其导出到磁盘

时间:2013-06-26 19:27:46

标签: applescript quicktime

尝试开始屏幕录制,等待几秒钟,停止录制并将保存的录制内容导出到磁盘。

版本

  • AppleScript 2.2.4
  • QuickTime:10.2

的AppleScript

set filePath to "" & (path to desktop)

tell application "QuickTime Player"
    set newMovieRecording to new movie recording
    tell newMovieRecording
        start
        delay 2 --(seconds)
        stop
        export newMovieRecording in (filePath & "movie") using settings preset "25 fps"
    end tell
end tell

stop和start命令正常工作但export命令失败并出现此错误:

movie_record.scpt:215:294: execution error: QuickTime Player got an error: Can’t get document "Movie Recording". (-1728)

2 个答案:

答案 0 :(得分:4)

请注意,在发出停止命令后,文档名称会发生​​变化...

set filePath to (path to desktop as text) & "movie.mov"

tell application "QuickTime Player"
    set newMovieRecording to new movie recording
    set windowID to id of first window whose name = "Movie Recording"

    tell newMovieRecording
        start
        delay 2 --(seconds)
        stop
    end tell

    set newMovieRecordingDoc to first document whose name = (get name of first window whose id = windowID)
    tell newMovieRecordingDoc to export in filePath using settings preset "iPod"
    --tell newMovieRecordingDoc to export in filePath using settings preset "25 fps"
end tell

答案 1 :(得分:2)

找到解决方案。请注意,从调用脚本到录制实际开始之间有一点延迟(约2秒)。

(*********************************************
Record a Single `QuickTime` Movie
Args:
    1. name: The name of the movie.
    2. seconds: The length of the movie you want to record in seconds.
Usage:
    > osascript movie_record.scpt 'name.mov' 5
    > osascript movie_record.scpt <file_name> <seconds>
**********************************************)
on run argv
    set movieName to item 1 of argv
    set delaySeconds to item 2 of argv
    set filePath to (path to desktop as text) & movieName
    set f to a reference to file filePath

    tell application "QuickTime Player"
        set newMovieRecording to new movie recording

        tell newMovieRecording
            start
            delay delaySeconds
            pause
            save newMovieRecording in f
            stop
            close newMovieRecording
        end tell
    end tell
end run