as the Wind Blows ...

パソコン、プログラミング、車、写真、etc...

動画エンコード環境改善 (1)

何もせずに放置中のこのブログですが、ちょっとメモしておこうと思った出来事があったので書き留めておきます。

 

私の自宅には自作サーバーが稼働していますが、普段はキーボードやマウスはもちろんモニタも接続されていません。そのため、普段はノートパソコンを使用しています。しかし約9割の作業はサーバー上で稼働するVMリモートデスクトップ接続して使っています。ノートパソコンでの作業はせいぜい動画をチェックするときくらいですね。

 

このようにしている理由は仕事柄どうしても海外出張が多く、多い時では1か月くらい自宅から離れるということが年に数回あったりするためです。その場合、プライベートのノートPCを出張先に持ち込むのも面倒なので、自分のパソコンではない環境からも普段の自宅環境に接続できるように工夫しています。

 

自宅サーバー上にはVMが常時5~8つくらい稼働しています。Linux VMが2つ(Linux Serverと各VMのバックアップ、リストア用サーバー)とWindows VMが3つ(普段使いPC、録画PC、テスト用PC)+作業中のテスト環境VMが0~3つ程度。

 

今回の環境改善はこの中の録画PCについてとなります。

この録画PCではパススルーされたPT3が動作しており、必要な番組をTS形式で録画しています。録画した番組は高画質で保存しておきたいものはそのままTS形式で保管、その他は定期的にH264のmp4形式にエンコードしています。

 

一時期はAvisynth でフィルタを組み合わせてエンコードしていたのですが、あまりエンコードに割ける時間が無くなってきたこともあり、しばらく前から超絶便利なAmatsukazeに移行しています。しかし自宅サーバーのメインCPUはいまだにi7-4770sの第4世代Haswell CPU。。。できるだけ高画質にエンコードすべく低速でエンコードしているため、1時間ドラマを1本エンコードするのに8時間程度かかることもざらにあります。そのため、いつのまにか自宅で動画エンコードするのをあきらめている自分がいました。

 

一方で別のネットワークから完全に切り離されている場所に私が自由に使える普段は特に何も使っていないガチのXeonサーバーがあります。CPUはXeon Gold 6240 x 2、メモリ512GBという家庭用PCとはかけ離れたスペックです。このサーバー上で自宅と同じ設定でエンコードしてみると、並列処理できることもあり、1時間ドラマ1本あたりの処理時間は約20分!そのためあまり大きな声では言えませんが、番組を3か月分ほど撮りためたら、定期的にそこに持ち込み一晩エンコードさせてもらうと朝には全部終わっているという使い方をさせてもらっていました(頻繁には使わないという条件でもちろん許可は取っています)

 

しかしこの状況を一変させたのがコロナです・・

そもそも私の海外出張もなくなっているのですが、このXeonサーバーへのアクセスも原則リモートワークの方針により制限がかかるようになりました。そうなると録画したエンコード待ちTSが溜まっていく一方です。

 

これはなんとかせねば。

自宅サーバーを新しく作り直す選択肢も考えましたが、職業柄AMDのCPUを使うという選択肢はあり得ません。一方で、今更インテル14nmのCPUを購入してこの先数年にわたり使い続ける想像もできませんでした。先日インテルからアナウンスありましたが、7nmのCPU開発には遅れが出ています。初の10nmのデスクトップ向けCPU、Alder Lake-Sは順当にいって来年末に発売になるでしょう。となると今買うべきCPUがありません・・。

 

となると選択肢はハードウェアエンコードに頼るしかありません。

ハードウェアエンコードの選択肢はインテルCPUのQSVかNVIDIA GPUのNVEncの2択かと思います。今使っているi7-4770sはIntel HD Graphics 4600がのっており、QSV H264には対応していますが、H265には非対応です。

ESXiでIntel HD Graphics 4600をパススルーし、VM上でQSV H264をテストしてみましたが最低限のフィルタ処理を入れて60fpsが限界でした。iGPUにはまだ余裕があるためボトルネックはCPUのデコード処理です。フィルタ処理を外すと80fpsまで上がるので、このあたりがi7-4770sのQSVの限界かなと予想します。

この状態でも今までの処理性能が平均で4fps、改善後80fpsのため20倍の改善なのですが見た目での比較でも、SSIMでの比較でも画質は多少ですが悪くなる傾向にありますので、速度は許容範囲ですが、画質には不満があります。

 

そのため今まで消費電力と騒音を理由に選択肢から無くしていたNVIDIA GPUによるハードウェアエンコードの実力を試してみることにしました。そこで自宅サーバーの小型キューブケースにギリギリ入るサイズのMSI GeForce GTX 1660 Ti AERO ITX 6G OCをポチって見ました。明日届く予定です。

 

期待する結果は下記ですが、さてどうなるか検証してみたいと思います。

  1. GPUファンの騒音はVMの電源を切っているときはほとんど気にならない。
  2. GPUエンコード中のファン騒音は仕方が無いと割り切るが、夜寝ているときにしかエンコードしないので、騒音は許容できる範囲内に収まる。
  3. 消費電力は、改善前のSWエンコード時よりは改善後のハードウェアエンコードのほうがトータル電力は少なくなるはず。
  4. エンコードにかかる時間は現状よりも大幅に短縮できるはず。
  5. ソフトウェアエンコードからハードウェアエンコードに変更することで、画質の劣化は想定されるが、H264からH265に変更することでビットレートあたりの画質向上により、許容範囲内に収まる。