純規の暇人趣味ブログ

広くて浅い知識の湖

生まれ変わったShadowPlay(Share)の使い方

      2016/12/05    HimaJyun

いつからかGeForce Experienceが新しくなって、従来までのShadowPlayがShareと言う物に変わり、正式版になったみたい。

それ自体は良いんだけども、そのShareの操作性がお世辞にも良いとは言えないのである。(フォントも中華フォントだし)

元々ShadowPlayを使っていた人間としては「はてな……?」だったので今一度使い方をおさらい。

おさらいShadowPlay(Share)

この記事を読んでいる人達に概要を説明する必要はないのでしょうが、軽く説明しておきます。

  • ShadowPlay(Share)はGeForce GTX600番台以降のグラフィックボードを搭載したマシンで使える録画ソフト
  • 該当のグラボに搭載されたNVENCと言うハードウェアエンコーダを利用する
  • そのため、録画に伴う負荷が小さく、fpsの低下があまりない
  • 該当のグラボさえ刺さっていれば無料で使える(もちろんロゴや時間制限などはない)

と言う代物でして、使える状況では使わない理由がない様なソフトウェアです。

あえて弱点を言うとすれば、録画された動画がVFR(可変フレームレート)なのでそのままAviUtlとかに突っ込もうとすると音ズレを起こす事、ただしこの辺りはしっかり対処法がある。

ダウンロードとインストール

GeForce Experienceに付属しています。

きょうびGeForce利用者でGeForce Experienceが入っていない奴は居ない(と思いたい)でしょう。

入っていない人はインストールしゅるぅ~->nvidia公式DLページ

使い方

と言う訳で本文へ、文中でShareと書いてあれば新しい物を、ShadowPlayと書いてあれば前までの物を表します。

今回はゲーム内の映像を録画する事だけを目的としているので、配信とかそう言うのは各自ググってね(はぁと

まずは起動する

GeForce Experienceを起動し、右上の歯車マークをクリック。(しっかしチラホラ混ざってる中華フォントが気になる)
shadowplay-share-how-to-use-001

「シェア」のスイッチをONにする。
shadowplay-share-how-to-use-002

これでShareが有効になった、Alt+Zを押すとオーバーレイが掛かって画面が出て来る。(ちなみにこの画面はゲームのプレイ中でも出せる)
shadowplay-share-how-to-use-003

とりあえず録画する

とりあえず録画してみましょ。

と言っても簡単、ゲームを起動してから、Alt+F9を押すだけ。

Alt+F9を押すと録画が始まり、もう一度押すと録画が終了、保存される。

保存した映像は「保存先\ゲーム名\日時.mp4」に保存される。(保存先はAlt+Z->設定->録画の項目を見ればわかる)
shadowplay-share-how-to-use-004

もうこれでほぼ大抵多くの場合求められる要求は達成したのだが、一応他の事もやってみよう。

インスタントリプレイを使う

ShadowPlay時代の時に「シャドウ録画」と言う名称だったもの。

これは何かというと、すなわち常時録画を有効にしておき、保存したい時だけ保存を行うと言う物。

低負荷なShareだからこそ成り立つある種のゴリ押しの様な技(ディスクに凄まじい負荷を掛けそうだがその辺りはどうなんだろう?)

使い方は簡単、インスタントリプレイをオンにする、設定はそれだけ。shadowplay-share-how-to-use-005

後は「あ、今の保存したい!!」という時にAlt+F10を押せば直前20分間(時間は「カスタマイズ」から変更可能)が保存される。

「シャドウ録画」と言う名称だった時は「シャドウ録画とシュドウ(手動)録画」みたいな事を言っていたけど、インスタントリプレイに名前が変わってこのネタは使えなくなった。

スクリーンショットを撮る

録画が出来ればスクリーンショットだって撮れる。

Yes,簡単、プレイ中にAlt+F1を押すだけ!!
shadowplay-share-how-to-use-006(こんな感じで撮れる)

例えばオンゲーでクソガキ(自粛)がふざけた事を抜かしやがった時に晒し上げ(自粛)したい時に使える。

しっかしシューティングで(と言うよりゲーム全般的に)操作しながらAlt+F1を押すと言うのは難しい話で……例えばスーパーサイヤ人とかなら出来るかも知れないが……

スクリーンショットを多用するのであれば「Alt+Z->設定->キーボードショートカット」でショートカットキーを変えておいた方が幸せになれるかも知れない。

その他

その他雑感色々……

編集したい

MP4なので編集ソフトにぶち込めば編集出来そうに思えるが、残念ながら(そのままでは)出来ない。

Shareで録画した映像はVFR(可変フレームレート)と言う物で、これは1秒あたりのフレームレートがシーンに応じて変化すると言う物(確かにゲームのフレームレートは安定していないのでVFRにすると言うのは理にかなっている)

そのため、編集ソフトにぶち込めば読み込みこそするものの、ほぼ大抵多くの場合は音ズレする。(終盤に進むにつれて徐々に音がズレていく感じ)

この場合はVFRとCFR(固定フレームレート)を変換する必要があるのだが……これをここで書くと記事がデカくなりすぎるので過去記事を参照して頂ければと思う。(参考:ShadowPlayで録画&AviUtlで編集可能にする)

余談1:対応しているゲーム

Shareでの録画、普通のゲームには対応しているのだが、一部対応していないゲームがある(ここで言う「普通」とは技術的な意味であり、決して対応していない=変なゲームと言う訳ではない)

対応している/いないと言うのは余談2の動作原理が理解出来れば難しくない話だと思うが、きっとShareは「DirectX」を利用したゲームに対応しているのだと思う。

そのため、OpenGLで動作するMinecraftは録画出来ないのだろうと思う。(まぁ、MinecraftはWin10の機能で録画出来るが……)

とは言え、Win上で動作する殆どのゲームはDirectXなので殆どは録画出来るはずだ、と……思う……(自信はない

余談2:動作原理考察

さて、こう言う類のソフトは数多くあるが、一つ気になる点がある。

そう、「どうやって動作しているのか?」だ(こう言うのが気になるのはプログラマの性と言う奴かも知れない)

勝手な予想だが、ShareはDirectXでのPresent関数に何か処理を挟んでいるのだろうと思われる。

Present関数とはバックバッファを入れ替える、噛み砕いて言えば画面に表示する命令(ちなみにこれは1フレーム毎に、要は60fpsなら1秒間に60回呼ばれる)

そこで、送られてきたデータを横取りして保存してしまおうぜ!!ってのがこう言う類の録画ソフトの動作原理(これが一般的な手法だとは思うが分からないので断言はしない)

この「横取り」はソフトウェアが読み込むDLL(DirectXであればDirectX用のDLLが読み込まれる)を偽造(と言うと悪く聞こえるが)すれば別に難しい事ではない。

例えば「[東方]紅妖永花文萃をWindows10対応にする手法の動作原理」で紹介している方法はこれと同じ手法で偽造DLLをロードさせDirectX8->DirectX9へ処理を橋渡ししているものと思われる。

ただ、偽造したDLLを読み込ませるにはゲームのexeと同じフォルダに偽造DLLを配置する必要がある。(そうするとWindowsが偽造DLLを本物だと誤認してロードする)

大抵のゲームはProgramFilesなどの管理者権限が必要なフォルダに置かれるため、普通ではここにDLLを配置する事は出来ない。

なので、Bandicamは起動時に管理者権限が必要になる訳だ、これまた勝手な予想だが、偽造DLLの配置に管理者権限が必要だからだと思われる。(逆に言えば、脆弱性などがあった場合に管理者権限を渡しているため影響範囲は大きくなる)

でもって、配置した偽造DLL内に仕込んだ「Present関数」が呼び出されると、そこで表示しようとしている1フレーム分を横取りして映像や画像にする。

……と言う原理だと思う(注意:あくまで勝手な予想である事をお忘れなく)

ここでグラボメーカならではの強みが発揮される。

そう、グラボには全ての映像が届いているのだ。

如何なる映像も最終的にはグラボ、延いてはグラボのドライバに命令が行くわけなのだから、極端な話こいつらは出力される映像(と言うより1フレーム分の画像)に対して如何なる細工を施す事も可能なのだ(それこそ極端な例だが画面に表示される魔理沙を全部霊夢に置き換える事だって可能)

偽造DLLなんてちゃちな物を使わなくとも、自分達の正真正銘の正式なDLLに全てのフレームは送られる。

それを横取りするだけだ、きっとメーカなら簡単な話なのだ。

Shareはグラボの特性や強みを最大限に活用した物の1つ……なのかも知れない。(注意:あくまで勝手な(ry

 - ゲーム