AppleScript批量转MTS为1080P MOV报错:无法将文件转为«class fsrf»
解决QuickTime Player AppleScript批量导出MTS到1080p MOV的错误问题
你遇到的错误提示里的«class fsrf»是QuickTime内部的“文件引用”类型,报错说明脚本里的文件路径处理逻辑出了问题——要么是源MTS文件没被QuickTime正确识别,要么是输出路径格式不对,导致QuickTime无法生成有效的目标文件引用。
我帮你写了一个修正后的完整脚本,同时拆解关键细节帮你理解问题所在:
-- 让用户选择源文件夹(存放MTS文件的目录) set sourceFolder to choose folder with prompt "请选择包含MTS文件的文件夹" -- 让用户选择输出文件夹(保存导出MOV的目录) set outputFolder to choose folder with prompt "请选择保存导出MOV文件的文件夹" -- 从源文件夹筛选所有MTS文件(不区分大小写) tell application "Finder" set mtsFiles to every file of sourceFolder whose name extension is in {"mts", "MTS"} end tell -- 遍历每个MTS文件执行导出 repeat with aFile in mtsFiles -- 获取不带扩展名的文件名,用于生成输出文件名 tell application "Finder" to set baseName to text 1 thru -5 of (name of aFile) -- 拼接输出文件的完整路径,再转为AppleScript的file对象(关键!) set outputFilePath to (outputFolder as text) & baseName & ".mov" set outputFile to file outputFilePath -- 调用QuickTime完成导出 tell application "QuickTime Player" activate -- 打开源MTS文件(必须先打开才能导出) set theMovie to open aFile -- 使用QuickTime内置的1080p预设导出,避免手动配置编码 export theMovie to outputFile using settings preset "1080p" -- 关闭原文件,不保存(因为已经导出了目标文件) close theMovie saving no end tell end repeat -- 导出完成提示 display dialog "批量导出已完成!" buttons {"确定"} default button 1
关键修正点(对应你原脚本的问题):
- 用文件对象而非字符串路径:QuickTime的
export命令需要接收AppleScript原生的file对象,而非纯文本路径。原脚本可能直接传了字符串路径,导致QuickTime无法解析为有效的文件引用(也就是报错里的«class fsrf»)。 - 通过Finder获取源文件:用Finder筛选MTS文件,能确保拿到正确的文件对象,避免路径拼写错误。
- 使用内置预设:直接用
"1080p"预设,不用手动设置分辨率、编码等参数,既简化脚本也避免配置错误。 - 明确的文件生命周期:打开文件→导出→关闭不保存,避免QuickTime残留大量窗口或进程。
额外调试建议:
- 先测试单个文件的导出逻辑,确认路径和权限没问题
- 确保输出文件夹有写入权限(比如不要选系统只读目录)
- 如果部分MTS文件导出失败,可能是编码特殊导致QuickTime无法直接处理,这种情况可以先手动用QuickTime打开测试是否能正常播放/导出
内容的提问来源于stack exchange,提问作者JSV
相关产品推荐
相关产品推荐

