FluidMotion
2020年06月06日
こんにちは、わーくです。
Fluid Motionで動画を楽しむ環境を格安で構築しようと頑張って参りましたが、どうやら着地点が見えたのでご報告です。
イチからPCを組み立てようという方は、Ryzenで環境を作って、BlueskyFRCUtil+MPC-BEで終了なのですが、Intel環境でFluid Motionを有効にする方法を試した結果、「古くて安いFluid Motion対応グラボを、現在使っているグラボに足して2枚挿しにする」というところに落ち着きました。
環境
CPU…Core i7 Kaby Lake @ 4.4GHz
Motherboard…ASUSTeK ROG STRIX Z270F GAMING
Memory… DDR4 16GB
GraphicBoard…SAPPHIRE PULSE RADEON RX 5700 8G
電源…コルセアの650Wのやつ(詳細不明)
あとはシステム用のSSDとか、データ用のHDDとか…
で、今回足したFluid Motion専用グラボは、Radeon R7 250です。ボードだけで購入したのでどこの何かは不明w決め手は1スロット、補助電源不要、そして何より安い(ジャンクで3000円以下)ということです。
こいつをマザーボードの一番下のPCI-Express x4スロットに挿入し、一番上のPCI-Expressスロットの転送速度を下がらないようにして(ASUSのROG STRIX Z270F GAMINGというマザーボードは、PCI-Express x16のスロット1とスロット2にグラボを挿すと、両方とも最大転送速度がx8に制限されます)、あくまでFluid Motion専用のチップとして働いてもらうことにしました。
懸念していたのは、Fluid Motionのビデオカードから液晶ディスプレイに映像を接続しないとFluid Motionの効果が得られないのでは…ということでしたが、杞憂に終わりました。スロット1に挿したRADEON RX 5700にディスプレイを接続して3Dゲームを楽しみつつ、スロット3に接続したR7 250にFluid Motion処理をさせ、RX5700から処理済みの60fpsの動画を出力するということが出来ました。すごい!
さらに懸念していたのは、古いグラボなので高解像度の動画を処理できるのだろうか…ということです。R7 250はクロック1000MHz、GDDR3 2GB。果たしてこのスペックでBlu-rayクラスの動画のFluid Motion処理ができるのだろうか?と懸念していましたが、これも大丈夫でした。GPU使用率34%前後で推移し、1時間で欠落フレームも30程度で済みました。Radeon SoftwareでR7 250のファンの速度や電圧を下げてもきっちり動きました。ファンが小さく高回転すると耳障りなノイズがすると予想していたのですが、標準でも騒音は大したことなく、さらにファンの速度を下げても、Fluid Motion処理できてました。
(2021年1月追記)
Fluid Motionの処理しかさせてないから、ファンを回さなくてもダイジョブなんじゃね?という発想から、ためしにファンの電源コネクタを抜いてみました。室温18度、フルHDの動画を10分くらい再生させて90度を超えてまだ温度上昇してます。GPUの温度限界は100℃くらいという説もありますし、GPUの使用率も60%~40%くらい使い続けていて、このままではやばい、ということでCPUファンを再度接続しました(笑)
あと、ためしに動画を2つ同時に再生させてみてGPUの使用率を観察したのですが、変化は見られませんでした。動画のフレームも不安定になりましたし、GPU1つにつきFluid Motion処理できる動画は1つなのかもしれません。そもそも動画2つなんてあまり観る機会もないでしょうけど…。
(追記ここまで)
動画の再生に使ったソフトウェアは、MPC-BE、Directshowフィルターはご存じBluesky Frame Rate Converter。GPUのタブから、R7 200 SeriesのほうだけAMD Fluid Motion Videoを有効にし、AFMは自動ではなくモード1か2に。今回はディスプレイに接続しているグラボとFluid Motionを処理させているグラボが違うのでZero-CopyモードはOFFで。これでMPC-BEで設定することで再生できました。(そちらの設定は詳しいサイトにお任せすることにして。。)
MPC-BEはCtrl+4で統計情報を出しておけるので、フレームレートのチェックに便利ですね。でも、設定をちゃんとしておかないと、コピーフレームだけ生成しまくってフレーム数は60fpsだけどフレーム補完されてない残念な再生状態ができあがるので、注意が必要です。
これで昔録画していた動画達が消化できる目処がついた…ステイホームおわたけど…
さて、これでWindows環境は整った…あとは制作用のMac miniをちゃんと動くようにせな…
-------------------------以下、2021.1.2更新---------------------------
令和3年1月上旬の時点で、Bluesky Frame Rate Converterはバージョン3.1.0まで上がってきていますね。設定項目も増えて、より高画質で再生できるようになりました。我が家は下記の設定で動かしています。
ところで、Windows10をアップデートして、20H2(Windows 10 October 2020 Update)にすると、OSの挙動が変わったようで、BlueskyFRCをバージョンアップしないと複数ビデオカード時の動作に影響が出たり、そもそも設定自体が反映されなかったりします。
具体的には、設定時にBlueskyFRCのアイコン、もしくは、BlueskyFRCを使用するプレイヤー(MPC-BE x64)のアイコンを右クリックして、「管理者として実行」しないと、設定が反映されません。お困りの方は試してみてください
(17:24)
2020年05月25日
Windows機をRadeon RX 5700と470の2枚挿し構成にしました。仕事に使ったり、ビデオを観るのに使ってるマシンです。5700かディスプレイに繋がってる方の普段使いのカードで、Fluid Motionを使うために470も挿してる感じです。この470は後でより小さくて熱が出ない550にリプレースする予定なのですが、その前に2枚挿しで希望する動作環境が構築できるのかを実験してみました。既に問題が発生。それは…
Fluid Motionが有効になるけど働かない。
…またしても何言ってるか分からねーと思うが、使ってる自分がよく分かってないんだから、読んでる人はもっと分からないのは当然でしょう。ゴメンなさい。
つまり、Radeon Softwareやフレームレートコンバーターの設定ではFluid Motionを有効にでき、動画再生中の統計情報には「FrameRate = 60fps」と表示される…でも、動画はカクカクしたまま、ということです。
やったことは、MPC-BEを入れて、Bluesky Frame Rate Converterを入れて、外部フィルターとして使うように設定しました。コンバーターの設定ユーティリティーで、Fluid Motionを有効にし、24fpsと30fpsにチェックを入れて、動画を再生しました。すると、RX470のDisplayPortにディスプレイを接続した場合はちゃんとFluid Motionの効果が確認できたんです。ぬるぬる動くよ!すごい!
しかし、問題はここから。
RX5700のDisplayPortのほうにケーブルを繋ぎかえて、Radeon SoftwareでFluid Motionの項目を一応OFF/ONして、動画を再生してみる。すると、確かに再生は60FPSになっているのですが、動きがカクカクなままなんです。念のためCtrl + Jで動画再生中の統計情報を表示。フレームレートを確認してみるも、59.492など60FPSで動作しているように見えるのです。さらに、Bluesky Frame Rate Converterの「状態」タブを観察していると、RX5700にディスプレイを繋いでるときでも、RX470で24fpsのソースを処理しているよ、表示されます。あたかも、RX470で処理をして、RX5700から出力しているかのように。
つまりアレだ。60fpsにはなっているのかもしれないけど、中間フレームがちゃんと生成されてない感じ。
ちゃんとRX470で処理した画像をRX5700に送ってる感じなのに、なんで中間フレームが生成されてないんだろう…ちなみに、Bluesky Frame Rate Converter の設定で、RX5700側のFluid MotionをOFF、RX470をON、にしておかないと、ちゃんと24fpsと表示された状態で再生されます。RX5700のほうをONにしちゃってると、24fpsになるという。これはBlueskyさんのサイトの説明書通りの動作です。
そこで、忙しいのを承知でメールをしました。作者様に。ありがたいことに返事を頂きまして、その内容は、「コピーフレームによって60fpsになっている状態なので、もし「AFMモード」が「自動」になっている場合は「Mode 1」または「Mode 2」にしてみて下さい。」とのこと。
完全に試したつもりになっていた(ビデオカードのスロットの組み合わせ×チェックボックスの状態×チェックボックスとRadeon SoftwareのFluid Motionの設定をON/OFFする順番etc..)のですが、これがドンピシャでして。RX470でFluid Motion処理をした映像をRX5700経由でDisplayPort接続した液晶ディスプレイで鑑賞することができたのです。ありがたや。速攻で寄附を申し入れました(現金な野郎だ・・・)
さて。今回、RX5700をメインビデオカードとして使いながら、Fluid Motion対応のビデオカードをサブで接続して必要に応じて使う・・・ということは達成できそうなので、今度は一歩進んだ設定を試そうと思います。それは・・・!
「RX5700をメインのビデオカードとして使っているWindows機に、thunderbolt3で接続したeGPUにFluid Motion処理をさせ、普通にRX5700からビデオを見る」!!
これが実現すると、普段Windowsを仕事で使う時にはRX470で通電する必要はなく、映画やアニメを見る時だけthunderbolt3ケーブルをつなぎ替えるだけで大画面で映画を観ることができるのです。(Macに接続している画面はWindows機より大きい。)あと、余計なFluid Motion専用のビデオカードを買わずに済みます。
しかし問題が・・・わーくのWindows機のマザーボードには、thunderbolt3端子がついていないのです。さらに言うと、音楽制作用のMac miniはDAWの都合上Catalinaにすることができないので、eGPUに我が家の最高速のビデオカードであるRX5700を認識することができないのです。だから、Windows機をRX5700、eGPUをR470にするところまでは既定路線。そこで、Windows機にFluid Motion処理用のRX550を導入するか、eGPUをFluid Motion用に使い回すしかないのです。
さらにさらに!eGPUをつなぎ替えるには、thunderbolt3ケーブルを2本用意しないと、動画鑑賞のために画面の後ろにいちいち手を回して接続し直さないといけないという。
ああ、面倒極まりない(性格)。
さて、着地点が曖昧な状態ですが、今のわーくの希望としては「thunderbolt3接続ができるWindows用のマザーボードが安価に手に入る」かつ「eGPUでFluid Motion処理ができる」という状態の実現です。目的より手段に魅力を感じてしまう悪いクセがまた出てしまっている・・・
こんなことを緊急事態宣言明け寸前の深夜(ほぼ早朝)に考えている時点でだいぶアレですが、誰か同じ悩みを抱えている人のために備忘録がてら残しておくことにします。
何はともあれ、早く入荷しろ、Akitio Node!!5月31日入荷が待ちきれねえよ!!
(02:01)