Используйте Automator для выполнения команды FFmpeg (два .SRT в одном .MP4)

Используйте Automator для выполнения команды FFmpeg (два .SRT в одном .MP4)

У меня есть скрипт ниже, который я привык запускать из Терминала, и он отлично работает. Мне просто нужно иметь один .mp4файл и два .srtфайла в моем пользовательском каталоге, и он автоматически вставит оба субтитра в новый .mp4файл, а также изменит кодек на HVC1.

Но я хотел бы просто выбрать 3 файла (два .srtи один .mp4) из Finder, получить их имена файлов, путь и расширение и запустить это как службу. Как я могу это сделать? Я проверил кучу вариантов в интернете, но я не знаю, как это сделать. Пожалуйста, кто-нибудь может мне помочь?

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

Поместите команду в действие «Выполнить сценарий оболочки», выберите «Передать входные данные: как аргументы», затем используйте эти переменные аргументы вместо фиксированных аргументов:

снимок экрана рабочего процесса

Биты " $1" и т. д. — это аргументы скрипта: первый, второй и третий.

Из типов «документов» Automator я бы рекомендовал вам использовать Быстрое действие, Действие папки или Приложение в следующем порядке:

  1. Для быстрого действия вам потребуется выбрать три файла, щелкнуть правой кнопкой мыши по группе, а затем выбрать рабочий процесс Automator из всплывающего меню «Быстрые действия».

  2. Действие папки позволит вам привязать рабочий процесс к определенной папке, в которую вы будете помещать эти файлы.

  3. Приложение будет действовать как капля,апплеткоторое запускается с файлами, которые вы перетаскиваете на него: перетащите три файла на значок приложения, чтобы запустить его с этими файлами в качестве входных данных.

Я не вижу, чтобы этот рабочий процесс был чувствителен к порядку аргументов файлов. Порядок выбора файлов в Finder повлияет на порядок параметров -i, ffmpegно не думаю, ffmpegчто это имеет значение в данном случае. Единственное, в чем я не уверен, — .mp4достаточно ли " " в имени выходного файла, чтобы указать, ffmpegчто вывод нужно записать в формате MP4, а не получать его из первого -iаргумента. Если так, то вам просто нужно добавить -f mp4в начале команды.

Связанный контент