使用 Automator 执行 FFmpeg 命令(一个 .MP4 中包含两个 .SRT)

使用 Automator 执行 FFmpeg 命令(一个 .MP4 中包含两个 .SRT)

我有下面的脚本,我习惯从终端运行它,它运行完美。我只需要在我的用户目录中有一个.mp4文件和两个文件,它就会自动将两个字幕输入到一个新文件中,同时将编解码器更改为 HVC1。.srt.mp4

但是我只想从 Finder 中选择 3 个文件(两个.srt和一个.mp4),获取它们的文件名、路径和扩展名,然后将其作为服务运行。我该怎么做?我在网上查了很多选项,但我不知道该怎么做。请问有人能帮帮我吗?

ffmpeg -i movie-1.mp4 -i movie-2.srt -i movie-3.srt \
-map 0:v -map 0:a -map 1 -map 2 \
-c:v copy  -tag:v hvc1 -c:a copy -c:s mov_text \
-metadata:s:s:0 language=por -metadata:s:s:1 language=eng \
/Users/allanmentzingen/Desktop/output.mp4

答案1

将您的命令放入“运行 Shell 脚本”操作中,选择“传递输入:作为参数”,然后使用这些变量参数代替固定参数:

工作流程屏幕截图

$1”等位是脚本的参数,第一、第二和第三个。

对于 Automator 的“文档”类型,我建议您按以下顺序使用快速操作、文件夹操作或应用程序:

  1. 快速操作要求您选择三个文件,右键单击该组,然后从快速操作弹出菜单中选择您的 Automator 工作流程。

  2. 文件夹操作会让您将工作流绑定到要将这些文件放入的特定文件夹。

  3. 应用程序可以充当一滴水,小程序使用您拖放的文件运行:将三个文件拖到应用程序图标上,以使用这些文件作为输入来运行它。

我不认为此工作流程对文件参数顺序敏感。您在 Finder 中选择文件的顺序将影响 选项的顺序-iffmpeg但我认为ffmpeg在这种情况下无关紧要。我唯一不确定的是.mp4输出文件名上的“ ”是否足以告诉ffmpeg以 MP4 格式写入输出,而不是从第一个-i参数获取它。如果是这样,那么您只需要-f mp4在命令的早期添加。

相关内容