自动将输出文件与输入文件匹配(Applescript x FFMPEG)

追风赶月莫停留,平芜尽处是春山。这篇文章主要讲述自动将输出文件与输入文件匹配(Applescript x FFMPEG)相关的知识,希望能为你提供帮助。
我使用以下AppleScript作为Automator服务来右键单击finder中的视频文件,并使用ffmpeg终端命令刻录匹配的字幕文件(.ass)。在这种情况下,ffmpeg编码一个新的Prores 422(HQ)文件。

on run {input, parameters} tell application "Terminal" activate set filesString to "" repeat with file_ in input set filesString to filesString & " " & quoted form of (POSIX path of file_) end repeat do script "for f in" & filesString & "; do base=$f ffmpeg -y -i "$base" -c:v prores -profile:v 3 -pix_fmt yuv422p10le -vf "ass=${base%.*}.ass" -c:a copy "${base%.*}_sub.mov"; done" end tell return input end run

是否可以将输出文件及其编解码器自动匹配到输入文件? 由于混合的windows / mac环境(Prores(mov),dnxhr(mxf / mov)),我们使用了许多不同的输入格式,我希望在工作站的finder服务菜单中没有8-12个编码选项: )。
提前致谢!!
答案【自动将输出文件与输入文件匹配(Applescript x FFMPEG)】如果不作为参数给出,ffmpeg将从文件结尾中选择编解码器本身。在大多数情况下这很好。只需将相同的扩展名从输入文件设置为输出文件即可。
如果您需要更多粒度,可以使用ffprobe。它是来自ffmpeg的工具,可以读取视频文件的所有属性。
可以在这里找到一个很好的解释:https://trac.ffmpeg.org/wiki/FFprobeTips
例如,第一个流的编解码器(这是大多数视频文件中的视频流)可以通过以下方式读取:
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 input.mp4

您可以将值保存在变量中,并在ffmpeg命令中进行设置。

    推荐阅读