今回はffmpegとAutomatorを使用して、動画の変換作業を効率化する方法を紹介します。

動画の変換は面倒な手間が多いです。例えば、変換用のソフトウェアを起動したり、変換用のWebサイトを検索して探したりする必要があります。こういう手間は、スクリプトで自動化しましょう。これで、GitHubにAnimation GIFを載せたり、Slackにmp4を載せたりする作業が、爆速になります!

完成形

変換の様子

対象のファイルを右クリックしてコンテキストメニューを表示、ショートカットから選択するだけで、変換が完了です。

環境の前提と手順

Macの環境を前提としています。

  • Homebrewで、ffmpegをインストール
  • Automatorで変換スクリプトを作成

ffmpegのインストール

まずはじめに、Homebrewを使用して、ffmpegをインストールします。 もちろんインストール済みの方は、スキップしてください( brew outdatedで、更新を確認しておくのもあり)。

$ brew install ffmpeg

これで、ffmpegはインストールOK!

Automatorで変換スクリプトを作成

スクリプト作成の様子

次に。変換スクリプトをAutomatorで作成します。作業は、以下のとおりです。

  1. Automatorを起動、新規作成を選択
  2. 書類の種類は「クイックアクション」を選択します
  3. 以下のように入力を設定します
    ワークフローが受け取る現在の項目: ムービー
    検索対象: Finder
  4. 「シェルスクリプトを実行」のアクションをワークフローに追加
  5. 以下のようにアクションを設定します
    入力の引き渡し方法: 引数として
    コマンド: (以下に記載)
  6. 名前を付けて保存します(コンテキストメニューの表示名になります)

詳しくは、以下で解説します。

Automator書類を新規作成

Automatorで新規の書類を作成するときは、書類の種類を選択します。今回は、クイックアクションを選択します。

新規作成後「クイックアクション」を選択

ワークフローを作成

それでは、ワークフローを作成していきます。詳細は画像を見るとわかりやすいですが、改めてまとめておきます。

ワークフローの設定

書類の設定

項目 設定
ワークフローが受け取る現在の項目 ムービー
検索対象 Finder
イメージ お好みで画像を設定してください(メニューのアイコンになります)

「シェルスクリプトを実行」のワークフロー

項目 設定
入力の引き渡し方法 引数として
スクリプト (以下に記載)

GIFアニメーションへ変換するスクリプト

DIRNAME=`dirname $@`
BASENAME=`basename $@`
/usr/local/bin/ffmpeg -i $@ -r 10 ${DIRNAME}/${BASENAME}.gif

MP4へ変換する場合は、スクリプトの最後の拡張子をmp4にします。

最後に、名前を付けて保存します。この名前が、そのままクイックアクションのメニューに表示されます。

保存画面

以上で完成です!

ffmpegのスクリプトを解説

今回は以下のスクリプトを使いました。

$ ffmpeg -i [input_file] -r [frame_rate] [output_file]

-i: 変換するファイルを指定
-r: フレームレートを指定

オプションで、ビデオフィルタを使用すると、リサイズもできるようになります。

$ ffmpeg -i [input_file] -r [frame_rate] -vf scale=640:-1 [output_file]

-vf: ビデオフィルタの指定。上ではscale=640:-1を指定している。横幅を640にし、縦のサイズはアスペクト比を維持して自動で指定。ちなみに、setpts=PTS/2.0を指定すると、再生速度が2倍になる。複数のビデオフィルタを使用する場合は、カンマを使ったり、ダブルクオートで全体を囲ったりする(一つの引数として入力できるように工夫する必要があるようだ)。

まとめ

ffmpegとAutomatorを使用して、動画ファイルを変換する作業を効率化する方法を紹介しました。このクイックアクションを用意しておけば、動画ファイルを共有するときに、さくっと変換できるので便利です。