.png)
私はターミナルから実行するのによく使う以下のスクリプトを持っていますが、これは完璧に動作します。ユーザー ディレクトリに 1 つの.mp4
ファイルと 2 つの.srt
ファイルを用意するだけで、両方の字幕が新しいファイルに自動的に入力され.mp4
、コーデックが HVC1 に変更されます。
しかし、Finder から 3 つのファイル (2 つと.srt
1 つ.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 の「ドキュメント」タイプのうち、クイックアクション、フォルダアクション、またはアプリケーションをこの順序で使用することをお勧めします。
クイックアクションでは、3 つのファイルを選択し、グループを右クリックして、クイックアクションのフライアウトメニューから Automator ワークフローを選択する必要があります。
フォルダー アクションを使用すると、これらのファイルをドロップする特定のフォルダーにワークフローをバインドできます。
アプリケーションはドロップレットとして機能し、アプレットドラッグ アンド ドロップしたファイルで実行されます。3 つのファイルをアプリ アイコンにドラッグすると、それらのファイルが入力として実行されます。
このワークフローがファイル引数の順序に敏感であるとは思えません。Finder でファイルを選択する順序は の-i
オプションの順序に影響しますffmpeg
が、このインスタンスでは関係ないと思いますffmpeg
。唯一不明なのは、.mp4
出力ファイル名の「 」が、ffmpeg
最初の引数から取得するのではなく、出力を MP4 形式で書き込むように指示するのに十分かどうかです。そうであれば、コマンドの早い段階で-i
を追加する必要があります。-f mp4