パソコンでビデオを高画質再生するmadVRビデオレンダラを使ってみる

今時はパソコンでビデオの再生なんて普通にできると思うのですが、少しでも画質を良くしたいと思うのならmadVRというビデオレンダラーを使ってみると良いでしょう。
GPUの計算能力をフルに使って映像を最適に作ってくれるソフトウエアです。

ビデオエンコード時にビットレートをケチって画が荒れてるのが気になるとか、バンディングに悩んでいるならお勧めです。


ビデオレンダラーって何?

まず始めにmadVRはビデオレンダラーです。ビデオ(メディア)プレーヤーではないので単体でビデオの再生はできません。ビデオプレーヤーに組み込んで使うものです。
で、ビデオレンダラーって何?

ビデオ(メディア)プレーヤーは皆さんビデオを見る時に使っているでしょう。ビデオプレーヤーと言うのはビデオファイルを再生して映像をモニタ画面に表示するものです。ビデオファイルを選んだり、ファイルの再生をしたり、停止や早送りなどユーザーの操作に応じたりするものです。
この中にビデオレンダラーが組み込まれています。

ビデオファイルの中には映像が数学的に圧縮されて入っています。再生する時には圧縮を解除して画面に映し出す画を作らなくてはなりません。フルスクリーンで表示するのか、ウインドウに小さく表示するのかなど、人の目に見える画面を作るのがビデオレンダラーです。

madVRを使う理由は?

パソコンでもスマホでもビデオ再生ができているのに、何でわざわざmadVRとか使うのか?という素朴な疑問を持つでしょう。
それはmadVRがパソコンの計算能力をフルに使って画を作ってくれるからです。

モニタ画面の大きさや解像度に合わせるため、ウインドウで小さく表示して再生する、など画を作る時には拡大/縮小をしているのです。また、テレビやモニタでは受け取った映像を内部で独自に映像を加工して表示しています。多くのビデオプレーヤーは簡単な計算で画を作っていますし、テレビやモニタの中に高価な計算機は入っていません。

そこでパソコンのGPUを使って高精度な計算で画を作ってくれるのがmadVRです。
内部的に32bitの計算精度を持ち、より複雑なアルゴリズムで処理を行います。

madVRの使い方

最初にちょっと残念なお知らせです。
madVRは最近の高価なGPUが必要です。私はGTX1070で動かしていますが、なんでもかんでも機能をオンにすると計算が間に合いません。ファンはフル回転でうるさいです。
電気を食う割にその効果は判りずらいです。高性能なモニタを持っている人ほどありがたみは無いでしょう。

ですが、複雑な処理をしなければ安価なGPUでも動きます。特にバンディングが気になってる方は試してみる事をお勧めします。

madVRは単体では動きません。ビデオ(メディア)プレーヤーソフトに組み込んで使います。
どのビデオプレーヤーが使えるかはmadVRのホームページに書いてあります。
Systemsoftware Mathias Rauen
https://madvr.com/
madVR is a high quality DirectShow video renderer.
Designed as a no-compromise approach, madVR tries to achieve the best possible video playback quality.
私はMPC-BEを使っています。プロテクトされたDVD、BDの再生はできませんが、ほとんどのビデオファイル形式に対応していて再生できます。
【18/09/06追記
レンダラーを選択できるプレーヤーならば使える可能性があります。】

madVRのインストール

先ほどのホームページの左側にdownloadsという項目があるでしょう。そこからダウンロードします。この記事を書いた時のバージョンはv0.92.14でした。

ダウンロードしたファイルはzipファイルです。このファイルを解凍します。
madVRにはインストーラーがありません。解凍したフォルダをそのまま使います。フォルダは間違って削除しないような場所、例えばマイドキュメントなどに置くと良いでしょう。
madVR install.bat

解凍したフォルダの中にinstall.batがあります。このファイルを右クリックし"管理者として実行"をクリックするとインストールされます。
インストールはすぐに終わるでしょう。

次にビデオプレーヤーソフトウエアでmadVRを使うよう設定します。

MPC-BEでmadVRを使う

MPC-BEでmadVRを使う設定は簡単です。
MPC-BE madVR

MPC-BEのオプション画面を開きます。映像のビデオランダラーでmadVRを選択します。
これでビデオ再生時にmadVRを使うことになります。

madVRの設定

madVRには多くの機能があり最初は何がどうなっているか判らないでしょう。私も把握できてません。
効果のわかりやすい所だけ説明します。

ビデオプレーヤーでmadVRが動き出すとwindowsのタスクバーにアイコンが現れます。
madVR icon

アイコンをダブルクリックすると設定画面が現れます。
madVR Device

"devices"項には接続されたモニタに関する設定をします。この例では東芝の液晶テレビにつないでいます。
"device type"は"Digital Monitor / TV"を選びます。プロジェクタやCRTの設定もあるようです。ですが内部的にどう扱われるのか判らないので効能は不明です。

devices-properties項

madVR Devices Properties

"properties"ではモニタへ送り出す映像信号に関して設定するようです。

"the display expects the following RGB output levels"とあるのは映像信号の数値範囲の設定です。テレビの世界としては8bit(0~255)の中の16~235までで明るさを表します。16が真っ黒、235が一番明るい状態です。PCの世界では0~255の範囲を使う事ができます。当然0~255の方が明るさを細かく表現できます。
パソコンのモニタを使っている、あるいは意味が解っているならPC levelsに設定します。テレビをモニタに使っている、あるいは意味が解らないならTV levelsに設定しておきましょう。この設定が噛み合わないと黒浮き、白飛び、黒つぶれなどの原因になります。

"the native display bitdepth is" ではモニタの本来のビット深度を設定します。madVRの機能を発揮させるには重要な項目です。
通常ここは8bitを設定します。TN液晶やプラズマテレビの場合は6bitや7bitに設定する事も有効でしょう。

本来のビット深度とはモニタ/テレビの受け付けるビット深度の事ではありません。「うちのモニタは10bit入力できるから10bitを設定すれば良いのね」なんて言うのは間違えです。他のサイトのmadVRの解説でモニタの入力仕様に合わせて大きなビット数を設定するような記述がありますが、それは画質を落とす原因かもしれません。

モニタやテレビが受け付けるビット深度はモニタの内部で処理するビット深度とは一致しない場合が多々あります。10bitの信号を受け付けるけど内部では8bit分しか使わないよ、とか。
また、TN液晶パネルやプラズマテレビなどでは映像表示デバイスとしてのビット深度が8bitに満たない場合があります。8bitの映像信号をモニタの内部で加工して6bit程度のパネルにそれらしく表示するのがモニタメーカーの腕なのです。

madVRの考え方は、あらゆる映像の加工は強力な計算能力を持つGPUを使ったmadVRで行う、というものです。モニタやテレビは受け取った映像信号を自前の信号処理で綺麗に見えるように加工しますが、GPUとは比べようもない非力な演算とアルゴリズムで行っています。テレビやモニタの映像処理はできるだけオフにして、madVRの妥協のないアルゴリズムで画を作るという考えです。

そのため、本来のビット深度という意味は、表示デバイスの扱える本当のビット深度という事になります。内部処理10bitと宣伝するモニタを使っていたとしてもモニタ内部の処理では大した計算はやれません。
しかし、そんなビット深度は知りようもないですし、モニタやテレビ内部の画像処理を完全にオフにする事はできません。

ですから、通常ここは8bitを設定します。TN液晶やプラズマテレビの場合は6bitや7bitに設定する事も有効でしょう。

devices-calibration項

テレビ/モニタがキャリブレーションしてあるか設定します。
通常はキャリブレーションされていないので"disable calibration controls for this display"を選びます。

"disable GPU gamma ramps"はチェックしておきます。

devices-display modes項

テレビ/モニタへ送る解像度と垂直同期周波数をビデオソースに応じて切り替える設定をします。

"switch to matching display mode..."はチェックしておき”... when playback starts”を選びます。再生を始めるとビデオソースに応じて切り替わります。

"restore original display mode..."はチェックしておき"... when media player is closed"を選びます。メディアプレーヤーを閉じると元に戻ります。

"list all display modes madVR may switch to"に切り替えるモードをカンマ区切りで指定します。
私はフルHD解像度のテレビなので"1080p60,1080p59,1080p24, 1080p23"としています。モニタ/テレビの解像度と垂直同期周波数を指定できます。
モニタ/テレビ側で拡大/縮小処理をしないようにモニタ/テレビの実際の解像度を指定しておきます。

devices-color & gamma項

色空間とガンマ値の設定を行うようですが、動作を把握できていません。
設定を変えると微妙に映像が変わりますが、普通の視聴者は元の映像を知ることができないので正解がわかりません。また、ほとんどのモニタ/テレビでは色空間をどうしているか情報がありません。
私は"BT.709/601 curve"と"2.20"を選んでいます。

devices-hdr項

HDRに対する設定をします。madVRはHDR映像には何もしないかHDRではない映像へ変換します。
"let madVR dicide"で良いでしょう。
いかにして綺麗な映像をテレビ/モニタで再生するかを映像ソースからトータルに考えられた最近の規格なので余計な事をしないのが基本なのでしょう。

processing-deinterlacing項

インターレース解除の設定をします。
"automatically activate deinterlacing when needed"をチェックし、"if in doubt, activate deinterlacing"を選んでおけば良いでしょう。インターレースは解除されます。

processing-artifact removal項

画像処理で生じるノイズを除去する設定を行います。バンディング、リンギング、圧縮ノイズとランダムノイズの除去用の設定があります。
効果は良くわかりません。
使っているGPUのパワーと映像を見ながら有効にしていきます。

processing-image enhancements項

映像の強調処理をします。把握していません。
通常は使う必要がないでしょう。

processing-zoom control項

映画など上下に黒帯が付いた映像の時に使います。
映像部分を上に寄せたり、下に寄せたりします。空いた場所に字幕を移動したりします。
特にプロジェクタを使って観る時を想定しているようです。

scaling algorithms項

拡大・縮小時のアルゴリズムを選択します。
アルゴリズムの効果
アルゴリズムを選ぶとバーグラフが変化するでしょう。
薄緑は映像が綺麗になる効果の強さを表します。薄い赤は処理によりノイズが増える悪影響の強さを表します。
基本的に下側にあるアルゴリズムの方が映像が綺麗になります。しかし、より多くの計算を必要とします。
GPUの能力と相談しながらアルゴリズムを選びます。

scaling algorithms-chroma upscaling項

映像拡大時の彩度を補正するアルゴリズムを選択します。

scaling algorithms-image downscaling項

画像の縮小アルゴリズムを選択します。

scaling algorithms-image upscaling項

画像の拡大アルゴリズムを選択します。

scaling algorithms-upscaling refinement項

拡大処理後の映像の整形を行います。ボケをくっきりさせる設定のようです。

rendering項

最終的にモニタ/テレビへ送る画を作る部分の設定です。まだ把握できていません。
"ditherng"項以外は変える必要は無いでしょう。

rendering-dithering項

ディザリングパターンの生成アルゴリズムを選択します。
バンディングが気になる場合は変えてみると良いでしょう。

rendering-trade quality for performance項

計算を端折る設定です。映像の品質は下がります。
GPUが非力な場合に使います。

ビット深度とディザリング

madVRの最もわかりやす効果はディザリングでしょう。バンディング除去に効果があるかもしれません。少し紹介してみます。

こんな映像をサンプルに用意しました。

ディザリング無しでビット深度を変えてみます。
bitdepth
1bit,2bit,4bitと6bitにしてみました。
ビット深度1bitという事はRGB各色あるか無いかですので黒 赤 青 紫 緑 水色 黄 白の8色で画を作ります。ビット深度2bitならRGB各色4段階の明暗を表現できるようになるので64色、4bitなら4096色です。

青空に縞々が表れています。バンディングというやつです。
今回はグラデーションを表すのに色数が足りない場合の例です。他には例えば映像を拡大した時にも出ますが、それは元々縞だったのかグラデーションにすべきなのか判断できない事が原因になります。

色数が足りない場合はディザリングによって疑似的に色数を増やせます。色の面積を変えて色を混ぜます。青を2つ、赤を1つ並べると遠くから見ると青っぽい紫に見えます。

それではディザリングをしてみます。"Error Diffusion - option 2"を有効にしてみました。
bitdepth and dither
たった8色しかない1bit深度の映像でさえ、サムネイル画像では違いが判らないくらいになっています。
モニタ/テレビの内部でも同様な処理を行っています。モニタ/テレビのアルゴリズムが原因でディザリングが現れている場合は、madVRを使うことで改善できる可能性があります。そのためにはわざとビット深度を低くしてディザリングを有効にします。

ディザリングのアルゴリズムは複数あり必要な計算量も異なり、見た目の効果も違います。映像のソースによって得手不得手もありますので試してみましょう。

とは言え、この実験でもわかるように最近の高解像度のパネルと6bit程のビット深度以上もあれば違いを見分けるのは難しいと思います。

まとめ

madVRは画像処理の計算をできるだけ妥協する事無く行い綺麗な映像を作るものです。機能を有効に使うにはGPUが必須です。

モニタ/テレビの映像処理も避け、人の見る最終的な画をmadVRで作るという思想のレンダラーです。モニタ/テレビの映像補正やノイズ除去機能はすべてオフにして使う方が良いでしょう。

ちなみにGTX1070で私の設定でのGPU負荷はハイビジョン映像の再生時にこうなりました。
もうGPUのファンはフル回転です。ファンのノイズがうるさいです。映画やミュージックビデオ鑑賞には向かないかもしれません。

拡大/縮小による映像の乱れを少なくできるでしょう。
最近のハイビジョン映像では効果がわかりにくいと思います。SNSやビデオ共有サイトの動画を再生する時に効果があるかもしれません。

バンディングが気になる人には解決策になるかもしれません。

最近の高解像度モニタや4Kテレビの環境を考えるとわざわざGPUを買ってmadVRを使うメリットはありません。その予算はより良いモニタを買うことに使った方が効果的でしょう。
仮想通貨のマイニングをやめて使い道のないGPUがある、ゲーム以外にGPUの使い道を探しているなど、すでにGPUを持っているならば試してみると良いでしょう。

HDRモニタでHDR再生する方法を書きました。
4K HDRのビデオを正しく再生する方法
Anime4Kも試してみたい?
関連記事:4Kモニタを使っているならmpvとAnime4Kでビデオを再生しよう

コメント

最近のコメント

Threaded Recent Comments will be here.