ビデオコーデック AV1への対応をしてみるか?
WoLNamesBlackedOutは、HEVCを対象コーデックとして開発しています。
GeforceのインスタントリプレイがHEVCだったこと、FF14の推奨GPUはHEVCのハードウェアエンコードサポートしていたことなどが主な理由です。
しかしGeforce4000系以降では、AV1のハードウェアエンコードをサポートしています。
AV1の利用者は現状少ないのかもしれませんが、5000系なども発売され、今後徐々にAV1が主流になることも考えられるので、WoLNamesBlackedOutのAV1対応を考えてみます。
とりあえず現状のままAV1なMP4を読ませてみた!
試しにインスタントリプレイをAV1で録画して、WoLNamesBlackedOutに読み込ませてみました。
私の予想は次の通りでした。
- 読み込みでのCODECにHEVCを指定しているので、AV1は読み込めずエラー停止が異常終了するのではないか?
- AV1でのインスタントリプレイのMP4動画は、色空間がBT709になっていました。FF14はWindowsのオートHDR機能でHDR化されており、キャプチャした動画もHDR動画になっているので、BT709のまま処理すると白飛びするのではないか?
実際にアプリにAV1のMP4を読み込ませて処理してみたところ
- HEVCを指定しているにも関わらず、特にエラーなくAV1が読み込めた(ドライバー側で良い感じに対応してくれてる?)
- AV1の動画を、名前の黒塗りをすると、特に白飛びなどせず綺麗な画質で出力できた(BT709だから?)
- 名前の検出がやや不安定なのか、黒塗り範囲がややボワボワと大小している気がする。AV1動画を基にした学習データがないためか?
WoLNamesBlackedOutのAV1対応は
アプリの機能的には大きな問題もなく処理できてしまいました。
最初はコーデックの指定をHEVCからAV1にしないといけないな、とか、それならffprobeで読み込むファイルのコーデックを確認しないといけないな、とかちょっと直してみたりしていたのですが、実際にはプログラムの修正は不要ということに。
HEVCでは、HDR動画の場合、白飛び対策としてSDR画質(BT709)に色空間を変更してから名前検出と塗り処理を行っていて、その変換はCPUでの処理となるため処理速度上のネックとなっていたのですが、AV1ではオートHDRでも録画した動画はBT709のため、アプリの処理速度が稼げる方向に。
codec\画質 | SDR | オートHDR時 | 備考 |
---|---|---|---|
HEVC | BT709 | BT2020や | HDRで処理速度低下 |
AV1 | BT709 | BT709 | チラチラする?学習不足? |
今後、私もインスタントリプレイをAV1として、テストを継続しつつ、やはり検出精度の不安定さを感じるようであれば、AV1動画を基にした学習データを作成して、モデル更新ということになりそうです。
処理が速いので、WoLNamesBlackedOutでの利用を考えると、HEVCよりAV1推奨かもしれません。