CUIエンコーダのNVencのつかいかた

皆様こんにちは。TOM1192です。

いつぞやに、

 

tomspcparts.hatenablog.com

 NVEncのコマンドを内包したHDRエンコードのバッチファイルを作ってるわけなんですが、実際どういう作り方をすればいいのかというお話です。

 

まず、NVencとは

rigaya34589.blog.fc2.com

rigayaさんが作ってる、NVIDA CUDA Samplesなどをベースに設計されたNvidiaGPUでハードウェアエンコードをしてくれるAviUtl用プラグインスタンドアロンソフトです。

 

AviUtlではGUIで設定を作成できるのですが、スタンドアロンで動かす場合は、各種オプションを手動で有効化させたバッチファイルを作成し、そこに動画のファイルをドラッグアンドドロップすることでエンコードを行います。

同様の手段をとるエンコードソフトとしては「ffmpeg」が有名ですが、こちらはNvidiaGPUでしか使えないですが、その代わりに同じ設定でもffmpegよりなんかスループットが良いという特徴があります。

なお、同様にAMDのVCEを使う「VCEEnc」とIntelのQSVを使う「QSVEnc」もあります。おおよそのオプション設定は同じですが、一部はGPU側が使えるコマンドが同じでないが故に使えないものもあります。

 

さて、本題ですがオプション設定は

github.com

こちらにあります。

実際の書き方は、

「NVenc.exe -i "%~1" -o "%~1encorded.mp4" --avhw -c hevc -u quality --cqp 20:23:25 --gop-len 24 -b 0 --profile main10 --output-depth 8」

のように書きます

私が今回使っていたオプションで常に使うべきオプションは、

-i "%~1"(ファイル入力名設定)・・・これはドラッグアンドドロップで使う場合は記載必須。「"%~1"」は入力ファイル名を同じ名前として取り扱うという表記。

 

-o "%~1encorded.mp4"(ファイル出力名設定)・・・こちらは出力先の名前の設定。「%~1」だとエンコード完了後上書きしてしまうので、別途後ろに文字列を追加してファイル名を変更させておくこと。

 

--avhw、--avsw(デコード設定)・・・avhwはハードウェアデコード、avswはソフトウェアデコード。前者は高速だが、読めないコーデックがあるため万能ではない。avswは基本的にどんなやつも読める代わりにCPUでデコードを行う。そのため、CPUがボトルネックになる可能性がある。

 

-c(コーデック設定)・・・h264もしくはhevcを指定可能。hevcはH.265で、こちらのほうが高画質、高圧縮にできるので悩みがなければこちらを推奨。

 

-u(クオリティ設定)・・・P1~P7 or Performance、default、Qualityから指定する。悩んだならP7もしくはQualityを選んでおけば画質は良くなる。ただし画質が高いほどエンコード時間が伸びる(正確にはGPU負荷が凄まじくなるがゆえに伸びる)という点には注意すること。

 

--cqp、--cbr、--vbr(エンコードモードの指定)・・・固定量子化量(cqp)、固定ビットレート(cbr)、可変ビットレート(vbr)を設定できる。

後者2つはビットレートを基準にエンコードをするのに対し、最初の固定量子化量はフレームの比率を設定することでエンコードする。

圧縮率はcqpだとほぼ一定。逆に後者2つはビットレート基準なせいで、大きく変動する。

悩んだらcqpが一番安牌。 

 

--gop-len(GOP長の設定)・・・エンコードにおけるI・P・Bフレームの基準単位。大きくするとエンコード時間が早くなるが、品質が低下する。12~36くらいで適当にしておくとよさげ。

 

-b (連続Bフレーム数)・・・多いと圧縮率が上がるが画質低下の可能性あり。0をしていしておくとよい。

--profile(エンコーダのプロファイル設定)・・・後述のビット深度に応じて変更する。HDRならmain10もしくはmein444が推奨。普通の動画ならmeinでOK。

 

--outputdepth(出力動画のビット深度設定)・・・8 or 10を指定。基本的な動画においては8を推奨。10bit出力はHDR出力を行う場合にのみ使用する。設定が入っていない場合は8bitで行われる。なお、前述のプロファイル設定がmeinの場合は10bit深度が使えないので書かないほうがよい。

 

他のオプションはもありますが、ココまで書くことができればエンコードドラッグアンドドロップで行えるようになります。

ただし、この表記の場合はNVEnc.exeをバッチファイルと同じフォルダにおいておく必要がある点だけは注意が必要です。 

 

今回はここまで。今年初の普通な記事です。

今後もよろしくおねがいします。

2021年を迎えて

皆様あけましておめでとうございます。TOM1192です。

今回は今年の方針の発表のみとさせていただきます。

 

さて、2020年も終わり2021年が訪れたわけですが、私は変わらず元気です。

今年おおまかな方針といたしましては、

①10Gbps環境の整備

②大型鯖の建造

③1号機長期改装計画

の3つを予定しています。

続きを読む

「VB-Audio VoiceMeeter Banana」導入後のその他設定

皆様こんにちは。TOM1192です。

tomspcparts.hatenablog.com

↑前回です。コレを先に読みましょう。 

今回は追記です。

さて本題ですが、音声を分けても配信等に入らないようにするためには設定が必須です。

皆様がよく使われるVCツールとして有名な、「Discord」においての設定方法です。

f:id:buybuysute:20201214234245p:plain

Discordの音声設定です。

上の入力デバイス(マイク)を前回の記事通りであれば、「Voicemeeter AUX Output」に指定しましょう。

出力デバイスは、同様にして、「Voicemeeter AUX Input」に指定すると、音声が別の経路を通ってスピーカーへ出力されるようになります。

 

つまりは、自分の音声は入るが、相手の音声は入らないという条件が完成するというわけです。

録画時に自分の音声を入れる場合は、録音対象を「Voicemeeter AUX Output」にしておけば勝手に自分の音声は入りますので各種設定してくださいね。

 

さて今回はなんとここまで。

このためだけに書いたのはなんか短い気がしますが、コレを書きたかったので勘弁してくだせぇ…

配信にも録画にもマルチオーディオ機器ユーザーにも役立つ「VB-Audio VoiceMeeter Banana」について

皆様こんにちは。TOM1192です。

今回は、私がよく使ってるオーディオ系ソフトである「VB-Audio VoiceMeeter Banana」について紹介します。

端的にこのソフトを一言で言い表すなら、「ミキサー+デミキサー」です。

 

ナンノコッチャと思う方々がほとんどだと思いますので今回はこいつの紹介にいたったというわけです。

使い方がシンプルではなく結構複雑なせいで、使いこなすには少々コツが必要ですが、なれてしまうと複数のオーディオ機器をまとめて制御できる便利な代物です。

 

さて、この「VB-Audio VoiceMeeter Banana(以下Bananaと記載)」ですが、仮想オーディオドライバを経由させることで複数の音声入力と複数の音声出力を並行して取り扱えるソフトとなっています。

 

ダウンロードはこちらから。

vb-audio.com

続きを読む

自宅内サーバー本運用の下準備兼練習用として仮設サーバーの建造

皆様こんにちは。TOM1192です。

先日、「TrueNAS」を使用してあまりパーツPCをサーバー運用に転用しました。

今回はそいつについて書きます。

①TrueNASについて

TrueNASは、旧FreeNASと呼ばれたLinuxのサーバー専用OSです。

特徴として、RAID Zというものが使用できる点があるのと、負荷のかけ方にもよりますが、比較的低スペックでも安定動作を見込める点があります。

Linux系列の例にもれず無料ですので、余った環境があればだいたいなんでも使えます。

 

www.truenas.com

ダウンロードはこちらから。ただし、メールアドレスの送信が必須です(たぶんデタラメでも通りますが未検証です)。

 

②推奨環境(当方検証環境)

・CPU:4スレッド以上(ガンガン運用するなら6コア以上のほうが良いです)

・メモリ:8GB以上。ただ、キャッシュまわりにバンバンメモリを使うので、できるのであれば16GB以上(コレでも足りてないと感じるので、とにかく容量は増やすべし)

NIC(Network Interface Controller):IntelNIC推奨。Realtekは絶対に使ってはいけない。頻繁にドロップする地獄に飲まれます。

・ストレージ関連:インストールディスクはSSD推奨。RAID ZはRAID 5の延長線上にあるため数を用意する必要がある。種類は特段なんでもよいが、安定性優先ならWDのRedもしくはSeagateのIronWolfを選ぶとよい。

SSDをキャッシュとして転用することもできる。メモリキャッシュあふれ対策として、HDDの総容量の10%~20%くらいは用意しておきたい。

無論SSDは単品としても動作可能。特に10Gbps環境下ならNVMeSSDも十分に真価を発揮してくれる。

・電源:使うスペックに合わせて選定しよう。ただ、最近の電源はHDD多数搭載には消極的なので、HDDを5台も6台も運用する場合、いっそのこと850Wくらい選ぶのもアリかも。

当方が実際に運用している環境は

・CPU:AMD FX-8800P(2コア2ユニット 4スレッド)

・メモリ:DDR4-2666(2133MHz動作) 8GB x2(16GB)

マザボBIOSTAR A10N-8800E

・HDD:Seagate FireCuda 2TB(SSHD SATA3.0 7200rpm)←メインディスク

SSD:64GB(SATA M.2)←インストールディスク

・電源:250W

NICIntel 82574L GigabitEthernetController(1Gbps PCIe2.0x1接続)

という構成です。

FX-8800Pはマザボ直付け(SOC)のCPUです。

モバイル向けCPUを直付けするマザボは他にもいろいろいるので、HDD4台程度であれば案外大丈夫かも…

ただ、今回のマザボにはSATAが合計で2個しかないので、インストールディスクとメインディスクでポートが埋まってます。故に今回ではRAIDは形成されず、シングルディスクとして運用されているということになります。

f:id:buybuysute:20201203232323p:plain

当環境のメイン画面。

インストール後の各種変更はクライアント側のPCでブラウザ上からアクセスすることで行います。

f:id:buybuysute:20201203232543p:plain

NASSSHDベンチマーク結果。

HDD特有のランダムアクセス速度の低下が起きにくいというのが最大の特徴。

メモリキャッシュが効いている証です。

ただ、

f:id:buybuysute:20201203233436p:plain

RND4K Q32T1だけは読み出し時だけ、上記のCPU使用率になるほどの負荷がかかるため、そういったアクセスが多い環境であればCPU性能の強化は必須です。

シーケンシャルな書き込み読み出しは全然負荷にならないのでコレくらいでも全然大丈夫です。

 

実は10GbpsのNICを購入して運用しようとしたのですが、認識されなかった(正確にはドライバが存在しない)ので現構成のままとなっています。

やはりサーバー向けNICIntelが最強です。次回改修時にはIntelのX550を導入する予定で、今回買ったNICは他のPCにまわす予定です。

 

導入して約4日の感想ですが、案外快適につかえてしまっているので驚きです…

 

ちなみに、TrueNASにはプラグインがあって、この中に「MineOS」という代物があります。これは、マイクラの鯖を作れるプラグインで、鯖のオマケ機能としてはかなりおおアリな選択肢です。

仮設サーバーのスペックが高いわけじゃないのでこちらでは運用しない予定ですが、本設サーバーを建造した際には導入するかもしれません。

 

さて今回はここまで。案外NASって簡単なんだねと思わされました。

 

参考にしたサイト様

kirishima.it

qiita.com

 

ーおまけ その1ー HDRでエンコードしたデータの確認方法

皆様こんにちは。TOM1192です。

前回からそこそこ間は空いていますが、RTX3090の検証とゲームに明け暮れてました。

今回はHDR動画を作成するにあたって、作成した後に実際にHDRかどうかを確認する方法を2つご紹介します。

2つとも使うとアップロード前に確実にHDRになっているかを断定できますのでやっておくに越したことはございません。

 

さて1つ目は

MPV.net Media Player」です。

こちらは「HDR対応」の無料メディアプレーヤーです。

github.com

動作はシンプル。ドラッグアンドドロップで再生できます。

もちろん関連付けを行えば一発再生できます。

続きを読む

ー続ー HDRのメタデータを取り扱ったまま、エンコードするお話

 

tomspcparts.hatenablog.com

 ↑前回です。タイトル通り続きなんで見てもらうほうが助かります。

 

皆様こんにちは。TOM1192です。

前回HDRメタデータを取り扱ったまま、NVEncを通すお話をしました。

そのあと、当のプロファイルをくださった、4K HDR anime channeさんよりHLGのプロファイルも頂いております。

さて、そんなことではなく、当方先日というか当記事より1日前(11/7)にRTX3090を手に入れました。

コア数が膨大に増えたRTX3090ならNVEncも速くなるはず!とたかをくくってたわけなんですが、速くなるどころか遅くなっちゃたんですよね…

ってなわけで、エンコード速度の向上を兼ねてプロファイルいじりを行ってみました。

 

そもそも、このプロファイルでいじれる要素はほとんどありません。

このため、いじるというよりは文言の追加でパフォーマンスを調整する形になります。

github.com

構文はこちらから探して追加します。

続きを読む