エクセルでコマンドを量産してffmpegで大量の動画ファイルを一括変換処理する

我は動画変換を司りし社畜

100件くらいの動画ファイルを一括エンコードするライフイベントが4年に1回くらいの頻度で発生するので、楽をする方法をまとめました。

用意するものはffmpegとエクセルと、それからメモ帳です。
眠眠打破なんか用意しなくていい。

ffmpegとは

みんなだいすきffmpeg。

FFmpeg

ffmpeg(えふえふえむぺぐ)はLGPLライセンスの動画変換ソフトです。
このffmpeg、歴史は長く、初登場は2000年。2021年現在も活発な開発が続けられていて、ここ数年は動画ニーズの高まりに合わせてユーザーも増えています。(体感)

なんといってもすごいのはCUIでめっちゃキビキビ動く点。GUIと違ってノーストレスで動画変換ができます。

そして、もう一つの強み。それは、めちゃくちゃたくさんのファイル形式に対応してること。
思いつくような拡張子の動画ファイル・音声ファイルはだいたい対応しています。
mov→mp4なんかは当たり前のようにできますし、つい先日、今やプレイヤーすら無くなってしまったflvファイルをmp4に変換しました。変換するまでデータの中身確認できないのがつらい。

コマンドにパラメータをいろいろ付ければ、出力動画のビットレート指定や解像度変更はもちろん、透かしの挿入までできちゃいます。
変わった使い方としては、複数枚の画像を動画に変換したり、動画を複数枚の静止画に変換したりできます。

インストール方法

Macだとbrewで簡単にインストールできます。

$ brew install ffmpeg

Homebrew(macOS用パッケージマネージャ)


一括処理の手順

さて、本題。おおまかな手順です。

  1. 処理したいファイル名の一覧を取得
  2. エクセルに貼り付ける
  3. エクセルでコマンドを書く
  4. メモ帳に貼り付け、tabを削除
  5. ターミナルで実行
  6. 寝て待つ

一つずつ説明します。

1. 処理したいファイル名の一覧を取得

Finderのリスト表示でファイルがズラッと並んでるのを全選択 > コピーでメモ帳に貼り付けるとファイル名一覧が取得できます。もちろんlsコマンドでもいいです。

2. エクセルに貼り付ける

エクセルに適当に貼り付けときましょう。改行ごとに行が変わるようにしてください。

3. エクセルでコマンドを書く

例としてmovファイルをビットレート1000Kb/sでmp4にエンコードしてみます。

# 基本構文
$ ffmpeg -i 変換したいファイルのパス [パラメーター] 書き出したいファイルのパス

# 例(ビットレート1000Kb/sでmov→mp4変換)
$ ffmpeg -i /User/halkyo/Desktop/hoge.mov -b 1000k /User/halkyo/Desktop/hoge.mp4

上記の形になるように、エクセルでコマンドを書きます。B列が元のディレクトリ、C列がファイル名、D列はパラメータ、E列が書き出し後ディレクトリ、F列が書き出し後ファイル名ですね。B列とE列のディレクトリは同じでも別のディレクトリでもOK。

変換後のファイル形式はメモ帳とかで一括変換しとく

わかりづらいですが、パラメータの前後など、半角スペースを入れる場所にはこの時点で入れてあります。

コマンドの構文に問題がなさそうであれば、これをコピペして増やします。
リネームや書き出し後のフォルダ分けをしたい場合、指定はこのときにしておきます。(フォルダは先に作っておく)

こんな感じ

それから、行の末尾に、半角セミコロン(;)が入れます。
これは、後ほどターミナルで実行する際に、意図せず並行処理にならないようにするためのもの。セミコロンで区切ることで1ファイルずつ順番に変換処理→次の行、という風に処理してくれます。

4. メモ帳に貼り付け、tabを削除

エクセルからメモ帳に貼り付けます。検索・置換の機能がついているエディタならなんでもいいです。

全選択してコピー
メモ帳に貼り付け

エクセルから貼り付けたコマンドにはTabが含まれているので、これを置換で削除します。

Tabを空白に置換します
完了

5. ターミナルで実行

あとはこれをターミナルにペタっと貼り付けてEnterで実行。

6. 寝て待つ

いくらCUIで軽快に動作するとはいえ、やってることは動画変換。
CPUがフル稼働してくれますが、それなりに時間はかかります。
焦らず寝て待ちましょう。


まとめ

例ではたった3行分なので、エクセルを使うメリットはあまり感じられませんでしたが、ファイル数が多い場合や、リネームのルールが複雑だとか、透かしの画像が動画によって異なる場合などにはこの方法で、ミスを減らしながら大量の動画変換が可能になります。
そして、そのコマンドはエクセル形式やテキスト形式で残しておけるので、設定の再利用も可能。ほんと便利ですよね。

ffmpegでは一括処理用のファイルパスのテキストをインポートすることもできますが、今回はエクセルでのいい部分を活かした一括処理の方法をご紹介しました。

ffmpeg使ったこと無いって方や、動画の大量変換に困ってる方は是非やってみてね。

おわり🏆


補足

ビットレートだけ変更したい場合などは、同ディレクトリ・同ファイル名だと上書きされるので、ファイルをバックアップしておきましょう。パラメータ不備などでエンコードが失敗したらファイルが壊れます。

タグ
公開日