FFmpegの出力オプションを検証して、動画の圧縮率を調べてみた

スポンサーリンク
スポンサーリンク

どうも、じゃぶじゃぶ(@jbjbgame)です。

前回、FFmpegをインストールして簡単に使用できるところまで行いました。

FFmpegのインストール手順と使い方(Windows版)
どうも、じゃぶじゃぶ(@jbjbgame)です。最近、ブログのキャプチャ用に撮り貯めたプレイ動画が増えてきて、HDDがもうパンパンです。三 ;><)⁰動画編集ソフトは持っていますが、一つ一つ読み込ませてエンコードをかけるのでも一苦労で...

今回はFFmpegの豊富なオプションをいろいろ検証してみたいと思います。

 

スポンサーリンク

FFmpegの使い方

基本的な使い方

FFmpegの基本的なコマンドは以下の通りです。

一番シンプルな方法は「-i」の後に圧縮する動画のファイル名を指定して、スペース区切りで圧縮後のファイル名を記載すれば使えます。

 

オプション(抜粋)

FFmpegには多くのオプションがあり、すべてを使いこなすのは大変です。

今回は自分がよく使いそうな、動画の圧縮にフォーカスしたオプションを個人的にまとめてみました。

オプション概要
-i [ファイル名]圧縮するファイル名を指定– i C:\sample\input.mp4
-b:v [ビットレート数(kbps)]映像のビットレート数を指定-b:v 1200k
-b:a [ビットレート数(kbps)]音声のビットレート数を指定-b:a 100k
-r [フレームレート数(fps)]動画のフレームレートを指定-r 120
-s [サイズ(横ピクセルx縦ピクセル)]
※縦と横の間はx(小文字エックス)
動画のサイズを指定-s 1980×1080
-vcodec [コーディック]コーディックの指定-vcodec libx264
または
-vcodec libx265
-crf [固定品質]品質を固定モードにして指定-crf 20

動画を圧縮するための調整は大体揃っていそうで一安心。細かくオプションを指定することで浅く圧縮したり、逆にガッツリ圧縮をかけることも出来そうです。

 

FFmpegの検証

FFmpegの各オプションで圧縮して、出力結果がどれほどのサイズに圧縮され、また画像の品質はどの程度か検証してみます。

今回は以下の動画を使って検証していきます。

  • 容量:1.77 GB (1,910,356,178 バイト)
  • 動画形式:mp4
  • 動画の長さ: 01:01:08.72
  • サイズ:1280×720
  • コーディック:H264
  • ビットレート:4165 kb/s
  • フレームレート: 60 fps

動画はOBSでPS4ソフト「GhostOfTsushima」のプレイ動画を録画したものになります。

 

オプションを指定せず圧縮

まずは出力オプションを何も指定せずに圧縮してみます。

[出力結果]

圧縮処理の時間は「00:16:34.077」ほどかかりました。結構時間がかかりますね。

  • 容量:1.03 GB (1,116,530,496 バイト)
  • 動画形式:mp4
  • 動画の長さ: 01:01:08.73
  • サイズ:1280×720
  • コーディック:H264
  • ビットレート:2434 kb/s
  • フレームレート: 60 fps

出力オプションを何も指定しないと、コーディックやサイズ、フレームレートは元動画の設定を引き継がれて圧縮する仕様のようです。

動画の容量は700MBほど減りました。2分の1とはいきませんがまずまずの圧縮率です。

[画質比較]

動画に品質を比較しましたが、人の目で見てもほどんど劣化を感じさせません。ただ動画の縦横の幅を大きくしていくと、圧縮した方の動画には粗さが目立ち、流石に圧縮されている差が感じされました。

 

ビットレートを指定して圧縮

今度はビットレートを4165 ⇒1200kb/sに変更してみます。

[出力結果]

圧縮処理の時間は「00:14:15.234」ほどかかりました。

  • 容量:598 MB(627,396,701 バイト)
  • 動画形式:mp4
  • 動画の長さ: 01:01:08.73
  • サイズ:1280×720
  • コーディック:H264
  • ビットレート:1368 kb/s
  • フレームレート: 60 fps

[画質比較]

結構1200kb/sでも全然劣化が見られずびっくり!容量も4分の1近く削減されているのですごいです!!

 

フレームレートを指定して圧縮

フレームレートを60⇒30fpsにして圧縮してみたいと思います。これはさすがに画質は劣化すると予想。

[出力結果]

圧縮処理の時間は「00:11:38.786」ほどかかりました。

  • 容量:1.01 GB (1,090,127,263 バイト)
  • 動画形式:mp4
  • 動画の長さ: 01:01:08.72
  • サイズ:1280×720
  • コーディック:H264
  • ビットレート:2377 kb/s
  • フレームレート: 30 fps

[画質比較]

フレームレートを下げても思いのほか劣化はありません、というか元動画と比較しても全然違いが判りません。動画の知識が乏しいせいかフレームレートを下げるとフレーム数が下がってコマ落ちがひどくなるのかなぁ?と思っていましたが全然そんなこと無かったです。(;^^)

 

コーディックを指定して圧縮

コーディックをH264⇒H265に変更してみます。コーディックとはエンコードを処理するソフトウェアのこと。H265はH264の後継にあたるもので、圧縮率は10分の1らしいです。

[出力結果]

圧縮処理の時間は「00:31:18.826」ほどかかりました。今まで一番処理時間がかかりました。

  • 容量:537 MB(563,433,139 バイト)
  • 動画形式:mp4
  • 動画の長さ: 01:01:08.72
  • サイズ:1280×720
  • コーディック:H265
  • ビットレート:1228 kb/s
  • フレームレート: 60 fps

[画質比較]

静止画では分かりづらいですが、動画を見ると少し色味の荒さや動きのガサつきが目立ちました。単純にビットレートが少ないせいかもしれませんが。。。

個人的はコーディックH264でビットレート1200kにした方がきれいに感じました。

 

 

まとめ

今回、FFmpegを使いこなすため、オプションをいろいろ変えて圧縮した動画を比較してみました。

思いの他どの動画も劣化が見られず、ちゃんと容量は減っているので、これはかなり使えそうです。

個人的な使い方としては以下の感じで運用していこうと思ってます。

短期保管用:
 ・コーディック :H264
  または
 ・フレームレート:30fps

長期保存用:
 ・コーディック:H265
   または
 ・ビットレート:1200kb/s

次回は、Windowsバッチを使って動画の一括エンコードをするためのコードを組みたいと思います。

(。。。今からWindowsバッチの勉強をせねば、、、;><))

 

[次の記事]

【暫定版】FFmpegとWindowsバッチを使って、複数の動画を一括エンコードするプログラミングを作成する
どうも、じゃぶじゃぶ(@jbjbgame)です。前回、FFmpegの豊富な出力オプションを試して、動画の圧縮率を調べてみました。今回は、本来やりたかった複数動画の一括エンコードをするために、Windowsバッチでプログラムを組みたい...

 

error:Content is protected !!
タイトルとURLをコピーしました