我已经安装了Perian 插件以便 Quicktime 可以打开 .flv 文件,然后我可以将它们另存为 .m4v 或 .mov。我正在尝试使用以下方法制作一个 Applescript,以自动将 .flv 转换为 .m4v本教程并屠杀他们的示例 applescript 文件,它通常会将 ChemDraw 文件(.cdx、.cml、.mol)转换为 .tiff,因此它使用 Quicktime 将 .flv 文件保存为 .m4v。但是,当我尝试使用它时,我收到错误“QuickTime Player 出现错误:文档 1 无法理解保存消息”。我的保存消息目前是:
将 target_path 中的第一个文档保存为“.m4v”
它看起来像 QuickTime 词典的说明:
节省specifier:要保存的文档或窗口。
[作为可保存文件格式]:要使用的文件格式。
我还尝试了“m4v”,不带句点,但仍然出现错误。
我的保存方向是否错误,或者可能是由于尝试使用 Quicktime 而不是原始 ChemDraw 而导致的错误?我尝试将对 .cdx、.cml、.mol、.tiff 和 ChemDraw 的引用分别更改为 .flv、.m4v 和 QuickTime,但可能比这更复杂?
答案1
这个答案太长了,因为你的评论似乎表明你的主要兴趣是 AppleScript 本身,而不是将视频从 FLV 转换为 MP4。如果是这样,我强烈建议你先从AppleScript 参考,仔细阅读并学习使用可用的工具(尤其是脚本编辑器和应用程序词典)。尝试通过修改现有应用程序来学习新语言不利于调试,并且可能会导致非常糟糕的结果,例如货物崇拜编程. 话虽如此,
我首先打开 QuickTime Player 的字典(文件->打开词典...在脚本编辑器中)查看可用的命令。在我的 QuickTime Player 版本(7.6.4)中,
export
QuickTime Player Suite 中有一个命令:
出口 v :将影片或曲目导出到文件 出口参考:要导出的电影或曲目 到file :目标文件 作为AIFF/Apple TV/AVI/BMP/DV 流/快速启动 QTVR 电影/FLC/提示 电影/图像序列/帧间压缩 VR 对象电影/iPhone/ iPhone 手机/iTunes/MuLaw/MPEG2/MPEG4/图片/QuickTime 媒体 链接/QuickTime 电影/QuickTime TeXML/标准 MIDI/System 7 声音/ text file/ThreeGPP/wave :所需的文件类型 [使用默认设置/最新设置] :导出设置 使用 [使用设置预设字符串]:导出设置的名称 预设使用 [使用设置file] :包含导出设置的文件 [替换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 流/快速启动 QTVR 电影/FLC/提示 电影/图像序列/帧间压缩 VR 对象电影/iPhone/ iPhone 手机/iTunes/MuLaw/MPEG2/MPEG4/图片/QuickTime 媒体 链接/QuickTime 电影/QuickTime TeXML/标准 MIDI/System 7 声音/ text file/ThreeGPP/wave :所需的文件类型 → boolean : 是否支持导出
因此,在实际执行此操作之前,我们应该检查是否可以以 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 导出 Droplet。
虽然这不能回答您的问题,但这里有两种似乎可以解决问题的商业产品,可供试用:
Wondershare iPad 视频转换器(适用于 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