ラベル 4K の投稿を表示しています。 すべての投稿を表示
ラベル 4K の投稿を表示しています。 すべての投稿を表示

2016年1月4日月曜日

NVIDIA 製 GPU の動画再生支援機能について【動画をハードウェアアクセラレーションで再生する】

NVIDIA 製 GPU の多くのモデルには、YouTube などの H.264 (AVC) 動画を再生支援してくれるデコーダーが搭載されています。

昔はこのビデオデコーダーは "PureVideo" や "PureVideo HD" などと称されていて、公式サイトにもモデルごとの機能の一覧が載っていました。

しかし、困ったことに現在ではあまり大々的にはこういったビデオデコーダーの仕様は記載されないようになっているようなのです。

理由は NVIDIA のみが知るというよりありませんが、CPU によるソフトウェアデコードでも十分なパフォーマンスが得られるようになってきて、あまり有難がられないからではないかと思います。

といっても現在でも新しい世代の NVIDIA 製 GPU ほど、続々と高性能・高機能なビデオデコーダーが搭載されるようにはなっています。といっても公式にその機能の名称がつけられているわけではなさそうです。

世代

NVIDIA 製 GPU のビデオデコーダーはいくつか世代によって機能・性能が分かれており、現在のところ第 7 世代まであるようです。

上述の通り、公式名称はないため、例えば第 5 世代のデコーダーは俗に "PureVideo HD 5" or "VP5" などと称されているようです。

参考
Nvidia PureVideo

VDPAU Feature Set

ところで、NVIDIA は Linux などの UNIX 系 OS のサポートも行っており、それらの環境から GPU のビデオデコーダーを利用するための API は VDPAU (Video Decode and Presentation API for Unix) と言います。VDPAU は NVIDIA 公式の呼称です。

参考
VDPAU

そして GPU が搭載しているビデオデコーダーの世代によって機能は違いますので、機能別に例えば VDPAU Feature Set A や VDPAU Feature Set B などとして公式に分類されています。

Feature Set A は俗にいう "PureVideo HD 1"、Feature Set B は "PureVideo HD 5" におおむね相当しています。

この分類は Windows ユーザーにも十分役に立つと思います。なぜなら、ハードウェアに搭載されたビデオデコーダーが UNIX から利用できて、Windows からでは利用できない仕様になっているということはおおよそないと思われるからです。

自分の NVIDIA 製 GPU がどの世代のデコーダーを搭載しているのかを知るには以下の公式サイトが役に立ちます。

Appendix A. Supported NVIDIA GPU Products

これからわかるように、モデルナンバー上の世代とビデオデコーダーの世代は必ずしも一致していません。

ビデオデコーダーの性能の目安

VDPAU Feature Set の分類は機能を表していますが、あくまでも上限の画素数やコーデックについてです。

これは 同じ世代でも GPU の動作クロックなどといった要素によってさまざまなため、どれぐらいの性能があるかは明示されていません。

YouTube 動画での目安としては以下のようなもののようです。

Feature Set A B,C は仕様としてフル HD 程度の画素数まで対応しています。

Feature Set D のデコーダーは前世代のデコーダーに比べると性能が非常に高く、また 4K 画素数のデコードに対応しています。手持ちの Quadro K2100M だと大体 3840 * 2160 の YouTube 動画は 30 Hz なら余裕で再生できますが、60 Hz は完全に無理です。40 Hz 程度が限界のようです。

Feature Set E のデコーダーは性能がさらに高くなっています。Digital Cinema Initiatives という団体による 4K のもう 1 つの定義である DCI 4K (4096 * 2160 画素) のデコードに対応しています。

Feature Set F では H.265 (HEVC) のデコードに対応しているようです。

2016年1月2日土曜日

YouTube で 4K 動画を再生するための条件とは?【4K 動画が再生できない原因】

YouTube では 2160p (4K 画素数 3840 * 2160) の超高画素動画に対応しています。

ただ、環境や視聴するブラウザーによっては 4K の動画でも 1080p が上限になったり、60 Hz にならなかったりと不思議に思ったので、必要条件を個人的にいろいろ調べてみました。



その結果ですが・・・どうやら、YouTube を利用できるすべてのシステムやソフトウェアで 4K 動画を視聴できるわけではないようです。

以下の 条件が必要になっていると思われます。これらの条件が満たされていないシステムでは、そもそも 4K 画質の選択肢自体が表示されません。

なお、ここで書いているのは YouTube の画面に 4K の選択肢が出ない場合の対処法に過ぎないため、CPU や GPU の能力が足りずに 4K 動画を十分な品質で視聴できない場合もあります。それについては次回書きます。

これらは投稿日現在の情報で、正確性は保証されません。また、これ以外にも条件はあるかもしれませんが、ご了承ください。

60 Hz で再生できる条件 HTML5 に対応したブラウザー

YouTube 動画をウェブ ブラウザーで視聴する場合、Flash Player を利用して視聴する場合に選択できる画質は 4K の30 Hz が上限となっているようです。

1080p (1920 * 1080) 60 Hz、1440p (画素数 2560 * 1440) 60 Hz、4K 60 Hz などといった画質は HTML5 プレイヤーからのみ選択できます。

つまり HTML5 に対応した Google Chrome や Mozilla Firefox などといったブラウザーが必要です。

4K 60 Hz 動画の場合の追加条件 vp9 コーデックに対応したブラウザー

動画が 30 Hz (30 fps 毎秒 30 コマ) 以下の場合には、H.264 (avc) コーデックまたは vp9 コーデックで 4K 動画を利用できます。

しかし、動画が 60 Hz (60 fps) の場合は vp9 コーデックのみ利用できます。H.264 は利用できません。

つまり 60 Hz の動画を 4K 画質で視聴するには、Google Chrome や Mozilla Firefox などといった vp9 コーデックに対応したブラウザーが必要です。

コーデックに関する注意点として、YouTube 動画が 60 Hz の場合で、視聴する側のブラウザーが HTML5 に対応していながら vp9 に対応していない場合、1080p までしか選択肢に表示されません。

ブラウザーが vp9 に対応していなくても、YouTube 動画が 30 Hz の場合は 4K 画質も選択肢に表示されます。

つまり、YouTube では動画が高画質なフォーマットだと、視聴するブラウザーによってはかえって利用できる画素数が低くなってしまうという場合もあるので注意してください。

以下の補足を見てください。

補足 YouTube 動画が 60 Hz かつ視聴する側のブラウザーが vp9 に対応していない場合



画像は上下ともに同じ 4K 60 Hz 動画を HTML5 プレイヤーにより視聴している様子です。動画を右クリックすると表示できる詳細統計情報 (Stats for nerds) を表示させています。

上の動画は vp9 に対応した Firefox で視聴した場合で、4K の選択肢が現れており、4K で視聴している状態です。

Resolution:3840 x 2160@60
Mime Type:video/webm; codecs="vp9"
と表示されているとおり vp9 コーデックが利用されています。

下の画像は、本来 4K に対応した Google Chrome に vp9 無効化プラグイン (h264ify) を導入することで H.264 コーデックを利用して再生させているところです。1080p 60 Hz が選択肢の上限になっています。

Resolution:1920 x 1080@60
Mime Type:video/mp4; codecs="avc1.64002a"
と表示されているとおり avc (H.264) コーデックが利用されています。



確認用動画

確認用として、24 Hz、30 Hz、60 Hz の YouTube 動画を紹介いたします。すべて他人のものです。再生できるかどうか確認してみてください。

24 Hz
Foundups.com: 4K video of Tojinbo Fukui Japan - Creative Commons

30 Hz
Fire and Embers in 4K - free stock footage

60 Hz
Big Buck Bunny 1080p 60fps, 4K UHD 60fps