QuickTime Player的Applescript save命令


1

我已经为Quicktime 安装了Perian插件,因此它可以打开.flv文件,然后我可以将它们保存为.m4v或.mov。我正在尝试通过使用本教程自动将.flv转换为.m4v 并屠宰他们的示例applescript文件,该文件通常将ChemDraw文件(.cdx,.cml,.mol)转换为.tiff,以便它而是使用Quicktime将.flv文件保存为.m4v。但是,当我尝试使用它时,我收到错误“QuickTime Player出错:文档1不理解保存消息”。我的保存信息目前是:

将target_path中的第一个文档保存为“.m4v”

看起来像QuickTime字典的说明:

save specifier:要保存的文档或窗口。

[ 作为可保存的文件格式]:要使用的文件格式。

我也试过“m4v”,没有句号,仍然得到错误。
我的保存方向是否错误,或者尝试使用Quicktime而不是原始ChemDraw可能是错误的?我试图将对.cdx,.cml,.mol,.tiff和ChemDraw的引用分别更改为.flv,.m4v和QuickTime,但是它可能比这更复杂?


事实上,我会解决一个简单的例子,显示如何使用TextEdit或其他东西保存文件,因为我还没有能够保存任何类型的文件..

1
您可能会从stackexchange获得更多反馈,因为我将此视为脚本编程问题。目前有超过550个与AppleScript相关的问题。
LudoMC 2010年

你真的可以链接一个与Applecript相关的stackexchange帖子,因为我似乎找不到任何东西,看起来“applescript”甚至还不是现有的标签。我已经在这里

1
如果您想获得解决方案,那么跟进您的问题和提供的答案可能是个好主意。
Daniel Beck

Answers:


2

这个答案很长,因为您的评论似乎表明您的主要兴趣是AppleScript本身,而不是将视频从FLV转换为MP4。如果是这种情况,我强烈建议从一个好的AppleScript参考开始,仔细阅读并学习使用可用的工具(尤其是脚本编辑器和应用程序词典)。尝试通过修改现有应用程序来学习新语言不利于调试,并且最终可能会导致非常糟糕的事情,例如货物编程。那说,


我首先打开QuickTime Player的字典(文件 - > 打开字典在脚本编辑器中)以查看可用的命令。在我的QuickTime Player(7.6.4)版本export中,QuickTime Player Suite中有一个命令:

导出  v:将电影或曲目导出到文件

   导出参考:要导出文件的电影或曲目
    :目标文件
     AIFF / Apple TV / AVI / BMP / DV流/快速启动QTVR电影/ FLC /提示
      电影/图像序列/帧间压缩VR对象电影/ iPhone /
      iPhone手机/ iTunes / MuLaw / MPEG2 / MPEG4 /图片/ QuickTime媒体
      link / QuickTime电影/ QuickTime TeXML /标准MIDI / System 7声音/
      文本文件/ ThreeGPP / wave:所需的文件类型
   [ 使用默认设置/最新设置]:导出设置
      使用
   [ 使用设置预设字符串]:导出设置的名称
      预设使用
   [ 使用设置文件]:包含导出设置的文件
   [ 替换布尔值]:是否应该先删除原始文件?

一个小Googling表明,“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流/快速启动QTVR电影/ FLC /提示
         电影/图像序列/帧间压缩VR对象电影/ iPhone /
         iPhone手机/ iTunes / MuLaw / MPEG2 / MPEG4 /图片/ QuickTime媒体
         link / 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

1

您始终可以使用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.htmlfilename.odt网页OpenDocument的分别格式。



0

我不知道这是否有效但尝试,

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


不,没有骰子; 它不喜欢“包含”

我不知道这是否会工作,但尝试删除“载”
班尼

它不起作用,因为早在2007年,就没有QuickTime X.这适用于旧的,传统的QuickTime Player 7,其中有一个商业QuickTime Pro。
Daniel Beck
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.