我,使用Applescript使用Handbrake CLI将一大堆mv4文件转换为640x480。我有一个AppleScript,我发现某个地方改变了我的参数,而且效果很好。但是为了节省时间,我希望脚本跳过已经是640x480的文件,因为并非所有文件都需要转换。我该怎么办呢?
这是剧本:
--on adding folder items to this_folder after receiving these_items
with timeout of (720 * 60) seconds
tell application "Finder"
--Get all m4v files that have no label color yet, meaning it hasn’t been processed
set allFiles to every file of entire contents of ("FIRSTHD:Users:jerry:Desktop:Omkodning" as alias) whose ((name extension is "m4v") and label index is 0)
--Repeat for all files in above folder
repeat with i from 1 to number of items in allFiles
set currentFile to (item i of allFiles)
try
--Set to gray label to indicate processing
set label index of currentFile to 7
--Assemble original and new file paths
set origFilepath to quoted form of POSIX path of (currentFile as alias)
set newFilepath to (characters 1 thru -5 of origFilepath as string) & "mp4'"
--Start the conversion
set shellCommand to "nice /Applications/HandBrakeCLI -i " & origFilepath & " -o " & newFilepath & " -e ffmpeg4 -b 1200 -a 1 -E faac -B 160 -R 29.97 -f mp4 –crop 0:0:0:0 crf 24 -w 640 -l 480 ;"
do shell script shellCommand
--Set the label to green in case file deletion fails
set label index of currentFile to 6
--Remove the old file
set shellCommand to "rm -f " & origFilepath
do shell script shellCommand
on error errmsg
--Set the label to red to indicate failure
set label index of currentFile to 2
end try
end repeat
end tell
end timeout
--end adding folder items to
答案 0 :(得分:0)
为了清晰而编辑....
由于HandBreakCLI
没有任何选项可以告诉它如果分辨率是640x480就不能转换,你必须在脚本中处理那一点逻辑。它很容易完成。
所以你的脚本需要做的就是......
get the video file resolution
If file is not at desired resolution then
convert the file
else
skip it
end if
因此,作为discussed here,您可以使用免费提供的mediainfo
命令行工具来获取视频分辨率。
以下是一些AppleScript代码,您可以复制/粘贴并运行以查看其工作原理......
set filterStr to " | grep pixels | tr -d [:alpha:][:blank:][:punct:]"
set allFiles to (choose file with multiple selections allowed)
repeat with i from 1 to number of items in allFiles
set currentFile to (item i of allFiles)
set cmdStr to "/usr/local/bin/mediainfo " & ¬
quoted form of POSIX path of currentFile & filterStr
set h to 0
set w to 0
try
set fileInfo to do shell script (cmdStr)
set {w, h} to every paragraph of fileInfo
end try
if w is not 640 and h is not 480 then
log w & " x " & h
# Convert to desired resolution....
end if
end repeat
希望有所帮助。