動画のエンコードで動画サイズをどう保持するかの実験

スポンサーリンク

 なんのこっちゃと言うようなタイトルになってしまったが、要は TS ファイルの様に 1440x1080 なんて感じの動画サイズを保持しつつ表示/再生時には 1920x1080 と引き延ばすような動画ファイルとするのか、若しくは素直に 1920x1080 まんまのサイズで表示/再生時と同一にするのかどっちがどう良いのか悪いのかを考えてしまったのでその実験となる。

なぜ考え始めたのか

 もう結構前になる話しだが、Handbrake を用いた適当エンコードでは TS ファイルと同様な形式で保持する動画サイズを 960x720 とし、表示/再生時には 1280x720 になるようないわゆる 720p な動画エンコードを行っていた。
 それに対して x264/x265 を用いたエンコードでは Avisynth 側で 1280x720 へリサイズし、そのままエンコードを行っていた。
 Handbrake と x264/x265 のエンコードではそもそも保持している解像度が違うので必要とするデータ量も勿論後者が大きいという事になる。
 x264/x265 を用いた保存用エンコでも Handbrake と同様に保持する動画サイズ自体を縮小して表示時に引き延ばすようにしたらどうなるだろうかと相成った。

どうやるか

 そもそも今まで何年も TS ファイルのエンコードをしてきたけど、x264/x265 に於いて引数に SAR 値を渡すことなんて一度も行ったことが無かった。指定せずとも保持しているサイズそのままに表示/再生する事は可能だからだ。
 例えば Avisynth で 960x720 とリサイズを行い、エンコード時に –sar 4:3 なんて与えてあげるとプレイヤーで再生させると 1280x720 に引き延ばして再生される。1280x720 にリサイズした場合では –sar 1:1 とすれば 1280x720 でそのまんま再生される。
 細かい SAR 値の算出方法は適当にググって情報を得たので気になる人はググってみると良いかも知れない。

実験してみる

 上述の様に動画サイズを 960x720 として SAR 4:3 でエンコした場合と 1280x720 のサイズをそのまま SAR 1:1 でエンコした場合の画質の変化とファイルサイズの変化を観察した。あとエンコ速度も。

画質比較

 ソースは TOKYO MX で放送中の某アニメ。x265.exe を用いた HEVC エンコードを行った物から特定フレームの特定箇所を切り取って比較する。

Size 960x720 SAR 4:3

Size 1280x720 SAR 1:1

 更にこの画像を 3 倍に拡大した物がこれ。
 左が 960x720 で保持して SAR 4:3 とした物で右が 1280x720 の SAR 1:1 の物。

 流石に拡大すると 960x720 SAR 4:3 とした方が引き延ばした分、若干細かい線がボヤけるが等倍で見る限り筆者個人として気にする必要も無いレベルであると思えた。

エンコード速度

 エンコード中の fps 表記は全く見てなかったので、エンコード開始から MUX 完了までのトータルで見ることとした。これは自作のスクリプトで表示させるようにしているのでそのままデータを持ってくることに。
 結果としては
  960x720 SAR 4:3 = 23 分 23 秒
 1280x720 SAR 1:1 = 29 分 18 秒
 となる。当然エンコードをする動画のサイズが小さければ計算量も減るからエンコードも速くなる。

ファイルサイズ比較

 アニメ本編のみ Trim した 23 分 59 秒の動画ファイルのサイズは次の通りに。
  960x720 SAR 4:3 = 251,539,679 Bytes (239MB)
 1280x720 SAR 1:1 = 299,649,026 Bytes (285MB)

これらの結果からして

 エンコードを行う上である程度の画質でとにかくファイルサイズは小さい方が良い、尚かつエンコードも速い方が良いというのが筆者のタイプなので今後は保存用エンコは 960x720 サイズで保持しつつ 1280x720 に引き延ばすようにエンコードして行くと決めた。
 エンコード時間が約 6 分も短縮出来るしファイルサイズも 46MB 縮む。画質の劣化は気にならないのだから小さくそして速くエンコード出来た方が良い。

まとめ

 動画サイズを 960x720 とし、x264.exe ないし x265.exe に引数として –sar 4:3 と与えれば 720p 動画のエンコードが速くなるしファイルサイズも縮む。その代わり若干ボケるけど動画として再生している分には無視出来るレベルの画質劣化に留まる。
 という事になる。

おわりに

 筆者は 720p にリサイズしちゃう人なんだけど、恐らく FullHD サイズでエンコードしたい人でも 1440x1080 で保持して SAR 値を 4:3 としたほうがエンコード速度やファイルサイズ縮小を実現出来るんじゃないかなと思う。
 鬼の様に画質に拘る人には向かないが、このレベルであれば全然問題ないわ! という方には是非この手法を試してみて欲しいかなと思う。

スポンサーリンク