本日はFFMPEGを用いて、動画の圧縮方式(符号化方式)を変更することで、動画のデータサイズを減らしてみましょう。
動画のデータサイズを変更する方法としては、動画の縦横のサイズやフレームレートを変更しない場合、
- 圧縮方式を変更する
- ビットレートを変更する
の2通りの方法がありますが、今回は前者の方式の変更により、データサイズを削減してみたいと思います。
FFMPEGの実行バイナリファイルの入手方法については、以下の記事をご参照ください。
コーデック
コーデックとは、データの圧縮と復元を行うハードウェアやソフトウェアを示すワードですが、厳密ではないかもしれませんが、ざっくり言うと「圧縮方式」のことです。
一般的に、無圧縮の動画というのは非常にデータサイズが大きく、例えばYoutubeで見る動画や、スマホで撮影した動画は、大半のケースで何らかの圧縮方式で動画が圧縮されています。
圧縮方式は日々進歩を続けており、近年広く使われているのは「H.264」という圧縮方式です。その後、2013年にはこの後継の「H.265」が、2020年にはさらに後継の「H.266/Versatile Video Coding」がMPEGという標準化グループで標準化されていますし、最近はGoogle等が積極的に普及を進めている「AV1」などの新たな圧縮方式もあります。
ポイントは、動画の圧縮方式というものはさまざまあり、例えばパソコンやスマホで動画を再生したときに、我々はその動画が何の方式かを意識してはいませんが、とにかく何らかの方式で圧縮されているということです。
新しい圧縮方式は、一般に高性能です。高性能とは、少ないデータサイズで、綺麗な動画を保存できるということです。
では、新しい圧縮方式を常に使えばいいか? というと、状況はそう簡単ではありません。圧縮された動画を視聴するためには、保存されている圧縮された動画を元に戻す「デコード」という処理が不可欠で、すなわちデコードの仕方を知らないと動画を見ることができません。
よって、最新過ぎる規格は、それをデコードするための環境がPCやスマホに用意されていないことが多く、その観点で少し古いのですが「H.264」や「H.265」あたりが現在広く使われています。
FFMPEGで動画のコーデックを変更する
ここから本題ですが、FFMPEGで動画のコーデックを変更してみたいと思います。
今回はH.264(AVC)から、H.265(HEVC)に変更してみますが、再生に使っている環境にH.265のデコーダーが無い場合、この変換によって動画が再生できなくなる可能性もあるので注意してください。
また、今回はH.264で既に圧縮されていて、品質劣化が起きているものを再エンコードします。もし、圧縮を施していない元動画がある場合は、それを直接H.265で圧縮する方が望ましいと思います。
手順1:現在の動画のコーデックを確認する
一番簡単な方法としては以下のコマンドで確認ができます。
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

上の例ではコーデックが「H.264」であることがわかります。
手順2:動画のコーデックを変更する
では、動画のコーデックを変更してみましょう。今回はH.265(HEVC)に変更してみます。
その場合のコマンドは以下のように、「-c:v hevc」と指定をします。他のコーデックに変更したい場合はhevcのところを任意のコーデック名に変更してください。
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 -c:v hevc output.mp4
今回、H.264からH.265に変更したところ、データサイズが14000KBから2479KBまで削減できました。
補足:FFMPEGの対応コーデックを確認する
今回はhevcを選択しましたが、そもそも何のコーデックが使えるのかを確認するコマンドが以下です。FFMPEGのバージョン等によっても変わってくると思いますので、必要に応じ確認してみてください。
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 -codecs
上記のコマンドを実行すると大量のコーデックが表示されます。今回使用したhevcも、以下のようにH.265 / HEVCとして対応していることがわかります。

まとめ
今回はFFMPEGを用いて動画のコーデックを変更する方法について学びました。
パソコンのストレージの節約などの観点で、動画のサイズをコンパクトにしたい場合などがあれば試してみてください。