Automator を使用して FFmpeg コマンドを実行する (1 つの .MP4 に 2 つの .SRT)

Automator を使用して FFmpeg コマンドを実行する (1 つの .MP4 に 2 つの .SRT)

私はターミナルから実行するのによく使う以下のスクリプトを持っていますが、これは完璧に動作します。ユーザー ディレクトリに 1 つの.mp4ファイルと 2 つの.srtファイルを用意するだけで、両方の字幕が新しいファイルに自動的に入力され.mp4、コーデックが HVC1 に変更されます。

しかし、Finder から 3 つのファイル (2 つと.srt1 つ.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

コマンドを「シェル スクリプトの実行」アクションに配置し、「入力を引数として渡す」を選択して、固定引数の代わりに可変引数を使用します。

ワークフローのスクリーンショット

$1」などのビットは、スクリプトへの第 1、第 2、および第 3 の引数です。

Automator の「ドキュメント」タイプのうち、クイックアクション、フォルダアクション、またはアプリケーションをこの順序で使用することをお勧めします。

  1. クイックアクションでは、3 つのファイルを選択し、グループを右クリックして、クイックアクションのフライアウトメニューから Automator ワークフローを選択する必要があります。

  2. フォルダー アクションを使用すると、これらのファイルをドロップする特定のフォルダーにワークフローをバインドできます。

  3. アプリケーションはドロップレットとして機能し、アプレットドラッグ アンド ドロップしたファイルで実行されます。3 つのファイルをアプリ アイコンにドラッグすると、それらのファイルが入力として実行されます。

このワークフローがファイル引数の順序に敏感であるとは思えません。Finder でファイルを選択する順序は の-iオプションの順序に影響しますffmpegが、このインスタンスでは関係ないと思いますffmpeg。唯一不明なのは、.mp4出力ファイル名の「 」が、ffmpeg最初の引数から取得するのではなく、出力を MP4 形式で書き込むように指示するのに十分かどうかです。そうであれば、コマンドの早い段階で-iを追加する必要があります。-f mp4

関連情報