Applescript-Speicherbefehl für QuickTime Player

Applescript-Speicherbefehl für QuickTime Player

Ich habe diePerian-Addonfür Quicktime, damit es .flv-Dateien öffnen kann, und ich kann sie dann als .m4v oder .mov speichern. Ich versuche, ein Applescript zu erstellen, um automatisch von .flv in .m4v zu konvertieren, indem ichdieses Tutorialund schlachten ihreBeispiel einer Applescript-Datei, das normalerweise ChemDraw-Dateien (.cdx, .cml, .mol) in .tiff konvertiert, sodass es stattdessen Quicktime verwendet, um die .flv-Dateien als .m4v zu speichern. Wenn ich versuche, es zu verwenden, erhalte ich jedoch die Fehlermeldung „QuickTime Player hat einen Fehler festgestellt: Dokument 1 versteht die Speichermeldung nicht“. Meine Speichermeldung lautet derzeit:

erstes Dokument im Zielpfad als „.m4v“ speichern

das sieht aus wie die Anweisungen im QuickTime-Wörterbuch:

speichernSpezifizierer: Die zu speichernden Dokumente oder Fenster.

[alsspeicherbares Dateiformat]: Das zu verwendende Dateiformat.

Ich habe auch „m4v“ ohne Punkt ausprobiert und bekomme immer noch den Fehler.
Ist meine Speicherrichtung falsch oder liegt es wahrscheinlich an einem Fehler beim Versuch, Quicktime statt des ursprünglichen ChemDraw zu verwenden? Ich habe versucht, Verweise auf .cdx, .cml, .mol, .tiff und ChemDraw in .flv, .m4v und QuickTime zu ändern, aber vielleicht ist es komplizierter?

Antwort1

Diese Antwort ist verdammt lang, weil Ihre Kommentare darauf hindeuten, dass Ihr Hauptinteresse AppleScript selbst ist und nicht die Konvertierung von Videos von FLV in MP4. Wenn dies der Fall ist, empfehle ich dringend, mit einem guten zu beginnenAppleScript-Referenz, sorgfältiges Lesen und Lernen der Verwendung der verfügbaren Tools (insbesondere Script Editor und Anwendungswörterbücher). Der Versuch, eine neue Sprache durch die Änderung vorhandener Anwendungen zu erlernen, ist nicht gut für das Debuggen und kann zu sehr schlimmen Ergebnissen führen, wieCargo-Kult-Programmierung. Das gesagt,


Ich würde zunächst das Wörterbuch des QuickTime Players öffnen (Datei->Wörterbuch öffnen …im Skripteditor), um zu sehen, welche Befehle verfügbar sind. In meiner Version von QuickTime Player (7.6.4) gibt es einen exportBefehl in der QuickTime Player Suite:

Export v: Einen Film oder Titel in eine Datei exportieren

   ExportReferenz: der zu exportierende Film oder Titel
   ZuDatei: die Zieldatei
   alsAIFF/Apple TV/AVI/BMP/DV-Stream/Schnellstart QTVR-Film/FLC/angedeutet
      Film/Bildsequenz/Interframe komprimiertes VR-Objekt Film/iPhone/
      iPhone-Mobiltelefon/iTunes/MuLaw/MPEG2/MPEG4/Bild/QuickTime-Medien
      Link/QuickTime-Film/QuickTime TeXML/Standard-MIDI/System 7-Sound/
      text file/ThreeGPP/wave : der gewünschte Dateityp
   [mitStandardeinstellungen/Letzte Einstellungen]: die Exporteinstellungen
      benutzen
   [Verwenden der voreingestellten Einstellungenstring] : der Name der Exporteinstellungen
      Vorgabe zur Verwendung
   [Verwenden von Einstellungenfile]: die Datei mit den Exporteinstellungen
   [Ersetzenboolean]: Soll zuerst die Originaldatei gelöscht werden?

Ein wenig Googeln deutet darauf hin, dass sich der Dateityp „iPhone“ auf eine .m4v-Datei bezieht. Ein erster Schritt könnte also das Ersetzen save first document in target_path as ".m4v"durch sein export first document to target_path as iPhone. Ein genauerer Blick in das Wörterbuch zeigt jedoch, dass es auch einen can exportBefehl gibt:

kann exportieren v : Bestimmen Sie, ob ein Film oder ein Titel in das gewünschte Ziel exportiert werden kann.
   Typ

   kann exportierenReferenz: der zu exportierende Film oder Titel
      alsAIFF/Apple TV/AVI/BMP/DV-Stream/Schnellstart QTVR-Film/FLC/angedeutet
         Film/Bildsequenz/Interframe komprimiertes VR-Objekt Film/iPhone/
         iPhone-Mobiltelefon/iTunes/MuLaw/MPEG2/MPEG4/Bild/QuickTime-Medien
         Link/QuickTime-Film/QuickTime TeXML/Standard-MIDI/System 7-Sound/
         text file/ThreeGPP/wave : der gewünschte Dateityp
      → Boolean: wird der Export unterstützt

Daher sollten wir prüfen, ob es möglich ist, den Film im iPhone/.m4v-Format zu exportieren, bevor wir dies tatsächlich tun:

if (can export first document as iPhone) then
   export first document to target_path as iPhone
else
   error "Cannot export " & (source_file as string) & " in .m4v (iPhone) format."
end if

Wenn wir hier aufhören, werden wir möglicherweise feststellen, dass einige der Ausgabedateien ab einem bestimmten Punkt nicht mehr richtig abgespielt werden, da QuickTime Dateien asynchron laden kann (d. h. nicht alle auf einmal). Wir solltenVersuchen Sie zu überprüfen, ob QuickTime Player den Film vollständig geladen hatbevor wir ihm den Exportbefehl geben; indem wir die vollständige Liste der im Wörterbuch aufgeführten Ladezustände untersuchen und davon ausgehen, dass jeder Film letztendlich in einem fertigen Zustand oder einem Fehlerzustand endet, können wir dies relativ einfach hinzufügen.

set error_states to {load state unknown, load error}
set successful_states to {loaded, complete}
repeat until load state of first document is in (error_states & successful_states)
   delay 0.1
end repeat

if (load state of first document is in successful_states) then
   if (can export first document as iPhone) then
      export first document to target_path as iPhone
   else
      error "Cannot export " & (source_file as string) & " in .m4v (iPhone) format."
   end if
else
   error "File is not in a successful load state: " & (load state of first document as string)
end if

Antwort2

Sie können jederzeit auf UI-Skripting zurückgreifen. Basierend auf @Bennys Antwort funktioniert Folgendes (einigermaßen):

set infile to choose file with prompt "select file:"
set outfile to "filename"

try
    tell application "QuickTime Player"
        activate
        close every window
        open infile
        delay 2 # wait for the document to open
        tell application "System Events"
            keystroke "s" using {command down, shift down} # press Cmd-Shift-S
            delay 1 # wait for the sheet
            keystroke outfile # the filename
            key code 36 # press enter
        end tell
        close document 1 saving no
    end tell
end try

Wenn du gemäß deinem Kommentar einfach etwas abspeichern möchtest TextEdit, kannst du folgendes als Grundlage verwenden:

set infile to choose file with prompt "select file:"
set outfile to choose file name with prompt "Save altered file here:"

tell application "TextEdit"
    activate
    open infile
    tell application "System Events" # just some keystrokes for edits
        keystroke "AppleScript was here!"
        key code 36 # press enter
    end tell
    tell document 1 to save in outfile
    close every document saving no
end tell

Wenn Sie ein Dokument in einem bestimmten Dateityp speichern möchten, scheint es ein Problem mit dem asParameter zu geben: Ich konnte es nicht in einem der auswählbaren Formate speichern. Sie können das Problem umgehen, indem Sie die gewünschte Dateierweiterung angeben, z. B. filename.htmloder filename.odtfürWebsiteUndOpenDocumentFormate bzw.

Antwort3

Das hier beschriebene Applescript-Skript könnte nützlich sein:QuickTime-Export-Droplet.

Dies beantwortet Ihre Frage zwar nicht, aber hier sind zwei kommerzielle Produkte, die eine Lösung zu sein scheinen und für die es Testversionen gibt:

Wondershare iPad Video Converter für Mac(25 USD)
Videokonverter für Mac(39 USD)

Antwort4

Ich weiß nicht, ob das funktioniert, aber versuchen Sie es,

set infile to choose file with prompt "select file:"
set outfile to choose file name with prompt "Save altered file here:"

try
tell application "QuickTime Player"
activate
close every window
open infile
set dimensions of document 1 to {720, 400}
tell document 1
save self contained file outfile
end tell
-- save document 1 given «class dfil»:file outfile, «class savk»:self contained
close document 1 saving no
end tell
end try

Schauen Sie, ob das funktioniert.

Wenn das nicht funktioniert, sehen Sie sich diese Seite an.http://discussions.apple.com/thread.jspa?threadID=1055811

verwandte Informationen