このページについて
このページではffmpegを使って動画の容量を削減する方法について解説しています。
ffmpegのインストール
ffmpegのインストール・基本的な使い方についてを御覧ください。
ffmpegで動画の容量を削減する
ffmpegを使用して動画の容量を削減する方法はいくつかありますが、よく使うものと知っておくと便利そうなものを紹介。
フレームレートを減らす
フレームレートとは「1秒間に何枚の画像を使うか」という認識でOKです。自分がよく使っているCleanShot Xの録画データはだいたい60で、地デジだと29.97とか。使用アプリによってはfpsという項目で30とか60が選べるようになっていると思います。
通常、1秒間に表示する枚数が多ければ多いほど動画がなめらかに見えます。逆に枚数が少ないとなめらかには見えなかったりするわけですが、使用枚数が多い=容量の増加に繋がります。そこで-rや-fpsを使ってフレームレートを削減するというのが最初の方法です。
元の動画movie.mp4がフレームレート60で、半分にしたい場合は以下のようにします。
ffmpeg -i movie.mp4 -r 30 出力.mp4
-r フレームレートを指定するオプションです。上記の場合はフレームレートを30にしてねという記述になります。出来上がったものをffprobeで確認すると、fpsの項目が30になっていると思います。当然ですが、元の動画が30fpsのものを30fpsにしてもさほど意味はありません。
動画の縦横サイズを変更する
動画を共有する場所によっては、縦横のサイズが大きすぎる場合もあります。Youtubeとかだと大きなサイズで投稿するのも可能ですが、TwitterなどのSNSではそこまで大きくする必要はありません。
元の動画(movie.mp4)は横1920の縦1080の一般的な1080pで、これを半分にするには以下。
ffmpeg -i movie.mp4 -vf scale=iw/2:-1 出力.mp4
-vfにiw/2を指定することにより、自動で半分の大きさを算出しつつ横も-1を使うことで自動でアスペクト比を維持してくれます。-vfに関する詳細は以下をどうぞ。
-crfで動画の質を変更する
動画のフレームレートも変更せず、サイズも変更せずに容量をお手軽に削減するなら-crfオプションも有効です。これはConstant Rate Facterの略で、一定レート係数と訳されました。これを使うことにより動画全体の質を変更することで容量削減を刷ることが出来ます。
元の動画(movie.mp4)に対して共用範囲である28あたりを指定する場合は以下。
ffmpeg -i movie.mp4 -crf 28 出力.mp4
-crfは未指定だとデフォルトの23が使用され、0に近付くほど高品質に、最低数値の51に近付くほど低品質になります。そして0から17までは「見た目的にはそう変わらない」になり、28は妥協範囲になります。
ffmpegの関連記事
その他のオプションや使い方などは以下をどうぞ。