4K HDRのビデオを正しく再生する方法

DisplayHDR 600対応の4Kモニタを買いました。いろいろビデオを見て喜んでいるのですが、4K HDRで60pのビデオがカクカクして再生できません。縦1440のビデオなら問題ないんですけど。
解決策を探すも解決できず、Sandyおじさんに4K HDR 60pの再生は難しいと諦めていますが、パソコンでHDRを再生するのが厄介だとわかってきたのでまとめておきます。


この記事公開時の私のPCの環境を紹介しておきます。
  • CPU i7-2600K
  • GPU GTX1070 8GB
  • OS Windows 10 Pro バージョン 1809
のSandyおじさんです。CPU以外は新しいものを使っています。

Zen2へ向けて4Kモニタを買いました。
関連記事:DisplayHDR600対応のLG 32UL750-Wを買いました

早速HDR(ハイ・ダイナミック・レンジ)なビデオをYoutubeなどで見ています。

4K HDR 60pなビデオがカクカクしている

いくつかのビデオはカクカクしてしまいスムースに再生できません。
例えばこのビデオがスムースに再生できません。
ネットワークが遅いからかな?と思い、フリーなHDRビデオサンプルを落としてパソコン上で再生しようとしました。
するとパソコンでHDRビデオを再生するにはいろいろ設定が必要だと判りました。また、私の環境では4K HDR 60pのビデオをスムースに再生できません。30p以下なら問題ないようです。
このあたりの情報を整理してみます。

本当にHDRで再生できていますか?

もう4K HDRビデオを問題なく見ているよ、という方も多いことでしょう。しかし、確認した方が良いことがあります。
あなたのそれホントウにHDRですか?

初めてHDR対応モニタを使っているためHDRとは何か?が判らず再生環境を整えるのが難しいです。4K HDRをまともに再生できないのでネットで検索しますが日本語の情報はほぼゼロです。海外のフォーラムではちらほら話題に上がります。しかしそのやり取りを見ると正しく問題を認識していないようなやり取りが見受けられます。
ほとんどの場合こんな感じ。
  1. 4Kビデオがカクカクなんだけど?
  2. 俺も
  3. 俺のとこ問題ないよ
  4. LAV Filters使え
  5. madVR使え
  6. VLC使え
  7. 使ったけどダメだよ
  8. 俺は解決したよ
という流れがほとんどです。
私の勝手な推測ですが、解決したという人はHDRではなくSDR(今までのビデオ)として再生していると思われます。
私の環境でもSDRとしてならカクつくこともなくスムースに再生できます。

HDRかSDRか?見分けるのは難しいです。
最も基本的な事はWindowsでHDRを有効にすることです。ビデオドライバの設定をいじるとHDRが無効になる事が多いです。
DisplayHDR 600のモニタを使っているとHDRが無効になると画面が眩しくなるのですぐに気づくことができます。輝度の低いHDR対応モニタの場合、HDRとSDRの差があまり生じませんから気づかないかもしれません。

ビデオ再生になるとさらに判断が難しくなります。そもそもHDRでどのように表示されるのか知らないから判断できないのです。眩しいとか派手とか言うのは判断材料になりません。輝度の高いモニタではSDR再生する方がHDR再生より派手に見えるからです。

4K HDRビデオを再生する方法

4K HDRビデオをHDRとして再生する方法を整理しておきます。簡単、確実な方法から紹介してみます。

Chromeを使う

最も確実にHDR再生する方法はChromeを使うことです。Youtubeを見るだけではなくパソコンに保存されたWebM形式のファイルをChromeにドロップすると再生できます。
そしてHDRコンテンツならばHDRとして再生してくれます。

先にカクつくと紹介したビデオを私の環境ではスムースに再生できていません。2秒ほど再生して1秒ほど止まるを繰り返します。

VLC media playerを使う

VLCのバージョン3.0からHDRビデオの再生に対応しています。
VLC media player | VideoLAN
この記事公開時のバージョンはVersion 3.0.7.1 です。最新バージョンをインストールしてください。Windowsストアからインストールしろ、という画面が出てきますが無視してインストールしてください。
何も設定しなくともHDRビデオをHDRとして再生できます。以前から使っている方は既定の設定に戻す事をおすすめします。

問題のビデオは他のプレーヤーに比べてまともに再生できていますが、画面が壊れブロックノイズが画面に表示されてしまいます。Iフレームで画面が復活する感じ。

MPC-BEなど詳細設定可能なプレーヤーを使う

私は普段MPC-BEでビデオ再生をしています。これでHDRビデオを再生できるのが一番良いのですけれど・・・
Media Player Classic - BE | sourceforge
この記事公開時の最新バージョンは1.5.3です。
MPC-BEをインストールしただけの状態でHDRビデオを再生するとSDRとして再生されます。HDRビデオを読み込むことはできますがHDRとして再生する事はできません。
先の問題のビデオファイルもMPC-BEでSDRとして再生する事ができます。スムースに再生できます。

MPC-BEでHDR再生をする設定を紹介します。

LAV Filtersは必須ではない?

海外フォーラムで見かけるLAV Filtersを外部フィルタへ追加しろというのはあまり意味がないようです。
LAVFilters | GitHub
LAV Filtersはビデオファイルを読み込みパソコンのメモリーへ展開する役割を担います。その読み込みにハードウエア支援が使えるので盛んに使われています。
しかし現在のバージョンでは、SDRとして普通に再生できているようにHDRビデオの読み込みに問題はありません。ハードウエア支援も適時行われているようです。
HDRの付属情報を読み込むのかという点に疑問は残るので気持ち悪ければLAV Filtersを使います。HDRという設定項目があるからです。

ちなみに、LAV Filtersを使ってもビデオがカクつく症状は改善されませんでした。ですので使い方の説明をここではしません。

madVRをインストールする

この記事公開時、HDR再生をするためにはmadVRを使う必要があります。
madVR
madVRの使い方などはこちらも御覧ください。
関連記事:パソコンでビデオを高画質再生するmadVRビデオレンダラを使ってみる

madVRをインストールしたらMPC-BEでmadVRを使うように設定します。関連記事で紹介しているようにMPC-BEのビデオレンダラでmadVRを選択します。

あるいは外部フィルタとしてmadVRを追加し、レンダラにはEVR(custum presenter)を使い排他スクリーンを有効にして使う方法もありますが、説明が面倒なのでやりません。

madVRでHDR再生する設定

madVRを使っただけではHDRとして再生できません。設定をします。
madVR HDR settings
接続したモニタの”hdr”項を開きます。
"passthrough HDR to display"を選びます。
”send HDR metadata to the display”をチェックします。
madVR HDR settings
”rendering”→"general settings"項を開きます。
"use Direct3D 11 for presentation"をチェックします。

これでHDRとして再生されるようになります。

【2020/05/21 追記: mpv.netがオススメです
関連記事:Windows最強のメディアプレーヤ Anime4Kも動くmpv.netを使おう

HDRの再生にはビデオレンダラーの対応が必要

HDRの再生にmadVRを使う理由は何でしょうか?
ビデオファイルを読み解き最終的な画面を作るのがビデオレンダラーです。ビデオレンダラーがHDRとして画面を作ってくれなければSDRとして表示している事でしょう。

この記事公開時、HDRとしてビデオレンダリングをしてくれるレンダラーはmadVRしかないようです。そのため、madVRを使っています。

より正確にはDirect3D 11がHDR画面を作っています。VLCもDirect3D 11で表示しているようです。またこれはWindows 8以降でなければHDR再生できないということです。
Direct3D 11以降を使うビデオレンダラーが増えれば今の状況は改善されていくでしょう。

まとめ

i7-2600Kでは4K HDR 60pのビデオをなめらかに再生できていません。HDRではなくSDRとして再生する事はできます。CPU使用率はどちらも100%に張り付いています。
コンピュータの処理としてHDRとSDRの違いはほぼ無いと思うのですがHDRではカクカクしてしまいます。なぜなんでしょうか?何かご存知ならコメントいただけるとうれしいです。

HDR対応モニタを買ったからと言ってHDRでビデオを再生するのは思いのほか面倒だと判りました。面倒を避けるにはChromeかVLCでビデオを見ることをおすすめします。

WindowsでHDRを表示するにはDirect3D 11以降を使う必要があるようです。Direct3D 11より前の時代のビデオレンダラーではHDRの画面を作ることができません。SDRとして再生する事になります。
HDR関係のトラブルの情報がとても少ないです。まだそんなにユーザーがいないのでしょうか?日本語の検索結果なんかほとんどありません。
感じからするとSDRで再生している事に気づいていないのでは?と思います。HDRで再生できてるよ!と思っている方。もう一度確認する事をおすすめします。

HDR対応モニタをHDR設定せずにSDRで表示する方が派手で明るい画面が表示されます。また、輝度の高くないHDRモニタの場合、HDRとSDRの違いはほとんどわからないでしょう。
輝度の高いHDR対応モニタをSDRとして使うと眩しくてみていられないほどです。HDRとして設定することで適切な明るさで表示されます。HDRビデオはここぞという時に最高輝度を使います。ただの明るビデオではありません。
WindowsをHDRに設定してもプレーヤーによってはビデオをSDRとして全画面表示します。そしてモニタはSDRモードに切り替わります。するとHDRではないのにモニタの最高輝度まで使ってビデオを表示します。これをHDRだと勘違いするかもしれません。

HDRビデオを作る側もHDRの理解が不足しているようです。YoutubeでHDRと銘打つビデオのほとんどがSDRなのはなぜ?
この混乱が収まるまでまだしばらくかかりそうです。



コメント

  1. 良い記事です。また、現在PC上でHDRの再生において様々な問題が発生していますが(そして大抵それらは問題が起きているユーザーの環境が原因です)、それに困った様がよくわかります。
    まずYoutubeのHDR映像がカクつく原因ですが、これは簡単。GPU(1070)がVP9 10bitに対応していないからです。YoutubeのHDR映像はVP9 10bitなので、対応するGPUはPascalの一部と、Turing世代に限定されます。

    映像ファイル(ただしhevc 10bit)が手元にあるのであれば、VLCを使うのが最も簡単な方法です。
    ついでMPC-BEやMPC-HCでしょうか。

    Youtubeの自称HDRが実際にはSDR、というのもそのとおりです。
    実際にHDRの映像を制作できるのはまだまだごく一部に限られます。

    返信削除
    返信
    1. こんにちは、コメントありがとうございます。ほんと情報が少ないのでうれしいです。
      最近、SandyおじさんからZen2おじさんになりました。
      Zen2とGTX1070では記事で紹介したBF5のビデオを、Chromeのハードウエア支援が有効な場合はHDRとして、無効ならSDRとして表示しているようです。HDRでもカクカクしません。
      Sandy Bridgeの時もカクカクですがHDRとして表示していたのでVP9 10bitがデコードできないのとは異なる原因だと思います。何がHDRとして表示させるのを重たくしているのでしょう?
      HDRで見るものが無いので困らないという寂しい現状もあります。

      削除

コメントを投稿

最近のコメント

Threaded Recent Comments will be here.