Ich kann nur den Teil des Bildschirms auswählen, der manuell aufgenommen werden soll. Ich möchte, dass sie alle genau gleich sind, damit, wenn die Videos nacheinander abgespielt werden, alles aneinandergereiht ist.
Ich verwende Quicktime und möchte möglichst einfach dabei bleiben.
Hier im Jahr 2020 - macOS Catalina und höher ermöglicht das integrierte /usr/sbin/screencapture
Tool Optionen zum Festlegen des Erfassungsbereichs. Und wenn Sie es grafisch verwenden, merkt es sich die letzte Auswahl. Wenn Sie sie also nicht ändern, können Sie die App neu starten und dieselben Einstellungen ohne die folgenden Details erhalten.
-R<x,y,w,h> capture screen rect
-v capture video recording of the screen
Zum Beispiel:
screencapture -R10,10,500,500 -v cap.mov
Es gibt eine Menge anderer guter Sachen in der Manpage:
man screencapture
UPDATE: Antwort von @Andre LaBranche ist besser, lies das
Speichern Sie dieses Skript unter caperture.swift
:
#!/usr/bin/env xcrun swift
import Foundation
// Start QuickTime Player using AppleScript
func startQT() {
var scriptToPerform: NSAppleScript?
let asCommand = "tell application \"QuickTime Player\" \n" +
" activate \n" +
" new screen recording \n" +
" delay 1 \n" +
" tell application \"System Events\" to key code 49 \n" +
" delay 1\n" +
" end tell"
scriptToPerform = NSAppleScript(source:asCommand)
var possibleError: NSDictionary?
if let script = scriptToPerform {
script.executeAndReturnError(&possibleError)
if let error = possibleError {
print("ERROR: \(error)")
}
}
}
// Click and drag the mouse as defined by the supplied commandline arguments
func dragMouse() {
let args = UserDefaults.standard
let x = CGFloat(args.integer(forKey: "x"))
let y = CGFloat(args.integer(forKey: "y"))
let w = CGFloat(args.integer(forKey: "w"))
let h = CGFloat(args.integer(forKey: "h"))
let p0 = NSPointToCGPoint(NSMakePoint(x, y))
let p1 = NSPointToCGPoint(NSMakePoint(x + w, y + h))
let mouseDown = CGEvent(mouseEventSource: nil, mouseType: CGEventType.leftMouseDown, mouseCursorPosition: p0, mouseButton: CGMouseButton.left)!
let mouseDrag = CGEvent(mouseEventSource: nil, mouseType: CGEventType.leftMouseDragged, mouseCursorPosition: p1, mouseButton: CGMouseButton.left)!
let mouseUp = CGEvent(mouseEventSource: nil, mouseType: CGEventType.leftMouseUp, mouseCursorPosition: p1, mouseButton: CGMouseButton.left)!
let kDelayUSec : useconds_t = 500_000
mouseDown.post(tap: CGEventTapLocation.cghidEventTap)
usleep(kDelayUSec)
mouseDrag.post(tap: CGEventTapLocation.cghidEventTap)
usleep(kDelayUSec)
mouseUp.post(tap: CGEventTapLocation.cghidEventTap)
}
if (CommandLine.arguments.count != 9) {
print("usage:")
print(" ./caperture.swift -x 100 -y 100 -w 400 -h 300")
} else {
startQT()
dragMouse()
}
Sobald die caperture.swift
Datei gespeichert ist. Sie müssen sicherstellen, dass es ausgeführt werden kann.
Führen Sie in Terminal.app den Befehl aus:
chmod +x caperture.swift
Dann führst du es aus mit:
./caperture.swift -x 100 -y 100 -w 400 -h 300
Dadurch wird der QuickTime Player gestartet, der bereit ist, die Aufnahme wie folgt zu starten:
Es basiert auf AppleScript und Swift, daher muss auch xcode installiert sein.
Das war wirklich nützlich für mich, also habe ich es auf Github als Caperture hochgeladen , falls jemand es verbessern möchte.
p1 = CGPointMake(x + dx, y + dy)
sollte sein, let p1 = CGPointMake(dx, dy)
es besteht keine Notwendigkeit, die Ganzzahlen hinzuzufügen, und dies wirft die Grenzen auf falsch, was im Applescript platziert ist. Wenn ich beispielsweise Grenzen verwende, {364, 206, 1038, 726}
erhalte ich ein gezogenes Fenster{364, 206, 1402, 932}
Es gibt eine App namens Screeny , die dies und viele andere Dinge tut. 14,99 $ und kann im App Store erworben werden
Ich mag die Antwort von @mat-burns sehr.
Aber da wir das Applescript sowieso von der Befehlszeile aus ausführen würden, um den Swift-Code auszuführen, wollte ich alles aus einer einzigen Datei machen.
Applescript zum Swift-Code hinzufügen:
#!/usr/bin/env xcrun swift
import Foundation
let kDelayUSec : useconds_t = 500_000
func DragMouse(p0: CGPoint, p1: CGPoint) {
let mouseDown = CGEventCreateMouseEvent(nil, CGEventType(kCGEventLeftMouseDown), p0, CGMouseButton(kCGMouseButtonLeft)).takeUnretainedValue()
let mouseDrag = CGEventCreateMouseEvent(nil, CGEventType(kCGEventLeftMouseDragged), p1, CGMouseButton(kCGMouseButtonLeft)).takeUnretainedValue()
let mouseUp = CGEventCreateMouseEvent(nil, CGEventType(kCGEventLeftMouseUp), p1, CGMouseButton(kCGMouseButtonLeft)).takeUnretainedValue()
CGEventPost(CGEventTapLocation(kCGHIDEventTap), mouseDown)
usleep(kDelayUSec)
CGEventPost(CGEventTapLocation(kCGHIDEventTap), mouseDrag)
usleep(kDelayUSec)
CGEventPost(CGEventTapLocation(kCGHIDEventTap), mouseUp)
}
func ascript(){
var scriptToPerform: NSAppleScript?
let asCommand = "tell application \"QuickTime Player\" \n activate \n new screen recording \n delay 1 \n tell application \"System Events\" to key code 49 \n delay 1\n end tell"
scriptToPerform = NSAppleScript(source:asCommand)
var errorInfo = AutoreleasingUnsafeMutablePointer<NSDictionary?>()
if let script = scriptToPerform {
script.executeAndReturnError(errorInfo)
}
}
func main() {
let p0 = CGPointMake( CGFloat(atoi( C_ARGV[1])), CGFloat(atoi( C_ARGV[2])))
let p1 = CGPointMake( CGFloat(atoi( C_ARGV[3])), CGFloat(atoi( C_ARGV[4])))
DragMouse(p0, p1)
}
ascript()
main()
Sobald der Code gespeichert und wir ausgeführt haben, /bin/chmod +x ~/scripts/clickdrag.swift
um das Skript ausführbar zu machen
Ändern ~/scripts/clickdrag.swift
Sie den tatsächlichen Pfad zur Swift-Datei.
Wir können den Code jetzt über die Befehlszeile ausführen:
AKTUALISIEREN
Vorher hättest du die Kommandozeile so eingeben müssen:
~/scripts/clickdrag.swift -x 364 -y 206 -dx 1038 -dy 726
Aber wenn wir die einfache Methode verwenden, um alle Grenzen zu ermitteln, die Sie benötigen, indem Sie ein Suchfenster öffnen und es auf den Bereich formen, den Sie erfassen möchten.
Führen Sie dann dieses Applescript aus:
tell application "Finder" to get bounds of window 1
Dadurch werden die Grenzen im Ergebnisbereich zurückgegeben.
-> {364, 206, 1038, 726}
Es wäre viel einfacher, es 364, 206, 1038, 726
so zu kopieren und in den Befehl einzufügen.
Mit dem obigen Update können Sie den Befehl so ausführen.
~/scripts/clickdrag.swift 364, 206, 1038, 726
Jan C.
matte Verbrennungen