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

问题描述 投票:0回答:1

我使用以下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个编码选项: )。

提前致谢!!

ffmpeg applescript automator video-encoding subtitle
1个回答
0
投票

如果不作为参数给出,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命令中进行设置。

© www.soinside.com 2019 - 2024. All rights reserved.