この記事を読むのに必要な時間は推定で最大約11分44秒で、速読ですとその半分ぐらいです。
H.265/HEVCで保存することにする
長らくH.264/AVCで動画データを出力して保存してきましたが、もうH.265/HEVCにしてもいいだろうと思うようになったため、今後はH.265/HEVCにしようと決断。どのような設定でMP4ファイル出力をするべきなのか、いろいろ設定を変えてみて出力設定を突き詰めていくことにしました。
出力は1回しか行なっていないため、出力にかかった時間の精度はあまり高くないかもしれません。ですので参考程度の目安です。ほかのアプリが一時的に高負荷になったりしたかもしれないので。まあ、Eコアは全部動画関連で使っていないので、ほかのアプリではEコアが空いていて優先的に使われるだろうからそれほど大きな誤差は発生していないと思いますけれど。
Android | 5以降で標準対応(ただし快適に再生できるのかはハードウェアによる) |
iOS/iPadOS | 11以降で標準対応 |
Windows | 10および11はMicrosoft Storeから120円で購入する必要あり ※2022年末ぐらいまでは無料で対応ハードウェアのPCには入れられた ※無料のMPC-BEやVLCなどの対応プレーヤーを使えば問題なく再生可能 |
検証で使用した環境
検証をするためのH.265/HEVCでのMP4ファイル出力は以下の環境で行なっています。
- 検証に使用したデータは23分40秒で解像度1440×1080のアニメ素材
- Windows 11 Pro 22H2
- Intel® Core™ i7-13700T(動画編集関連はPコアのみ使用してEコアは未使用)
- AVIUTL+TMPGEnc Video Mastering Works 7を使用(特に記載がない設定部分は初期値のまま)
AVIUTLはシーンチェンジ部分で映像が破綻している場所の修正などに使用し、保存したプロジェクトファイル(*.aup)をTMPGEnc Video Mastering Works 7で開いてMP4ファイルに出力しました。アニメ素材だったので、フィルターでインターレース解除も行なっています。
- 24fps 化(動き優先)
- 逆プルダウン(縞除去強化)
出力にはハードウェアエンコードを選択
まず最初に行なってみたのは、x265を使用したソフトウェアエンコードと、Intel Media SDK Hardwareによるハードウェアエンコードです。CPUの処理能力はどれぐらい追いついてきたのかなということで……。まあ、パフォーマンス設定を「とても遅い」にして行なうため、x265だとIntel® Core™ i7-13700Tにはキツいかとあらかじめ予想できたわけですが、予想以上の遅さでした……。
- x265 ▶️ 2時間57分💦
- Intel Media SDK Hardware ▶️ 13分26秒
圧倒的にハードウェアエンコードのほうが速いので、もうハードウェアエンコード一択です。なにしろ2023年の時点では電気代がおそろしく高いわけで、長時間高負荷状態となるのはさすがに避けたいと思うのです。
しかし、2013年の頃のIntel® Core™ i7-3770Kで以前H.264/AVCのハードウェアエンコードを行なった時には画質が妥協できなかったため、ハードウェアエンコードを行なうには画質のコントロールが重要だと判断して画質に影響を及ぼす設定を試してみてから決めることになりました。
画質に影響する設定項目
『TMPGEnc Video Mastering Works 7』で画質の調整をすることができる設定項目はそれほど多くありません。
レート調整モード
ビットレートを指定するモードにすると画質にバラツキができて、映像が破綻する部分が出たり、無駄にビットレートを消費してファイルサイズの肥大化が起こるため、品質ベースでのレート調整を指定します。
- VBR(固定品質)VBV 無し
- VBR(固定量子化)VBV 無し
上記のどちらかを使うわけですが、本命は好みで画質を設定できる項目がある固定量子化のほうです。
パフォーマンス
『TMPGEnc Video Mastering Works 7』では細かい設定をユーザーが指定することはできません。パフォーマンスで処理にかかる時間から選んで画質を調節します。処理速度の指定から自動的に細かい設定の変更が行なわれ、遅いほど画質と圧縮効率が高まります。自分はいつもとても遅いの指定です。
- 最速
- 高速
- やや速い
- 標準
- やや遅い
- 遅い
- とても遅い
なお、x265でのエンコード時には、UltraFastとSuperFastも選べるようになっています。
GOP構造
GOP(Group of Picture)も画質に影響してきます。基準となる映像に使うI-Frameと、映像の変化した部分を記録するP-FrameとB-Frameで構成されているグループ構造です。一般的にはI-Frameが多いほど画質が向上しますが必要なデータ量が増加するため、I-Frameを増やすとファイルサイズも大きくなります。
- GOPの標準フレーム数(初期値250)
- GOP内でのBフレーム数(初期値2)
『TMPGEnc Video Mastering Works 7』では標準フレーム数にI-Frameがひとつ入ります。B-Frame数は連続するB-Frameの数の指定で、0~2の範囲で指定しなければなりません。出力されるファイルサイズを考慮すると普通は初期値のままにしておくのがよいかと思われます。
今回検証に使ったデータはアニメで23.97fps化するため、GOPを1秒ごとにするのであれば近似値の24にするのがよさそうですが、自分はそこにはこだわりません💦
VBR(固定品質)VBV 無し
手始めに品質を50に固定してGOP 標準フレーム数を変更して出力してみた結果となります。画質的にはフレーム数32以外はよろしくないって感じでしたね。
GOP 標準フレーム数 | 出力されたファイルサイズ | 出力にかかった時間 |
32 | 148MB | 0:12:42 |
48 | 128MB | 0:12:59 |
64 | 117MB | 0:12:46 |
250 | 94.2MB | 0:13:26 |
次にGOP 標準フレーム数を64に固定して、品質を変更して出力してみた結果です。フレーム数は初期値の250で計測するつもりだったのですが、64から250に戻すのを忘れてバッチ登録をして出力してしまうというミスをしたため、64での結果掲載となっています💦
元のMPEG-2データが約1.4GBだったため、半分程度にしかならない品質70は過剰品質であり、品質85なんかは元データよりもかなり大きくなったため論外という結果でした。品質55と60は画質も良好で安心して使えそうな設定です。
品質 | 出力されたファイルサイズ | 出力にかかった時間 |
(初期値)50 | 85.4MB | 0:12:49 |
55 | 187MB | 0:13:32 |
60 | 270MB | 0:12:47 |
70 | 707MB | 0:13:18 |
85 | 2500MB | 0:13:46 |
VBR(固定量子化)VBV 無し
固定量子化の設定を決め打ちし、GOPの標準フレーム数だけを変更してどのようになるのか試してみた結果です。フェードイン・フェードアウト部分と暗部は、GOP 標準フレーム数が48がギリギリ許容できるかなという感じとなり、それ以上だと映像が気になるほど破綻する部分がありました。
GOP 標準フレーム数 | 出力されたファイルサイズ | 出力にかかった時間 |
24 | 104MB | 0:11:53 |
32 | 97.3MB | 0:12:03 |
48 | 88.6MB | 0:12:27 |
250 | 77MB | 0:13:26 |
512 | 75.2MB | 0:13:15 |
1024 | 74.5MB | 0:12:15 |
固定量子化を「I-Frame:25, P-Frame:30, B-Frame:30」にしてあるのは、今回の検証とは別のデータで過去に行なっていた実験に基づいた選択結果です。過去に試していた固定量子化の検証結果も参考用に掲載しておきます。
I-Frame | P-Frame | B-Frame | ファイルサイズ | 時間 |
23 | 23 | 23 | 522MB | 0:10:34 |
24 | 28 | 32 | 206MB | 0:21:33 |
24 | 32 | 40 | 126MB | 0:20:13 |
28 | 28 | 28 | 267MB | 0:15:21 |
I-Frame | P-Frame | B-Frame | ファイルサイズ | 時間 |
24 | 28 | 28 | 166MB | 0:12:41 |
25 | 30 | 30 | 122MB | 0:14:31 |
28 | 32 | 32 | 91.7MB | 0:11:56 |
この設定に決めた!
バランスを考慮して、『TMPGEnc Video Mastering Works 7』のIntel Media SDK HardwareでのH.264/HEVCの出力設定は以下のようにして運用することにしました。
- VBR(固定量子化)VBV 無し
- I-Frame:25
- P-Frame:30
- B-Frame:30
- とても遅い
- GOPの標準フレーム数:32(後日見直してアニメを24、実写を30にする可能性があるかも?)
うーむ、Intel Media SDK Hardwareでもシーンチェンジ検出をできればいいんだけどなぁ……。
出力設定を元に戻すことはないと思いますが、x264を使ってH.264/AVCで保存していたときの設定は以下の通りとなります。編集時にシーンチェンジの判定を変えたほうがよさそうかなと感じたときには、稀にシーンチェンジ検出感度を変更していたけれど、ほかはほとんどいじっていませんね💦
- VBR(固定品質)
- とても遅い
- Bフレームピラミッド:厳密(MPEG詳細設定内)
コメント