QuickTime Player の Applescript 保存コマンド

QuickTime Player の Applescript 保存コマンド

私はインストールしましたペリアンアドオンQuicktimeで.flvファイルを開いて、.m4vまたは.movとして保存できるようにしたいのですが、.flvから.m4vに自動的に変換するApplescriptを作成しようとしています。このチュートリアルそして彼らを虐殺するサンプル AppleScript ファイルは、通常、ChemDraw ファイル (.cdx、.cml、.mol) を .tiff に変換し、代わりに Quicktime を使用して .flv ファイルを .m4v として保存します。しかし、これを使用しようとすると、「QuickTime Player でエラーが発生しました: ドキュメント 1 は保存メッセージを認識できません」というエラーが表示されます。現在の保存メッセージは次のとおりです。

target_path の最初のドキュメントを「.m4v」として保存します。

これは QuickTime 辞書の指示に似ています:

保存指定子: 保存するドキュメントまたはウィンドウ。

[として[保存可能なファイル形式]: 使用するファイル形式。

ピリオドなしの「m4v」も試しましたが、それでもエラーが発生します。
保存方向が間違っているのでしょうか、それとも元の ChemDraw ではなく Quicktime を使用しようとしたことによるエラーでしょうか? .cdx、.cml、.mol、.tiff、ChemDraw への参照をそれぞれ .flv、.m4v、QuickTime に変更しようとしましたが、それよりも複雑なのでしょうか?

答え1

この回答は長すぎます。なぜなら、あなたのコメントから、あなたの主な関心はAppleScriptそのものであって、FLVからMP4へのビデオの変換ではないとわかるからです。もしそうなら、良いものから始めることを強くお勧めします。AppleScriptリファレンス、注意深く読み、利用可能なツール(特にスクリプトエディタとアプリケーション辞書)の使い方を学んでください。既存のアプリケーションを変更して新しい言語を学ぼうとするのはデバッグには良くなく、次のような非常に悪い結果に終わる可能性があります。カーゴカルトプログラミングとはいえ、


まずQuickTime Playerの辞書を開きます(ファイル->辞書を開く...exportスクリプト エディタで、使用できるコマンドを確認してください。私のバージョンの QuickTime Player (7.6.4) では、 QuickTime Player Suite に次のコマンドがあります。

輸出 v : ムービーまたはトラックをファイルにエクスポートする

   輸出参照: エクスポートするムービーまたはトラック
   ファイル: 宛先ファイル
   としてAIFF/Apple TV/AVI/BMP/DV ストリーム/Fast Start QTVR ムービー/FLC/ヒント
      ムービー/画像シーケンス/フレーム間圧縮VRオブジェクトムービー/iPhone/
      iPhone セルラー/iTunes/MuLaw/MPEG2/MPEG4/画像/QuickTime メディア
      リンク/QuickTime ムービー/QuickTime TeXML/標準 MIDI/System 7 サウンド/
      テキストファイル/ThreeGPP/wave: 希望するファイルタイプ
   [使用してデフォルト設定/最新の設定]:エクスポート設定
      使用する
   [設定プリセットを使用する文字列] : エクスポート設定の名前
      使用するプリセット
   [設定の使用ファイル: エクスポート設定を含むファイル
   [交換する[boolean]: 元のファイルを最初に削除する必要がありますか?

グーグルで少し調べてみると、「iPhone」ファイルタイプは .m4v ファイルを指すようです。そのため、最初のステップはsave first document in target_path as ".m4v"を に置き換えることかもしれませんexport first document to target_path as iPhone。しかし、辞書をもう少し調べてみると、次のようなコマンドもあることがわかりますcan export

輸出できる v: ムービーまたはトラックを目的の形式にエクスポートできるかどうかを確認します。
   タイプ

   輸出できる参照: エクスポートするムービーまたはトラック
      としてAIFF/Apple TV/AVI/BMP/DV ストリーム/Fast Start QTVR ムービー/FLC/ヒント
         ムービー/画像シーケンス/フレーム間圧縮VRオブジェクトムービー/iPhone/
         iPhone セルラー/iTunes/MuLaw/MPEG2/MPEG4/画像/QuickTime メディア
         リンク/QuickTime ムービー/QuickTime TeXML/標準 MIDI/System 7 サウンド/
         テキストファイル/ThreeGPP/wave: 希望するファイルタイプ
      → ブール値: エクスポートがサポートされているかどうか

したがって、実際に実行する前に、ムービーを iPhone/.m4v 形式でエクスポートできるかどうかを確認する必要があります。

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

しかし、ここで止めてしまうと、QuickTimeはファイルを非同期に(つまり一度に全部ではなく)読み込むことができるため、出力ファイルの一部が特定の時点以降正しく再生されないことに気付くかもしれません。QuickTime Playerがムービーの読み込みを完了したかどうかを確認しますエクスポートを指示する前に、辞書にリストされているロード状態の完全なリストを調べ、すべてのムービーが最終的に終了状態またはエラー状態になると想定することで、これを比較的簡単に追加できます。

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

答え2

いつでも UI スクリプトに頼ることができます。@Benny の回答を基にすると、次のようになります (ある程度)。

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

TextEditコメントに従って単に何かを保存したい場合は、以下を基礎として使用できます。

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

ドキュメントを特定のファイル形式で保存したい場合、パラメータに問題があるようですas。選択可能な形式のいずれかで保存できませんでした。希望するファイル拡張子を指定することでこの問題を回避できます。たとえば、filename.htmlまたはfilename.odtウェブページそしてオープンドキュメントそれぞれフォーマットします。

答え3

ここで説明する Applescript スクリプトが役に立つかもしれません:QuickTime エクスポート ドロップレット

これはあなたの質問に対する答えではありませんが、解決策と思われる、試用版が用意されている 2 つの市販製品を以下に示します。

Wondershare iPad ビデオコンバーター for Mac(25ドル)
Mac用ビデオコンバーター(39ドル)

答え4

うまくいくかどうかは分かりませんが、試してみてください。

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

それが機能するかどうか確認してください。

それでもうまくいかない場合は、このページを参照してください。http://discussions.apple.com/thread.jspa?threadID=1055811

関連情報