本日はFFMPEGを用いて、動画のコーデックやビットレートを確認する方法について紹介します。
FFMPEGの実行バイナリファイルの入手方法については、以下の記事をご参照ください。また、今回の記事で使用する「ffprobe.exe」も以下の記事の方法で入手が可能です。
コーデック
コーデックとは、データの圧縮と復元を行うハードウェアやソフトウェアを示すワードですが、厳密ではないかもしれませんが、ざっくり言うと「圧縮方式」のことです。
一般的に、無圧縮の動画というのは非常にデータサイズが大きく、例えばYoutubeで見る動画や、スマホで撮影した動画は、大半のケースで何らかの圧縮方式で動画が圧縮されています。
圧縮方式は日々進歩を続けており、近年広く使われているのは「H.264」という圧縮方式です。その後、2013年にはこの後継の「H.265」が、2020年にはさらに後継の「H.266/Versatile Video Coding」がMPEGという標準化グループで標準化されていますし、最近はGoogle等が積極的に普及を進めている「AV1」などの新たな圧縮方式もあります。
ポイントは、動画の圧縮方式というものはさまざまあり、例えばパソコンやスマホで動画を再生したときに、我々はその動画が何の方式かを意識してはいませんが、とにかく何らかの方式で圧縮されているということです。
新しい圧縮方式は、一般に高性能です。高性能とは、少ないデータサイズで、綺麗な動画を保存できるということです。
では、新しい圧縮方式を常に使えばいいか? というと、状況はそう簡単ではありません。圧縮された動画を視聴するためには、保存されている圧縮された動画を元に戻す「デコード」という処理が不可欠で、すなわちデコードの仕方を知らないと動画を見ることができません。
よって、最新過ぎる規格は、それをデコードするための環境がPCやスマホに用意されていないことが多く、その観点で少し古いのですが「H.264」や「H.265」あたりが現在広く使われています。
ビットレート
ビットレートとはBit Per Secondの略で、bpsとも表記しますが1秒間のデータ量のことです。
動画のビットレートには映像ビットレートと音声ビットレートの2種類があり、映像ビットレートと音声ビットレートを合わせた値が動画ファイルの総ビットレートとなりますが、一般に映像のデータ量が大きいので、データサイズの面で支配的なのは映像ビットレートです。
コーデックとビットレートは何が違うのでしょうか?
実は、圧縮方式が決定されても、それで一対一で最終的に圧縮されたデータサイズが決まるわけではありません。
例えば圧縮方式に「H.264」を選択した場合においても、データサイズが少なく画質が汚いH.264の動画も作れますし、データサイズが大きく画質が綺麗なH.264の動画も作れます。
この度合いを決めるのがビットレートです。
「圧縮方式(コーデック):H.264+ビットレート低め」で圧縮を施した場合、画質は汚いもののデータサイズが小さめなH.264動画になります。
コーデックの良し悪しとは、このデータサイズとビットレートのトレードオフ性に優れるものが良いコーデックとされます。
すなわち、ある一定の品質の動画を生成しようとしたときに、H.264だと20Mbps必要だが、H.265だと10Mbpsで済み、H.266だと5Mbpsで実現できるとすると、これはH.266が優れたコーデックと言えます(処理時間等の問題は度外視します)。
よって、コーデックとビットレートは全く別の指標です。まずはコーデックを選択し、その上で要求される品質を基にビットレートを決定して、動画を圧縮します。
FFMPEGで動画のコーデックとビットレートを確認する
ここから本題ですが、FFMPEGで入力動画のコーデックとビットレートを確認してみたいと思います。
方法1:ffmpeg.exeを用いた確認方法
エラーが出ますが、一番簡単な方法としては以下のコマンドで確認ができます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ffmpeg -i input.mp4

「At least one output file must be specified」という、少なくとも1個は出力を指定するようにというエラーが出るので、想定された使い方ではありませんが、これでコーデックとビットレートを確認できます。
上記の例ではコーデックが「H.264」で、ビットレートが「12581 kb/s」であることがわかります。kはキロを表し、1000倍を示すので1秒あたり12581×1000ビットということになります。
方法2:ffprobe.exeを用いた確認方法
FFPROBEは、ffmpeg で表示される以上のことを調べる際に使うもので、FFMPEGに同梱で実行バイナリファイルが提供されています。
FFPROBEを使って確認する場合は、以下のコマンドで確認ができます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ffprobe input.mp4
個人的には、FFMPEG.EXEは手元にあるけれども、FFPROBE.EXEはダウンロードしてこないといけない場合は、方法1を使う方が簡単だと思います。
まとめ
FFMPEGを用いてコーデックとビットレートを確認する方法について紹介しました。
FFMPEGを用いて動画の圧縮等をしたい場合に、元のコーデックやビットレートがどれくらいなのかを知ることは非常に重要ですので、知りたい場合には紹介した方法で確認してみてください。
FFMPEGで実際にビットレートやコーデックを変更し、データサイズを減らす方法については以下の記事にまとめましたので、参考にしてみてください。