ffmpeg 動画ファイルエンコーダー

ffmpeg 動画ファイルエンコーダー

はじめに

adobe Media EncoderがHAP変換の対応を打ち切ってしまって、動画のエンコーディングソフトのベストチョイスを探していました。
ffmpegというエンコーディングソフトの使い勝手が良いらしいので、使い方や便利機能などについて調べてまとめてみました。

ffmpegとは

ffmpegはffmpeg.org (FFmpegチーム)が開発したエンコーディングソフトで、現在はWindows,、macOS、LINUX等のクロスプラットフォームに対応しています。
ffmpegはCUIで操作するソフト(GUIがない)で、Windowsならコマンドプロンプト、macならターミナルを使用してコマンドを入力することで動画変換を行います。もちろんサードパーティ製のffmpegをGUIで操作するようなソフトもあります(これについては後述)。
そのほかのffmpegに関することは各自調べてください。

ffmpegのインストール

macOS

macの場合、Homebrewを通してffmpegをインストールすることができます。
HomebrewがMacにインストールされているかどうかは、ターミナルを開いて、

brew --version

を入力して、バージョン情報が返って来ればインストールされています。もしインストールされていない場合は、Homebrewのホームページに従ってインストールしてください。

brew update

ffmpegをインストールする前に、homebrewを最新の状態にしておきます。

brew install ffmpeg

インストールコマンドを入力してffmpegをインストールします。

Windows

Windowsの場合は、Macのhomebrewのようなパッケージ管理を通さずに直接インストールします。
FFmpeg.orgのトップページにある「Download」をクリックして、Windowsを選択します。「Windows builds by Zeranoe」と書かれたリンクをクリックしてダウンロードページに飛びます。リンク先のページでバージョン、WindowsOSのバージョン(64bitか32bit)を選び、「Download Build」をクリックするとffmpegのファイルをダウンロードできます。

ダウンロードしたファイルはzipファイルなので展開し、C:¥Program Files 内にフォルダを移動します。

ffmpegをコマンドプロンプトで使用するために、システムの環境変数PATHを追加します。
コントロールパネルを開き、「システム」→「システムの詳細設定」からシステムのプロパティを開きます。「詳細設定」タブにある「環境変数」を押して環境変数設定ウィンドウを開いたのち、「ユーザー環境変数」または「システム環境変数」にある「Path」をハイライトさせた後、「編集(E)…」を押し、「参照(B)…」を押して、先ほどのフォルダにあるbinフォルダを参照します(今回の場合は「C:¥Program Files¥ffmpeg¥bin」)。
リストに参照先が増えていれば、「OK」を押して設定が完了します。

ffmpegを使う

ffmpegの基本的な使い方

基本的なコマンド

ffmpeg 入力オプション -i 入力ファイルパス 出力オプション 出力ファイルパス

ffmpegはターミナル、コマンドプロンプト内にコマンドを記述することで操作します。基本的には上のように入力オプションや出力オプションを指定してやることで動画の詳細を編集して変換することができます。特にエンコーディング等に使用する場合は、入力オプションは記述することなく出力オプションを記述することの方が多くなります。パスは絶対パスを使用するか、cdコマンドでディレクトリを移動してから相対パスを入力する必要があります。基本的にパスはファイルをコンソールにドラッグしてやることで絶対パスが表示されるようになっています。

動画の設定を確認

ffmpeg -i 入力ファイルパス
ffprobe -I 入力ファイルパス

出力を指定せずに入力ファイルのパスだけ指定してやれば、動画ファイルの詳細を知ることができます。基本的な情報に加えて、Finderやエクスプローラーから直接確認できないコーデックも簡単に知ることができます。
出力指定しない場合は ffmpegよりもffprobeを使用することが推奨されています。

動画の変換

ffmpeg -i 入力ファイルパス 出力ファイルパス

動画を変換する場合、単純に拡張子を変えてデフォルトのコーデックに変換する場合は、上のように入出力のパスを指定すれば良いです。
コーデックを直接指定する場合などは、出力オプションに変換時に指定したいコマンドを入力します。

ffmpeg -i 入力ファイルパス 出力オプション 出力ファイルパス

使用できるコマンドはffmpegのサイトにあるドキュメントに記載されていますが、日本語でまとめているサイトもいくつかあります。「ffmpeg コマンド」などで検索するとわかりやすくまとめているサイトがいろいろあるので調べてみると良いと思います。

特に動画変換ではコーデックの変換をしたいという場面が多いのでコーデックを変える場合は「-vcodec」コマンドを指定して、

ffmpeg -i file.mp4 -vcodec hap file.mov

のように記述してやることでコーデックの変換(上の場合はHAPコーデック)に変換できます。

コーデック拡張子コマンド
X.264mp4libx264
H.264mp4h264
H.265mp4hevc
HAPmovhap

また、HapQやHapAlphaなどまで詳細に指定したい場合、「-format」コマンドを追加で指定して、

ffmpeg -i file.mp4 -vcodec hap -format hap_alpha file.mov
ffmpeg -i file.mp4 -vcodec hap -format hapq file.mov

など指定します。
このように、出力オプションは必要な分だけ追記していくことで指定ができるようになりますので、例えば「-vb (ビットレート)」コマンドや、「-r (フレームレート)」も指定することができます。

binファイル/shell scriptでプリセット化

Windowsを使用している場合、binファイルを作成してコマンドプロンプトに渡すことで、プリセット化させることができたり、複数ファイルをまとめて変換したりすることができます。

for %%f in (*.mp4) do (
ffmpeg -i "%%~nf".mp4  -vcodec hap "%%~nf".mov
)

たとえば上のようなbinファイル(拡張子が.bin)を作成してファイルをクリックすれば同階層内にある.mp4形式のファイルはHAP形式のmovファイルに変換されます。コマンドプロンプトを呼び出す手間と複数ファイルを個別に制御する必要がなくなるのでとても便利です。

Macの場合はShell scriptを使用して行います。

#!/bin/sh
for FILE in *.mp4
do
    FILENAME=`echo ${FILE} | sed 's/\.[^\.]*$//'`
    ffmpeg -i ${FILENAME}.mp4 -vcodec hap ${FILENAME}.mov
done

同様の操作を行いたい場合は、shell scriptファイル(拡張子が.sh)をこのように作ります。初期設定ではshell scriptの実行権限がないので、ターミナルを開いて、

chmod u+x shell script.shの絶対パス 

と入力してファイルに実行権限(x)を付加させます。ついでながら先述の通りファイルをターミナルにドラックしてやると絶対パスが表示されます。
Windowsのbinファイルのようにファイルをクリックするだけでは使用することができないので、結局ターミナルを開く必要はありますが、

cd 変換させたいファイルをまとめたフォルダの絶対パス

で、ターミナル内のディレクトリ移動を行った後に、Shell scriptファイルをターミナルにドラッグしてEnterを押してやることでbinファイルと同様の操作を行うことができます。

まとめ

基本的にVJ用途でffmpegを使うのはコーデック変換なので、そこを中心に書きましたが、もちろんffmpegは他の機能が嫌という程あるので、書ききれないですが調べてみるといいと思いますよ!!

参考
【ffmpeg】シェルスクリプトで一括変換
https://qiita.com/Yoshitaka_Youtuber/items/df1d14e56e652c25e6a4

VJカテゴリの最新記事