すたいるのOBS情報メモブログ

OBS Studioに関する情報を主に投稿

【OBS Studio】 NVENC について

OBS Studioに搭載されているNVENCに関しての記事
※内容は「OBSのNVENCについて」を移転しました。
記事投稿日 2021年09月28日、最終投稿更新日 2024年04月18日 14時00分頃
編集履歴 : 2024年3月3日 説明が足らない所がかなり多かったのでわかりやすいようにしたつもり。

はじめに

OBS StudioのNVENCは、Windows/Linuxでサポートされています。
この記事ではWindows版のOBS Studioに搭載されているNVENCについて紹介します。

記事を作成する為に使用したパソコン / OBS

OBSバージョン : 30.1.2 (それ以下のバージョン、開発版も含まれます)
OS : Windows 11 Pro 64bit (23H2)
CPU : Core i7 11700k
RAM : 32GB
GPU : GTX 1660 Ti (GeForce 552.22 ドライバー使用) (RTX世代のグラボが欲しい…)
一部情報は前に使用してた「Windows 10 Pro 64bit/i7 3770k/16GB/GTX 680」です。

macOS向けの情報

NVIDIAmacOS上で動作するためのメカニズムを提供していないので利用出来ません。
macOSの場合はVideoToolboxで実装されているQuickSynkを利用してください。

Linux向けの情報

Linuxは使用してないので、情報が間違えてたらお知らせください。
バージョン 23.0からはVAAPIエンコードのサポートが追加
x264の代わりにIntelのQuick Sync VideoやAMDのVideo Coding Engineなどの特定のハードウェアエンコーダを使用可

AMDグラフィックボード向けの情報

AMD環境がないので情報のみ
AMDのグラフィックボード向けのハードウェアエンコードも搭載(実装)されています。 バージョン 28.0 からはAMDエンコーダが新しいのに変わりました。
もし出力エラーが出る場合 AMD公式サイト からドライバーをダウンロードして更新してください。

OBS StudioのNVENCに関して

サポート状況

NVIDIAが出している「NVENC - Encoding」対応リストを確認してお使いのGPUがNVENCをサポートしているかお確かめください。
リストに無い場合は対応していません。

NVENCはGeForce 600シリーズ (Kepler) 以降が必要ですが、NVIDIAは2021年6月頃にKepler GPU (700 / 600シリーズ) のサポートを終了しました。
OBSの最低要求スペックは GTX 900シリーズ なので、Kepler GPU (700 / 600シリーズ)の人は買い替えを検討してください。
【2024年版】OBS Studio システム要求 - すたいるのOBS情報メモブログ

検索ワード : NVENC無い / NVENC表示されない / NVENCどこ

最良の結果を得るには

第6世代NVENC (Turing) を以降のGPUを使用してください。
これには、GTX 1650 rev 2以降が含まれます。
注 : GTX 1650 rev 1は第5世代NVENCを含んでいます。

NVIDIA ドライバーについて

NVENCを使用する場合は、NVIDIA ドライバーを最新バージョンに更新してください。
どのNVIDIA ドライバーがOBSに対応してるかは ここ をご覧ください。
NVIDIA ドライバーの更新方法は ここ をご覧ください。

NVIDIA ドライバーを更新してないと下記のようなエラーが表示されます。
※バージョンによってエラーメッセージが地味に違います。

★バージョン 29.1以降
「インストールされている NVIDIA ドライバー はこの NVENC バージョン をサポートしていないので ドライバーを更新 してみてください。」

★バージョン 29.0~29.0.2
「現在お使いのビデオカードドライバーはこのNVENCバージョンをサポートしていません。ドライバーを更新してください。」

★バージョン 26.0.0~28.1.2
「現在お使いのビデオカードドライバはこのNVENCバージョンをサポートしていません。ドライバを更新してください。」


(との事らしいですが、たまに地雷ドライバーがあるので様子見して更新してみるのが良い)

OBS StudioのNVENCを使用してみて

GPUエンコードなので、x264(CPU処理)と比べるとOBSのCPU使用率はすごく低い。
・グラボの世代次第で「品質(画質)変化」があったり「解像度」と「FPS数値」が高すぎると処理落ちすることがあります。
※最新グラボ(RTX世代など)の場合は気にしなくて大丈夫です。

NVIDIA公式OBSガイド (紹介)

NVIDIA公式が「NVIDIA NVENC OBS ガイド」を出しています。
気になる人は一度見てみることをおすすめします。
NVIDIA NVENC OBS Guide (英語ページ)
(将来的には上記ガイドを翻訳して反映したい所。)

出力モードが「基本」の場合

配信の場合

出力モード「詳細」より設定項目が少なくめっちゃ簡単に設定が出来ます!

★「基本」ではなく「詳細」にしないといけない人
「設定」→「配信」にある「サービス」に掲載されていない配信サイトを利用している人。
掲載されていない配信サイトを利用している場合は「カスタム...」に変更して「出力モード」を「詳細」にしてサービス側が指定してる数値にしてください。

★「基本」をおすすめする理由
・「出力モード」の「詳細」より設定項目が少なくめっちゃくちゃ簡単
※主に「映像ビットレート (映像の画質に関わる数値)」と「音声ビットレート (音声の音質に関わる数値)」を変更するだけ
※必要に応じて「映像エンコーダ」と「エンコーダプリセット」なども調整

★「基本」で疑問に思いそうなこと
・多くの解説は出力モード「詳細」なのになんで「基本」なの?
確かに多くの解説は出力モード「詳細」を紹介していますが「詳細」を利用しなくても「サービス」に掲載されてる「サービス」であれば「基本」で配信が可能です。

・「基本」は「キーフレーム間隔」が設定できないんじゃ?
「キーフレーム間隔」って設定がない!って思うかもしれませんが「設定」→「配信」の「サービス」に表示されてる「サービス」を利用してる場合は「キーフレーム間隔」は自動的に最適な値に設定されます。

※少し難しいお話 : サービスは services.json ってファイルで管理されていてそこに記載されてる recommended に各サービスの推奨値(最大ビットレート/キーフレームなど)が書かれています。
※「基本」も「詳細」も「サービス」にリストされてる「サービス」を利用していれば一部の数値(キーフレーム間隔など)は自動的に設定してくれます。

映像エンコーダ

※バージョン 29.1 より「エンコーダ」から「映像エンコーダ」と表記が変わりました。

★多くの配信サイトの場合
「ハードウェア (NVENC, H.264)」を選択

YouTube Liveの場合
「設定」→「配信」で「YouTube - RTMP」の場合
「ハードウェア (NVENC, H.264)」 (よく解説されている形式)
「ハードウェア (NVENC, HEVC)」(H.264よりビットレートが低くても高画質)
「ハードウェア (NVENC, AV1)」(H.264よりビットレートが低くても高画質)

YouTube側の遅延設定によって推奨エンコーダが変わります。
ライブ配信の遅延 - YouTube ヘルプ

エンコーダによって推奨ビットレートが変わります。
ライブ エンコーダの設定、ビットレート、解像度を選択する - YouTube ヘルプ
※表の左2つは、HEVC (H.265)とAV1の最大ビットレートと最小ビットレートです。
※表の一番右側は、H.264の推奨ビットレートです。

★過去バージョン (いずれ削除予定)
・バージョン 28.0~29.0.2まで
「エンコーダ」で「ハードウェア (NVENC, H264)」を選択
※バージョン 28.0 より H264 表記が追加されました。

・バージョン 23.0~27.2.4まで
「エンコーダ」で「ハードウェア (NVENC)」を選択
Windows 8.1以降の環境の方はバージョン 23.0以降は「ハードウェア (NVENC)」を選択すると内部的に「FFmpegのNVENC」から「新しいNVENC」になります。

エンコーダプリセット

初期値「P5: Slow (高品質)」です。

プリセットはエンコードの品質を決定します。
NVIDIAでは「P6: 低速 (高品質)」を推奨していますがまず初期値の「P5: Slow (高品質)」をお試しください。
数値が低いほど品質が低くなり、数値が高いほど品質が高くなります。
プリセットを高くするとGPU使用率が高くなりOBSと同時に実行されるゲームパフォーマンスに影響を与える可能性があります。
最高プリセットを使用すると同時に実行出来るNVENCのエンコードセッション数が少なくなります。
特に一部の古いGPUではゲームパフォーマンスが低下する場合があるので初期値の「P5: Slow (高品質)」をおすすめします。(新しいGPUの場合は気にする事はないかも)

録画の場合

出力モード「詳細」より設定項目が少なくめっちゃ簡単で楽です。

★「基本」をおすすめする理由
・めっちゃくちゃ簡単に高画質で録画ができます!

★「基本」じゃなく「詳細」で録画した方がいい人
・音声ビットレートを192kbps以上にしたい
・音声エンコーダをAACじゃなくてALAC/FLAC/Opus/PCMにしたい
・録画を分割(時間/サイズ/手動)したい
・数値を細く設定したい
などの場合のみ「詳細」をおすすめします。

基本の制限事項

「録画品質」を利用した場合、音声ビットレートは「192kbps」固定になります。
「192kbps」以外を使用したい場合は出力モード「詳細」を利用してください。

2023年4月24日加筆
2020年頃から「録画品質」を利用した場合の音声ビットレートを「128」と記載していましたが正しくは「192」となります。
UI: Add recording presets to simple output · obsproject/obs-studio@54a3e66 · GitHub

解像度を決める

「設定」→「映像」
数値例 :
・基本 (キャンバス) 解像度 : 1920x1080
・出力 (スケーリング) 解像度 : 1920x1080
FPS : 60

※もし重たい場合は以下のように変更してください。
・出力 (スケーリング) 解像度 : 1280x720
FPS : 30

録画ファイルのパス

これは録画が保存されるディレクトリです。
選択したドライブに十分なスペースがあることを確認してください。
※遅いドライブ(特にHDD)にすると、録画がカクカクしたり、録画停止処理に時間がかかることがあります。

録画品質

※もし高品質/超高品質を利用して重たい場合はスペック不足の可能性が高いです。
※録画品質の数値を書いているので「詳細」で同じようにすると同等の画質で録画が可能です。

・配信と同じ
「配信」部分で設定したビットレートが使用されます。
高画質で録画をしたい場合はおすすめしません。

・高品質、ファイルサイズ中 (おすすめ)
H.264の場合
720pの場合 : CQP 21 / preset p5 / tuning hq / profile high
1080pの場合 : CQP 23 / preset p5 / tuning hq / profile high

★HEVC (H.265)の場合
720pの場合 : CQP 21 / preset p5 / tuning hq / profile main
1080pの場合 : CQP 23 / preset p5 / tuning hq / profile main

・超高品質、ファイルサイズ大
H.264の場合
720pの場合 : CQP 14 / preset p5 / tuning hq / profile high
1080pの場合 : CQP 16 / preset p5 / tuning hq / profile high

★HEVC (H.265)の場合
720pの場合 : CQP 14 / preset p5 / tuning hq / profile main
1080pの場合 : CQP 16 / preset p5 / tuning hq / profile main

・無損失品質、ファイルサイズ特大
AVI形式で録画されます

録画フォーマット

録画ファイルに使用するフォーマットを選択できます。

・バージョン 30.1.2以降
初期値(デフォルト)は「Matroska Video (.mkv)」に戻されました。

※「MPEG-4 (.mp4)」にした場合は正常に録画が完了しなかった場合、録画データが破損して復旧できません。
mp4形式が必要な場合は録画後に「ファイル」→「録画の再多重化」からmp4に変換することができます。

・バージョン 30.1/30.1.1まで
初期値(デフォルト)は「Fragmented形式」
※Fragmented形式はすべてのプレイヤー/エディタで互換性ある訳ではないので、何か問題が発生した場合は「ファイル → 録画の再多重化」で変換してください。

Linux/Windows → Fragmented MP4
macOS → Fragmented MOV

★問題なく再生できるソフト
VLC media player
https://www.videolan.org/vlc/index.ja.html

互換性がない影響で発生する症状
※動画の長さ(時間)が出なかったり、シーク(スキップ/巻き戻し/早送り)が出来なかったりする症状が発生します。

エクスプローラー (動画の長さが出ない)
・映画 & テレビ (シークが出来ない)
・メディア プレーヤー (シークが出来ない、LIVEマークっぽいのが出る)
・フォト (シークが出来ない、動画時間が凄いとんでもない数字に)
Windows Media Player (シークが出来ない)

・バージョン 30.0.2まで
初期値(デフォルト)は「Matroska Video (.mkv)」

※「MPEG-4 (.mp4)」にした場合は正常に録画が完了しなかった場合、録画データが破損して復旧できません。
mp4形式が必要な場合は録画後に「ファイル」→「録画の再多重化」からmp4に変換することができます。

映像エンコーダ

※バージョン 29.1以降

AV1が最高の品質を提供し、次にHEVC、最後がH.264です。
アプリとの互換性を求める場合は H.264 にしてください。

・ハードウェア (NVENC, H.264)
・ハードウェア (NVENC, HEVC)
・ハードウェア (NVENC, AV1) ※RTX40シリーズ以上

出力モードが「詳細」の場合

オプションをより細かく設定できますが、配信または録画の品質が向上することを意味していません。
変更すべきではない設定を変更できたりもするので変更には注意です。
ほとんどの場合「出力モード」の「基本」がおすすめです。

出力モードが「詳細」でも「設定」→「配信」の「サービス」に表示されてるサービスを利用してる場合は一部数値は自動的に最適な値に設定されます。
※少し難しいお話 : サービスは services.json ってファイルで管理されていてそこに記載されてる recommended に各サービスの推奨値(最大ビットレート/キーフレームなど)が書かれています。
※もし「キーフレーム間隔」を初期の0にしてても修正してくれます。

なんで (new) ってついてないの?

NVIDIA NVENC H.264 (new)」とラベル付けされたNVENCが実装(2019年02月)されてからかなり経過したのでnew表記はバージョン 28.0(2022年9月1日リリース)で削除されました。
NVENCにnewがついてなくてもバージョン 28.0以降では仕様です。
大丈夫か気になる場合は「出力開始 (配信開始/録画開始)」をしてからログファイルを見て以下の文字列があるか確認してください。
ログファイルは「ヘルプ」→「ログファイル」→「現在のログを表示」でログウィンドウを表示するとすぐ見れます。

バージョン 30.0以降 : obs-nvenc
バージョン 29.1.2まで : jim-nvenc

この変更のコミットメモ↓
obs-ffmpeg: NVENC "(new)" begone · obsproject/obs-studio@21da0b0 · GitHub

※FFmpeg実装にフォールバックする設定に関して
どれか1つでも利用するとフォールバックするようになっています。
・出力をリスケールする (バージョン 30.0.2まで)
GPU変更
・「カラーフォーマット」を「NV12」「P010」以外に設定

配信の場合

映像エンコーダ

※バージョン 29.1以降
※バージョン 29.1 より「エンコーダ」から「映像エンコーダ」と表記が変わりました。

★多くの配信サイトの場合
NVIDIA NVENC H.264」を選択

YouTube Liveの場合
「設定」→「配信」で「YouTube - RTMP」の場合
NVIDIA NVENC H.264」 (よく解説されている形式)
NVIDIA NVENC HEVC」(H.264よりビットレートが低くても高画質)
NVIDIA NVENC AV1)」(H.264よりビットレートが低くても高画質)

YouTube側の遅延設定によって推奨エンコーダが変わります。
ライブ配信の遅延 - YouTube ヘルプ

エンコーダによって推奨ビットレートが変わります。
ライブ エンコーダの設定、ビットレート、解像度を選択する - YouTube ヘルプ
※表の左2つは、HEVC (H.265)とAV1の最大ビットレートと最小ビットレートです。
※表の一番右側は、H.264の推奨ビットレートです。

★過去バージョン (いずれ削除予定)
・バージョン 28.0~29.0.2まで
「エンコーダ」で「NVIDIA NVENC H.264」を選択

・バージョン 23.0~27.2.4まで
「エンコーダ」で「NVIDIA NVENC H.264 (new)」を選択
※バージョン 22.0.2までは「NVENC H.264」でした。(バージョン 23.0で変更)
※「NVIDIA NVENC H.264」(バージョン 22.0.2までのFFmpeg実装のNVENC)はバージョン 25.0で一覧から非表示に変更されました。(一部の設定を使うと自動的にフォールバックします。)

出力をリスケールする

「出力をリスケールする」は「設定」→「映像」の「出力 (スケーリング) 解像度」をさらに「拡大/縮小(リスケール)」することができる設定です。
異なる解像度で配信および録画をする必要がある場合に利用してください。

バージョン 30.0.2までの「出力をリスケールする」仕様
「出力をリスケールする」を利用するとエンコーダに出力する前にCPUを使用して各ビデオフレームをスケーリングしていたので、CPU負荷が大幅に発生します。
チェックをすると紹介するガイドがありますが、内容を理解した上でご利用ください。

★デメリット
・映像が綺麗にリスケールされません。
・CPU使用率が少し増える。
GPUの3D使用率が増える。(ゲームのFPSが低下したりする)
・解像度値をミスすると出力開始できなくなる。
・新しいNVENCが利用出来ず古い実装のNVENC(FFmpeg実装)になる。
FFmpeg実装になると「RTX20xx番台などの(Turing世代)」以降で品質の向上「GTX6xx番台」以降でパフォーマンスの改善の効果も無くなります。

レート制御

配信の場合は「CBR」に設定します。

※もし他のやつに変更したとしても「設定」→「配信」で「サービス」に表示されているサービスを利用してる場合は強制的に「CBR」に設定されます。

ビットレート

配信をする時間帯に速度テスト (例: Speed Test) を実行してアップロード速度を計測して上りの速度を把握しましょう。
お使いの回線速度が遅い場合はビットレート数値を下げて対応してください。

キーフレーム間隔 (0=自動)

多くの配信サイトの場合は「2」に設定します。

※もし初期値の0だったり推奨値じゃない数値に変更したとしても「設定」→「配信」で「サービス」に表示されているサービスを利用してる場合は自動的に最適な数値に変更されます。

プリセット

・バージョン 29.0以降
初期値(デフォルト)は「P5: Slow (高品質)」です。
※初期値(デフォルト)のプリセットの値が1つ下げられました。

プリセットはエンコードの品質を決定します。
NVIDIAでは「P6: 低速 (高品質)」を推奨していますがまず初期値の「P5: Slow (高品質)」をお試しください。
数値が低いほど品質が低くなり、数値が高いほど品質が高くなります。
プリセットを高くするとGPU使用率が高くなりOBSと同時に実行されるゲームパフォーマンスに影響を与える可能性があります。
最高プリセットを使用すると同時に実行出来るNVENCのエンコードセッション数が少なくなります。
特に一部の古いGPUではゲームパフォーマンスが低下する場合があるので初期値の「P5: Slow (高品質)」をおすすめします。(新しいGPUの場合は気にする事はないかも)

プリセット移行変換メモ (バージョン29.0 beta3で検証)
※もしミスあったらごめんなさい
Max Quality (mq) → P5 (H264) / P6 (HEVC)
Quality (hq) → P5 (H264) / P6 (HEVC)
Performance (default) → P3 (H264) / P5 (HEVC)
Max Performance (hp) → P1 (H264/HEVC)
Low-Latency (ll) → P3 (H264/HEVC)
Low-Latency Quality (llhq) → P4 (H264/HEVC)
Low-Latency Performance (llhp) → P2 (H264/HEVC)

★過去情報 (いずれ削除予定)

・バージョン 28.1
初期値(デフォルト)は「P6: Slower (より高品質)」です。

・バージョン 27.2.4まで
初期値(デフォルト)は「Quality」です。
エンコードオーバーロードする場合(重い時)は「Max Performance」に変更して改善するかお試しください。

チューニング

バージョン 28.1以降実装

遅延と品質どちらを優先するかを決定することができます。
※初期値から変更しなくてもいいと思います。

初期値(デフォルト)は「高品質」です。

マルチパスモード

バージョン 28.1以降実装

エンコードで2パスを使用するかどうかを決定する為に使用され「1パス(無効)」「2パス 4/1 解像度」「2パス フル 解像度」の3つがあります。
これを有効にするとGPUリソースの使用量が増えますが、品質が向上します。
※初期値から変更しなくてもいいと思います。
※古い世代のグラボを使用してる場合は、開始エラーが出るので「1パス」または「2パス フル 解像度」にする必要があるかもしれません。

初期値(デフォルト)は「2パス (1/4 解像度)」です。

プロファイル

2023年11月14日 加筆 (書き忘れてた…)

H.264の場合
high に設定します。

・HEVCの場合
main に設定します。
HDRをする場合のみ main10 に変更してください。

・AV1の場合
※現在所持してないので、省きます。

※「設定」→「配信」で「サービス」に表示されているサービスを利用してる場合で指定されてる場合は自動的に変更されます。

Look-ahead

初期値(デフォルト)は「無効」です。

動的Bフレームを有効にします。
無効にすると、エンコーダは常に '最大Bフレーム' 設定で指定されたBフレーム数を使用します。
有効にした場合、GPU使用率の増加を犠牲にして最大数まで必要な分だけ多くのBフレームを使用することで視覚的品質を向上させます。
GPU使用率が高い場合はオフにしてください。

オフにしていてもLook-aheadがオンになる例
・映像エンコーダ
NVIDIA NVENC H.264
・プリセット
「P6: Slower (より高品質)」「P7: Slowest (最高品質)」
・チューニング
「高品質」

心理視覚チューニング

初期値(デフォルト)は「有効」です。

GPU使用率の増加を犠牲にして、特に動きの激しい状況で、視覚品質の向上のためにビットレートの使用を最適化するエンコーダ設定を有効にします。

GPU

初期値(デフォルト)は「0」です。

デスクトップパソコンで複数のGPUがある場合にNVENCを実行するGPUを変更できます。
1枚しか搭載していない場合は、初期の0から変更しないでください。(エラーで開始出来ない)
実際この変更はパフォーマンス低下を招くので、同じGPU上でゲームとエンコードを行うのが最善です。
また新しい「NVENC」の場合、GPU変更は対応していない(異なるGPU間でテクスチャ共有が出来ない為)ので古いFFmpeg実装のNVENCに自動的にフォールバックします。
新しいNVENCの恩恵が受けれないので注意してください。

※フォールバックのコミット → obs-ffmpeg: Do not allow new NVENC on gpu idx > 0

最大Bフレーム

初期値(デフォルト)は「2」です。

※古い世代のグラボを使用してる場合は、開始エラーが出るので「0」に変更する必要があるかもしれません。

録画の場合

録画ファイルのパス

これは録画が保存されるディレクトリです。
選択したドライブに十分なスペースがあることを確認してください。
※遅いドライブ(特にHDD)にすると、録画がカクカクしたり、録画停止処理に時間がかかることがあります。

録画フォーマット

録画ファイルに使用するフォーマットを選択できます。

・バージョン 30.1.2以降
初期値(デフォルト)は「Matroska Video (.mkv)」に戻されました。

※「MPEG-4 (.mp4)」にした場合は正常に録画が完了しなかった場合、録画データが破損して復旧できません。
mp4形式が必要な場合は録画後に「ファイル」→「録画の再多重化」からmp4に変換することができます。

・バージョン 30.1/30.1.1まで
初期値(デフォルト)は「Fragmented形式」
※Fragmented形式はすべてのプレイヤー/エディタで互換性ある訳ではないので、何か問題が発生した場合は「ファイル → 録画の再多重化」で変換してください。

Linux/Windows → Fragmented MP4
macOS → Fragmented MOV

★問題なく再生できるソフト
VLC media player
https://www.videolan.org/vlc/index.ja.html

互換性がない影響で発生する症状
※動画の長さ(時間)が出なかったり、シーク(スキップ/巻き戻し/早送り)が出来なかったりする症状が発生します。

エクスプローラー (動画の長さが出ない)
・映画 & テレビ (シークが出来ない)
・メディア プレーヤー (シークが出来ない、LIVEマークっぽいのが出る)
・フォト (シークが出来ない、動画時間が凄いとんでもない数字に)
Windows Media Player (シークが出来ない)

・バージョン 30.0.2まで
初期値(デフォルト)は「Matroska Video (.mkv)」

※「MPEG-4 (.mp4)」にした場合は正常に録画が完了しなかった場合、録画データが破損して復旧できません。
mp4形式が必要な場合は録画後に「ファイル」→「録画の再多重化」からmp4に変換することができます。

映像エンコーダ

※AV1が最高の品質を提供し、次にHEVC、最後がH.264です。
※アプリとの互換性を求める場合は H.264 にしてください。

★バージョン 28.1以降
NVIDIA NVENC H.264
NVIDIA NVENC HEVC
NVIDIA NVENC AV1 ※RTX40シリーズ以上

レート制御

CQPをおすすめ
CQP レベル : 14~21 で調節する。(低いほど高画質)

無損失(Lossless)はGTX 700番台以降じゃないと利用出来ません。
NVIDIA の GPU エンコーダー NVENC の現状と今後について #GTC15 | ニコラボ

プリセット

「P6: Slower (より高品質)」を選択
重たい場合は「P5: Slow (高品質)」にしてください。

チューニング

「高品質」を選択

マルチパスモード

「2パス (1/4 解像度)」を選択

プロファイル

H.264の場合
high に設定します。

・HEVCの場合
main に設定します。
HDRをする場合のみ main10 に変更してください。

・AV1の場合
※現在所持してないので、省きます。

Look-ahead

チェックなし。
※最大Bフレームを4にする場合はチェックをつけてみてください。

心理視覚チューニング

有効のまま

GPU

0 のまま

最大Bフレーム

初期値(デフォルト)は「2」です。

※古い世代のグラボを使用してる場合は、開始エラーが出るので「0」に変更する必要があるかもしれません。

こんな時は

OBSの動作がおかしい

下記記事の「OBS Studioの動作に問題が発生している場合の対処法」をご覧ください。
OBS Studio に関するメモ - すたいるのOBS情報メモブログ

NVENCがクラッシュ/ラグが発生する場合

Windows 10 May 2020 Update (バージョン 2004) 以降で利用できるようになった「ハードウェア アクセラレータによる GPU スケジューリング」をON(オン)に変更してたらオフをお試しください。

★オフにする方法
Windows 11の場合
1、ここ をクリックして設定を開く
2、「ハードウェア アクセラレータによる GPU スケジューリング」をオフ(OFF)にする。
3、パソコンを再起動する。

Windows 10の場合
1、ここ をクリックして設定を開く
2、「ハードウェア アクセラレータによる GPU スケジューリング」をオフ(OFF)にする。
3、パソコンを再起動する。

NVENCを使ったのに映像がカクカク

何処が原因でカクカクしてるか確認しましょう。
配信または、録画をしながら下記ウィンドウを開いてOBSの負荷を確認します。
※これと合わせて下に記載している「パソコン全体の負荷確認方法」もしてください。

処理落ちをしてる場合、OBS本体左下部分に下記警告メッセージがずっと表示されます。
※警告部分を非表示に出来る設定があるので表示がない場合は「メニューバー」から「表示」→「ステータスバー」を確認してチェックマークがついている状態に変更してください。

★バージョン 28以降
エンコードが高負荷です! 映像設定を下げるかより高速なエンコードプリセットを使用することを検討してください。」

★バージョン 23.1以降 (バージョン 27.2.4まで)
エンコードが高負荷です! 映像設定を下げるかより高速のエンコードプリセットの使用を検討してください。」

★バージョン 20.0以降 (バージョン 23.0まで)
エンコードが高負荷です! 映像設定を下げるかより高速のエンコードプリセットの使用を検討してください。」

★バージョン 0.13.1以降 (バージョン 19.0.3まで)
エンコードが高負荷です! ビデオ設定を下げるかより高速のエンコードプリセットの使用を検討してください。」

パソコン全体の負荷確認方法

Windows 11/10の場合

タスクマネージャーを起動する。
CPU/メモリ/GPU(エンコード中はVideo Encodeの値)の値を確認する。

GPU-Z」に関して

導入、使い方はドスパラ様の記事がわかりやすかったので貼り付け
GPU-Zの使い方|ドスパラ通販【公式】

起動後「Sensors」タブを押し「Video Engine Load」の値を見る。
もし値が高すぎる場合、処理落ちをして映像に影響が出ます。(下記画像は100%に近い)
ShadowPlayと処理負荷が異なる為、処理落ちが起きてる場合はグラボの性能不足です。
(ちなみに元使ってたGTX 680ではChromeのハードウェアアクセラレーションONで1080p 60fpsの配信閲覧しながら1080p 60fpsのNVENC録画は性能不足過ぎて出来ませんでした…)

統計ウィンドウで負荷を確認してみる

メニュー「表示」→「統計」を開く。(バージョン 19.0以降利用可能)

各項目に関して簡単に解説

警告レベルのパラメータは黄橙色です。
エラーレベルのパラメータは赤色です。
リセットボタンを押すと、現在の統計をリセットできます。

CPU使用率

OBS本体のみのCPU使用率です。
エンコード、ブラウザソースなどのCPU使用率は含まれていません。

数値はかなり不正確です。
Windowsでは、タスクマネージャーで使用率を見る事をおすすめします。
Macの場合は、アクティビティモニターで使用率を見る事をおすすめします。

この問題に関する不具合報告
CPU usage in Stats tab inaccurate and consistently underreported. · Issue #6525 · obsproject/obs-studio · GitHub

ディスク空き容量

「設定」→「出力」で指定した保存先の空き容量。

ディスクが一杯になるまで (約)

「設定」→「出力」で指定した保存先に保存した場合にあと何時間何分で一杯になるかを計算してくれます。

メモリ使用量

OBSのメモリ使用量を表示します。

数値はかなり不正確です。
Windowsでは、タスクマネージャーで使用率を見る事をおすすめします。
Macの場合は、アクティビティモニターで使用率を見る事をおすすめします。

FPS

「設定」→「映像」で設定したFPS値が表示されます。
設定値より下がってる場合はFPSを下げてください。(例 60→30)
FPSを下げても改善しない場合は「出力 (スケーリング) 解像度」を下げて下さい。

フレームのレンダリングにかかる平均時間

※バージョン 30.0.2までは「フレームをレンダリングする平均時間」

レンダリングの平均時間を表示しています。
20msなどのように高くならない限り気にする必要はないです。

レンダリングラグにより逃したフレーム

※バージョン 30.0.2までは「レンダリングラグが原因で逃したフレーム」

GPU負荷が高くなった場合にフレームの欠落が発生した際に数値が増えます。
一瞬少し増える数値は気にする必要は無いです。

★数値が大きく増える場合
レンダリングが間に合っていません。
※特にNVENCを実行している場合はGPU負荷が高いとフレームが失われます。(カクカクする)

★改善策
・原因のソースを探す or 減らす。
・ゲーム内のFPS制限 / Vsyncを有効にする。
・管理者権限で実行する。

エンコードラグによりスキップされたフレーム

※バージョン 30.0.2までは「エンコードのラグが原因でスキップされたフレーム」

この数値が増えていく場合、エンコード、または保存先への書き込みが間に合ってません。

・「設定」→「出力」で「エンコーダ」を変更
※x264(CPU処理)を利用していたらハードウェア(GPU)エンコードに変更

・「設定」→「出力」で「プリセット」を変更
低負荷のプリセットに変更する。

・「設定」→「映像」で「解像度」と「FPS」を下げる。
※映像は「出力 (スケーリング) 解像度」FPSは「60 だったら 30」に下げる

・開いてるアプリケーションの数を減らす
※設定が高い場合は下げてみてください。

・HDDに保存してる場合はSSDにする。
※書き込み速度がHDDは遅いので録画がカクカクしたりするのが発生しやすいです。

ドロップしたフレーム (ネットワーク)

※バージョン 27.2.4までは「ドロップフレーム (ネットワーク)」

OBS公式で用意されているページ(英語)の一部をここに書いています。
全部は書ききれてないので、合わせてご覧ください。
Stream Connection Troubleshooting | OBS

「ドロップしたフレーム (ネットワーク)」はリモートサーバーへの接続が安定していないか、設定されたビットレートを維持できないことを意味します。

★ドロップしたフレームが発生する原因
・コンピュータのファイアウォール/ウイルス対策/セキュリティソフトウェアが接続を妨げている。(アップロード速度を調整するソフトも含む)
ルーターが古い、遅い、故障、または設定を間違えてる。
・同じネットワークで他の人がアップロードを大量に使用している。(大容量のファイルアップロード、torrentでシード中、他の人が配信中など)

★ドロップしたフレーム以外にOBSで確認できるところ
・接続安定性インジケータを見る
本体画面一番下にある「ステータスバー」でアンテナ(古いバージョンは四角)が緑色を維持しているか。 接続が不安定な場合は黄色/赤色と変動します。

★OBS側で試せること
・動的ビットレート
バージョン 24.0で実装された機能をお試しください。
この機能は接続が不安定なことを検出するとフレームをドロップするのではなくビットレートを自動的に下げて接続が安定するとビットレートを元の数字に戻してくれます。

動的ビットレートを使用するには「設定」→「詳細設定」→「ネットワーク」に移動して「輻輳を管理するためにビットレートを動的に変更する (ベータ版)」のチェックを有効にします。

ビットレートを下げる
ネットワークの状態(速度)は毎日同じとは限らないので、ビットレートを下げてみてください。

「設定」→「出力」で「映像ビットレート」を下げる。
※画質を維持するには「設定」→「映像」で「出力 (スケーリング) 解像度」と「FPS」も下げる必要があります。

・配信サーバーを変更する
配信先のサービスによってはサーバーを選択できるので、別のサーバーに変更すると問題が解決される場合があります。

・別のサービスを使用してみる
使用してる配信サービスに問題がないことを確認するために別の配信サービスを試してみるのをおすすめします。
・問題が解決する場合 : 配信サーバーとの接続に問題があります。
・問題が解決しない場合 : 回線に問題がある可能性があります。

・ネットワークの最適化を有効にしてみる
Windows限定/RTMP接続のみ
「設定」→「詳細設定」にある「ネットワークの最適化を有効にする」を有効にしてみて改善するかお試しください。
※ゲームのping変動が激しい場合はその下の「低遅延モード」にチェック

このオプションは送信する際の内部的な挙動(イベントベースのAPIになる)が変わります。

★ソフトウェア関連
ウイルス対策を確認する
場合によってはウイルス対策ソフトウェア(ファイアウォール/セキュリティソフトウェア)が接続を妨害する可能性があります。

一時的に無効にしてみて安定するかお確かめください。

・ネットワークソフトウェアを確認する
ネットワーク接続を「最適化」または「安定化」すると主張するものが入ってると問題が発生します。

パフォーマンスを妨げるネットワークソフトウェア例
Lenovo Vantage
・Killer NICファイアウォール

・ネットワークドライバーを更新する
稀に古いドライバーが原因で発生することがあります。

★ハードウェア関連
無線LAN(Wi-Fi)経由の配信を避ける
※安定性がかなり変わるので、有線接続に切り替えてください。

★問題解決できない場合
ISP(インターネットサービスプロバイダ)に連絡
問題を説明(どこに配信してるか、何が起こってるかを正確に)してみて改善できるか聞いてみてください。

出力開始時にエラーが表示される場合

配信/録画/リプレイバッファを開始する際にエラーが表示されることがあります。

「配信開始に失敗しました」
「録画開始に失敗しました」
「リプレイバッファの開始に失敗しました」
エンコードエラー」
「出力開始に失敗しました。詳細はログを確認してください。」
「注: NVENCまたはAMDエンコーダを使用している場合は、ビデオドライバーが最新のものであるかを確認してください。」

エラー内容によって解決方法が異なります。
下記にいくつか例を紹介するので、ご自身のエラーと同じ奴があれば解決方法をお試しください。

バージョン別 (簡易まとめ)

各バージョンで発生することを簡易で書いています。
あくまで簡易まとめなので、これ以外のことは他の項目を見てください。

バージョン 30.1以降

NVENCを動作させる為に必要なNVIDIA ドライバーのバージョンが変更されました。

★表示されるメッセージ
「インストールされている NVIDIA ドライバー はこの NVENC バージョン をサポートしていないので ドライバーを更新 してみてください。」

バージョン別の必要NVIDIA ドライバーバージョンについては ここ
ドライバー更新方法は ここ を参照

★古いドライバー(バージョン 400系)/古いハードウェア(Kepler世代)を利用してる場合
要求を満たしていなくてもNVENCを使用出来るようにする互換性ハックが実装されていますが、バージョン 30.1/30.1.1では互換性ハックが壊れていてNVENCを使用出来ません。
もし古いドライバー/古いハードウェアでNVENCを使用したい場合は、修正された バージョン 30.1.2 にするか バージョン 30.0.2 をお試しください。
もしくは「映像エンコーダ」を「x264 (CPU処理)」または「QSV (QuickSync)」などに変更して対応してください。

バージョン 30.0以降

NVENCではないですが、この記事を検索で見た人が解決するように

QSV (QuickSync)に関して

Intel MSDK からIntel VPL APIに変更されました。
Intel 第5世代 (Broadwell) 以降のみをサポートするようです。
古いパソコンの方は、エラーが出るかもしれません。

・開始時にウィンドウに出るエラー

出力開始に失敗しました。詳細はログを確認してください。

注: NVENCまたはAMDエンコーダを使用している場合は、ビデオドライバーが最新のものであるかを確認してください。

・ログファイルに記録されるエラー (一部抜粋)

[qsv encoder: 'msdk_impl'] Specified object/item/sync point not found. (MFX_ERR_NOT_FOUND)

・解決方法
※肝心の解決方法を書き忘れてました。(2024年2月28日 01時頃 加筆)

★バージョン 30.0以降を使用したい場合
「映像エンコーダ」を変更してください。
「出力モード」が「基本」の場合は「ソフトウェア (x264)」
「出力モード」が「詳細」の場合は「x264」
※QSV(QuickSync)より負荷が上がります。
※負荷に耐えれない場合はパソコンの買い替えを検討してください。

★バージョン 30.0以降じゃなくてもいい場合
バージョン 29.1.3へダウングレードしてください。
※ダウングレードしてもエラーが出る場合は「x264」にしてください。

手順
1、下記URLを開く
https://github.com/obsproject/obs-studio/releases/tag/29.1.3
2、ページをスクロールして「Assets」を開く
3、「OBS-Studio-29.1.3-Full-Installer-x64.exe」ダウンロード
4、「OBS-Studio-29.1.3-Full-Installer-x64.exe」を起動してインストール
※インストール中にエラーが出る場合はパソコンを再起動してから再度インストールをお試しください。

バージョン 29.1以降

表示される文字列が更新されました。
「NVENC コーデックを開けませんでした: Function not implemented」
※ドライバーを更新してみてください。

「最新の NVIDIA ドライバー をインストールしてみてください。」
※ドライバーを更新してください。

最新の NVIDIA ドライバー をインストールし NVIDIA ShadowPlay や Windows Game DVR など NVENC を使用している可能性のある他の録画ソフトウェアを終了してみてください。
※ドライバーを更新して、他にNVENCを使用してるアプリを終了してください。

NVENC エラー: サポートされていないデバイスです。 ビデオカードNVENC をサポート しているか確認し ドライバーを更新 してみてください。
※サポートされていないか、またはドライバーが古いです。

NVENC エラー: 同時セッションが多すぎます。 NVIDIA ShadowPlay や Windows Game DVR など NVENC を使用している可能性のある他の録画ソフトウェアを終了してみてください。
※NVENCの制限を超えています。

バージョン 28.1以降

「NVENC Error: init_encoder_h264: nv.nvEncInitializeEncoder(enc->session, &enc->params) failed: 8 (NV_ENC_ERR_INVALID_PARAM)」

・出力モード「基本」の場合
解像度設定がミスしていると出ることがあります。
「設定」→「映像」で解像度が正しいか確認してください。

・出力モード「詳細」の場合
古い世代のグラフィックボードを使用している場合に発生するようです。
※バージョン 29.0では回避策が実装されたのでおそらく解決しています。

解決方法 (情報収集中)
・出力モードを「詳細」に変更
下記値を変更してみてください。
・「プリセット」を「p5: Slow (高品質)」に変更
・「マルチパスモード」は「1パス」または「2パス (フル)」
・「最大Bフレーム」は「0」※上2つでだめな場合に追加で変更してください。
にすると回避できるかもしれません。

バージョン 27.2以降

バージョン 27.2以降に発生する環境があるようです。
グラボのドライバーを更新すると治るようなのでドライバーの更新をしてください。

「NVENC コーデックを開けませんでした : Function not implemented」
「お使いのビデオドライバが最新のものであるか確認してください。」

または

「NVENC コーデックを開けませんでした : Function not implemented」
「お使いのビデオドライバーが最新のものであるか確認してください。」

バージョン 25.0.8以降

※複数のエラーメッセージが追加
「NVENC コーデックを開けませんでした : Generic error in an external library」
「出力エンコーダ設定でGPU %1 を選択しました。 これを0に戻してもう一度お試しください。」

「NVENCエラー: 同時セッションが多すぎます。NVIDIA ShadowplayやWindows 10 Game DVRなどNVENCを使用している可能性のある他の録画ソフトウェアを終了してみてください。」

「NVENC Error: init_encoder: nv.nvEncInitializeEncoder(enc->session, params) failed: 8 (NV_ENC_ERR_INVALID_PARAM)」
一部バージョンで特定の設定で発生する問題と記載してましたが、他にも問題が発生することがあるので2022年3月7日 22時半に加筆しました。
設定がNVENCに対応してない場合にこのエラーが発生します。
一度新しいプロファイルを作成して問題が発生するかなど確認してみてください。

このエラーが出る例
・解像度が高すぎる。(H.264は4096x4096まで、H.265 (HEVC)は8192×8192まで)
・一部バージョンの問題
(例えばバージョン 27.0.1以下で、古いグラボ世代を使用している場合に出力モードが「詳細」で「心理視覚チューニング」が有効で「無損失(ロスレス)」で開始しようとした場合にこのエラーが発生したことがありました。)

OBSアップデート後に発生した場合

OBSアップデート後に発生した場合は、以下の方法をお試しください。

・パソコンを再起動する
再起動で問題が解消する場合があります。

NVIDIA ドライバーを更新する
OBSのバージョンによっては要求するNVIDIA ドライバーが変わります。
NVIDIA ドライバーを更新して問題が解消するかお試しください。
NVIDIA ドライバー更新後はパソコンを再起動してください。
※最近(2024年2月23日)ではNVIDIA グラフィックドライバーバージョン 551.61を使用してる場合、一部GPUでNVENCが使用できない問題が発生しました。バージョン 551.76へ更新をすると解決するようです。

・映像エンコーダを変更する
再起動、ドライバー更新しても駄目な場合は「映像エンコーダ」を「NVENC」から「x264 (CPU処理)」または「QSV (QuickSync)」に変更してください。

・OBSのバージョンをダウングレードする
※お急ぎの場合は、ダウングレードをお試しください。

手順
1、ダウングレードしたいバージョンのページを開く
2、ページをスクロールして「Assets」よりダウンロード
3、ダウンロード後にインストーラーを実行して上書きインストール

★バージョン 30.0.2をダウンロードしたい場合
Release OBS Studio 30.0.2 · obsproject/obs-studio · GitHub

★バージョン 29.1.3をダウンロードしたい場合
Release OBS Studio 29.1.3 · obsproject/obs-studio · GitHub

★バージョン 29.0.2をダウンロードしたい場合
Release OBS Studio 29.0.2 · obsproject/obs-studio · GitHub

★バージョン 28.1.2をダウンロードしたい場合
Release OBS Studio 28.1.2 · obsproject/obs-studio · GitHub

★バージョン 28.0.3をダウンロードしたい場合
Release OBS Studio 28.0.3 · obsproject/obs-studio · GitHub

★バージョン 27.2.4をダウンロードしたい場合
Release OBS Studio 27.2.4 · obsproject/obs-studio · GitHub

NVIDIA ドライバーのバージョンが古い場合

NVENCを使用する場合、NVIDIA ドライバーを最新バージョンに更新してください。
NVIDIA ドライバーのバージョンが古い場合、以下のようなエラーメッセージが表示されます。

★バージョン 29.1以降
「インストールされている NVIDIA ドライバー はこの NVENC バージョン をサポートしていないので ドライバーを更新 してみてください。」

★バージョン 29.0~29.0.2
「インストールされている NVIDIA ドライバー はこの NVENC バージョン をサポートしていないので ドライバーを更新 してみてください。」

★バージョン 26.0.0~28.1.2
「現在お使いのビデオカードドライバはこのNVENCバージョンをサポートしていません。ドライバを更新してください。」

バージョン別の必要NVIDIA ドライバーバージョン

NVENCを動作させる為に必要なNVIDIA ドライバーバージョンです。
バージョン 500系だと最近のリリースバージョンになります。
もしバージョン 400系の場合はお使いのグラフィックボードが古いです。
グラフィックボードを新しいものにすることを検討してください。

★古いドライバー(バージョン 400系)/古いハードウェア(Kepler世代)を利用してる場合
要求を満たしていなくてもNVENCを使用出来るようにする互換性ハックが実装されていますが、バージョン 30.1/30.1.1では互換性ハックが壊れていてNVENCを使用出来ません。
もし古いドライバー/古いハードウェアでNVENCを使用したい場合は、修正された バージョン 30.1.2 にするか バージョン 30.0.2 をお試しください。
もしくは「映像エンコーダ」を「x264 (CPU処理)」または「QSV (QuickSync)」などに変更して対応してください。

・OBS Studio バージョン 30.1以降 (2024年3月13日リリース)
NVIDIA ドライバー 531.61 (2023年4月13日リリース) 以降が必要

・OBS Studio バージョン 29.1以降 (2023年5月3日リリース)
NVIDIA ドライバー 522.25 (2022年10月12日リリース) 以降が必要

・OBS Studio バージョン 27.2以降 (2022年2月13日リリース)
NVIDIA ドライバー 471.41 (2021年7月19日リリース) 以降が必要

・OBS Studio バージョン 24.0以降 (2019年9月18日リリース)
NVIDIA ドライバー 390.77 以降が必要 (うろ覚え)

・OBS Studio バージョン 23.0まで
NVIDIA ドライバー 378.66 (うろ覚え)

NVIDIA ドライバー更新方法

★注意事項
バイス マネージャー」で「ドライバーの更新」を試そうとする人が居ますが、最新版のドライバーはこの方法ではインストールされません。
これから紹介する2つの方法どちらかで更新をお試しください。

GeForce Experienceを使う場合

手順
1、OBSと開いているアプリケーションをすべて終了
※すべて終了してからドライバーインストールを推奨

2、GeForce Experienceを起動
GeForce Experienceを起動してログインをしてください。

もしまだインストールしていない場合は以下よりダウンロードしてください。
GeForce Experience - NVIDIA GeForce グラフィックス カードの強力な支援ツール | NVIDIA

3、ドライバータブを開く

4、ドライバータブを開いたらダウンロードをクリック
緑色のボタンで「ダウンロード」と出ます。

5、エクスプレス インストールをクリック
「エクスプレス インストール」をクリックするとインストールが開始します。
※環境によってはここでエラーが出る場合があります。
「インストールを続行できません / エラーが発生しました。」
※エラーが出た場合は1つ下の「GeForce Experienceを使わない場合」の方法で更新をしてください。

6、インストールが終わるのを待つ
インストール中はパソコンの画面が少しの間、真っ暗になったりもしますが正常です。
「インストールが完了しました。」と出たら完了です。

7、インストール完了後
インストールが完了したら必ずパソコンの再起動をしてください。
(私の環境だと何故かドライバーインストール後にパソコンのサウンドが聞こえなくなって再起動しないと治らない…)

8、OBSを起動して確認

GeForce Experienceを使わない場合

NVIDIA公式サイトからドライバーをダウンロードしてインストール。

手順
1、OBSを終了
※OBSを起動していたら終了をしてください。

2、NVIDIAのドライバーダウンロードページにアクセスする
公式ドライバー | NVIDIA

3、製品のタイプ / 製品シリーズ / 製品ファミリーなどを選ぶ
※お使いの製品を選択してください。

もし使用しているグラフィックボードが分からない人はタスクマネージャーで確認することが可能です。
1、タスクマネージャーを起動
2、「パフォーマンス」タブをクリック
3、パフォーマンスが開いたら「GPU」をクリック
4、右上を見る
※この画像の場合は「NVIDIA GeForce GTX 1660 Ti」

4、「探す」をクリック

5、ドライバーのダウンロードページが表示される
※「ダウンロード」をクリックしてダウンロード完了を待つ。

6、ダウンロードしたファイルを実行してインストール
画面に従いインストールを完了させてください。
インストール中はパソコンの画面が少しの間、真っ暗になったりもしますが正常です。
※インストールする際は開いているアプリケーションをすべて終了してからドライバーインストールを推奨

7、インストール完了後
インストールが完了したら必ずパソコンの再起動をしてください。
(私の環境だと何故かドライバーインストール後にパソコンのサウンドが聞こえなくなって再起動しないと治らない…)

8、OBSを起動して確認

NVIDIA ドライバーを更新してもエラーが出る場合

NVIDIA ドライバーのバージョンを確認する
OBSが新しくなればなるほど、古い世代のGPUだとNVENCを使用できません。
バージョン別の必要NVIDIA ドライバーバージョンを確認してください。

・パソコンを再起動する
再起動で問題が解消する場合があります。

・ドライバーをクリーンインストールする
※上2つでうまくいかない場合
公式の高度なドライバー検索 | NVIDIA
NVIDIA ドライバーの一部バージョンは問題があるので何かあったら複数お試しを。

・OBSをダウングレードする
バージョン 30.0.2をお試しください。

・「設定」→「出力」で「映像エンコーダ」を変更する
「x264 (CPU処理)」または「QSV (QuickSync)」などに変更してください。

NVIDIA ドライバーの更新をして発生した場合

よっぽどのことがない限り発生しませんが、もしドライバーを更新してからOBSでNVENCを使用しようとしてエラーが出るようになった場合はドライバーのダウングレードをお試しください。

★2024年2月23日 (29日情報加筆)
・発生内容
NVIDIA グラフィックドライバーバージョン 551.61を使用してる場合、一部GPUでNVENCに問題が発生しているようです。

・発生原因
NVIDIA グラフィックドライバーバージョン 551.61が原因
※このドライバーは2024年2月22日にリリースされました。

・影響GPU
NVIDIAの発表によるとGeForce GTX 1630 / GeForce GTX 1650 / GeForce GTX 1650 Ti
※影響GPUの情報元 : https://www.nvidia.com/en-us/geforce/forums/game-ready-drivers/13/537502/geforce-grd-55161-feedback-thread-released-22224/

・エラーウィンドウに表示される文字列
※配信の場合

エンコードエラー

配信中にエンコーダでエラーが発生しました:

NVENC Error: get_encoded_packet: nv.nvEncLockBitstream(s, &lock) failed: 8 (NV_ENC_ERR_INVALID_PARAM)

※録画の場合

録画エラー

録画中にエンコーダでエラーが発生しました:

NVENC Error: get_encoded_packet: nv.nvEncLockBitstream(s, &lock) failed: 8 (NV_ENC_ERR_INVALID_PARAM)

・OBSのログファイルに記録されるエラー

get_encoded_packet: nv.nvEncLockBitstream(s, &lock) failed: 8 (NV_ENC_ERR_INVALID_PARAM)

・解決方法 (2024年3月6日 7時半現在)
NVIDIAがドライバーバージョン 551.76をリリースしました。
この問題でお困りの人はバージョン 551.76へ更新をお試しください。

・解決方法 (最新ドライバーリリース前)
修正ドライバーがリリースされたので、この情報は削除しました。

情報の履歴
1、問題を修正する方法として551.61からダウングレードを紹介
2、ホットフィックス(551.68)がリリースされたのでそちらを紹介
※551.61以下には脆弱性があるようなので良くないと思い
3、修正版(551.76)がリリースされたので、ホットフィックスの情報を削除

・修正予定に関して (ホットフィックスリリース前)
バグを確認できたので、次のGame Ready Driverで修正する予定とのこと。

・修正予定の情報元 (DiscordはOBS公式Discordに参加で閲覧可)
https://discord.com/channels/348973006581923840/374636084883095554/1210616610239283293

NVENCを複数使用してる場合

Nvidiaが消費者向けGPUに同時NVENCセッションの最大数を制限しています。
最大数を超えるとエラーが発生するので超えた場合はNVENCを利用してるソフトを終了してください。

★8セッションの場合
・2024年2月6日 加筆
774さん 情報提供ありがとうございます!

セッションの最大数が5 → 8に変更されたようです。
Video Encode and Decode GPU Support Matrix | NVIDIA Developer
※どのドライバーバージョンから変更されたかはわかりませんが、少なくともWayback Machineでページを見てみると2024年01月28日には5のままで2024年01月30日には8に変更されていました。

★使い方例 (8セッションの場合)
GeForce Game Ready ドライバー 551.23で検証
8セッション利用できるようにはなりましたが、最新世代とかじゃない限り8セッションすべて使うのは難しいと思います。
お使いの世代によって性能差があるので、複数セッション利用する場合は負荷の確認をお忘れなく。

★5セッションの場合
・2023年3月24日 加筆
セッションの最大数が3 → 5に変更されたようです。
GeForce Game Ready ドライバー (v531.41) のリリースノートに書いてました。
https://us.download.nvidia.com/Windows/531.41/531.41-win11-win10-release-notes.pdf  

★使い方例 (5セッションの場合)
1、ShadowPlayのインスタントリプレイを使う
2、OBS Studioで配信を開始する (NVENCを使用する設定)
3、OBS Studioで録画を開始する (NVENCを使用するが録画用に別設定)
4、Discordで画面共有をする。(GPUエンコードするとして)
5、動画編集ソフトでエンコードをする
6、NVENCを使用するアプリケーションを利用 (エラーが発生します)

★3セッションの場合
・2020年08月30日 加筆
セッション制限の上限数が2 → 3にサイレントで変更されたようです。(06月頃?)
もしNVENCを2つ以上使う場合はドライバー更新をしてみてください。

★使い方例 (3セッションの場合)
1、ShadowPlayのインスタントリプレイを使う
2、OBS Studioで配信を開始する (NVENCを使用する設定)
3、OBS Studioで録画を開始する (NVENCを使用するが録画用に別設定)
4、NVENCを使用するアプリケーションを利用 (エラーが発生します)

★2セッションの場合
かなり前のバージョンのドライバーを使用してる場合のお話です。

★使い方例 (2セッションの場合)
※制限の仕様変更前の例です
1、ShadowPlayのインスタントリプレイを使う
2、OBS Studioで配信を開始する (NVENCを使用する設定 / 録画はしない)
3、NVENCを使用するアプリケーションを利用 (エラーが発生します)
※NVENCを3つ使用したい場合は、ドライバー更新をして解決するかお試しください。

NVIDIA搭載ノートパソコン/一体型パソコンなど

NVENCが表示されても対応してない場合があります。
対応してない場合は「設定」→「出力」の「映像エンコーダ」を変更する必要があります。
「x264 (CPU処理)」または「QSV(QuickSync)」など

エンコーダが選択されていない場合

バージョン 29.1以降で表示されます。
指定されたエンコーダが見つからなくなった場合に設定画面を閉じようとすると下記エラーがでます。

少なくとも 1つ の 映像 または 音声 エンコーダ が設定されていません。 録画 と 配信 の両方で必ず エンコーダ を選択してください。

「設定」→「出力」で「出力モード」が「詳細」を利用している場合は「配信」と「録画」両方のタブで「映像エンコーダ」と「音声エンコーダ」が選択されているか確認してください。
もしどちらのタブを確認しても選択していてエラーが出る場合は、新しいプロファイルを作成してみてください。

新しいプロファイルの作成手順
1、メニューバーを見る
「ファイル / 編集 / 表示 / ドック / プロファイル / シーンコレクション / ツール / ヘルプ」があるところ
2、「プロファイル」で「新規」を押す
3、新しいプロファイル名を設定する
4、設定を開く
5、配信 / 出力 / 映像 を再設定する。
6、設定をOKを押して閉じて再度「開始」してみる。

音声エンコーダでエラーを吐いてる場合

バージョン 29.1以降発生します。
指定された音声エンコーダが見つからなくなった場合に下記出力開始エラーがでます。
バージョン 30.0からは、この現象に遭遇した場合に音声エンコーダを変更することが可能になりました。

出力開始に失敗しました。詳細はログを確認してください。

注: NVENCまたはAMDエンコーダを使用している場合は、ビデオドライバーが最新のものであるかを確認してください。

ログファイルに表示される文字列

Encoder ID 'CoreAudio_AAC' not found
Stream output type 'rtmp_output' failed to start!

以前にCoreAudioを使用していた場合は、iTunesをインストールしてください。
※ストア版ではなく、デスクトップ版のiTunesが必要です。

もしうまくいかない場合は新しくプロファイルを作成しなおす方が早いです。(1つ下の手順を見てください)

設定ミスをしている場合

何らかの設定ミスをすると開始エラーが発生することがあります。
設定が戻せない人は、新しくプロファイルを作成して設定を1からしてください。

プロファイル作成方法
1、「メニューバー」→「プロファイル」
2、「新規」を選んで作成
3、「設定」を開き「配信(してる場合) / 出力 / 映像」を変更してください。
4、開始を試す

FFmpeg実装NVENCにフォールバックしてる場合

例えばこんなエラーが出るかもしれません。

エンコーダーでエラーが発生しました
エンコーダ NVIDIA NVENC H.264 (FFmpeg) のエンコードに時間がかかりすぎています (タイムアウト: 5秒)

★試してほしいこと
Windows側の設定変更
「ハードウェア アクセラレータによる GPU スケジューリング」をオフ(OFF)

・OBSの設定見直し
「設定」→「出力」
以下の設定を利用するとFFmpeg実装にフォールバックします。
「出力をリスケールする」の有効 (バージョン 30.0.2まで)
GPU」変更
「カラーフォーマット」を「NV12」または「P010 (HDRの場合)」から変更

「設定」→「映像」
・「出力 (スケーリング) 解像度」を下げる
・「FPS」を30にする

カラーフォーマット が問題の場合

「このエンコーダでは 16-bit エンコードを実行できません。」
「このエンコーダでは 10-bit エンコードを実行できません。」

解決策
1、「設定」→「詳細設定」を開く。
2、「カラーフォーマット」を「NV12 (8-bit, 4:2:0, 2planes)」に戻す。

カラーフォーマット と 色空間が問題の場合

「OBSは Rec. 2100 で 8-bit 出力をサポートしていません。」

解決策
1、「設定」→「詳細設定」を開く。
2、「カラーフォーマット」を「NV12 (8-bit, 4:2:0, 2planes)」に戻す。
3、「色空間」を「Rec. 709」に戻す。

設定してる解像度が問題の場合

NVENC Error: Frame Dimension greater than the maximum supported value. (NV_ENC_ERR_INVALID_PARAM)

このようなエラーが発生することがあります。
NVENCエンコーダが設定解像度に対応していないとこのようなエラーが発生することがあります。

対応解像度に関して
H.264は4096x4096
・H.265 (HEVC)は8192×8192

「設定」→「映像」で「基本 (キャンバス) 解像度」または「出力 (スケーリング) 解像度」を下げてみて改善するか確認してみてください。

解像度例
・基本 (キャンバス) 解像度 : 1920x1080
・出力 (スケーリング) 解像度 : 1920x1080

その他エラー

私の環境では発生した事ないのですが、一応情報として。
下記のようなエンコードエラーが出る場合
「get_encoded_packet: nv.nvEncLockBitstream(s, &lock) failed: 8 (NV_ENC_ERR_INVALID_PARAM)」
「nvenc_encode_tex: nvEncEncodePicture failed: 4 (NV_ENC_ERR_INVALID_DEVICE)」

いくつか解決策があるので1つ1つお試しください。
・ゲーム内のグラフィック設定(テクスチャ品質、VRAM使用率)を下げる (GPUメモリが不足している可能性)
・ゲームオプションでNVIDIA Highlightを無効にする
Windows Game DVRを無効にする
・「ハードウェア アクセラレータによる GPU スケジューリング」をオフにする
・ドライバーのクリーンインストール(最新版へ更新)
・ドライバーをアップデートした場合はダウングレード
GPU自体に問題がないかを確認 (GPU交換で解消した場合もあるそうです)

この情報を掲載する際に参考にしたURL一覧
Question / Help - Encoder error? Locks up OBS. | OBS Forums
https://www.reddit.com/r/obs/comments/xnyten/persistent_error_with_hardware_encoding_after_gpu/
https://www.reddit.com/r/obs/comments/x4v9ka/nvenc_error_nvenc_encode_tex_nvencencodepicture/
OBS freezes while recording after changing the monitor's refresh rate · Issue #3747 · obsproject/obs-studio · GitHub

古い世代(Kepler世代など)で発生するエラー

対応していないHEVCを選択した場合

NVENC Error: EncodeAPI Internal Error. (NV_ENC_ERR_INVALID_PARAM)

対応していない無損失を選択した場合

NVENC Error: NV_ENC_TWO_PASS_FULL_RESOLUTION is only supported multipass encoding on this architecture. (NV_ENC_ERR_INVALID_PARAM)

古い世代(Kepler世代など)を使用している場合

バージョン 30.1/30.1.1は互換性ハックが壊れているので古い世代だとドライバーエラーが出て出力開始できなくなっています。
バージョン 30.1.2 に更新するか バージョン 30.0.2 へ戻してください。

Kepler世代はサポートが終了していてセキュリティアップデートのドライバーしか提供されていません。
設定内容が一部対応してないのが原因でエラーが出ることがあります。

・Kepler世代(GTX 600/700)を使用している場合
一部設定を変更しないと開始出来ない可能性があります。

・出力モードを「詳細」に変更
下記値を変更してみてください。
・「プリセット」を「p5: Slow (高品質)」に変更
・「マルチパスモード」は「1パス」または「2パス (フル)」

※上2つでだめな場合は
・「最大Bフレーム」は「0」

※2021年6月13日までの情報
バージョン 27.0.1未満でエラーが発生することがありました。
古い世代では「心理視覚チューニング」が対応してない影響で無効にする必要がありました。 この世代の人はドライバーの提供も終了しているので買い替えを検討してください。

ニコ生プラグインを導入してる場合

GitHub - raccy/obs-rtmp-nicolive: ニコニコ生放送用 OBS Studio プラグイン

★放送枠を取らずに配信開始を押した場合
エラーが出るのは仕様です。

★ログインに失敗してる場合
※ログイン失敗ウィンドウも出ます
ログインが正常に出来るようにしてください。

各バージョンにあった変更 (パッチノート引用)

バージョン 28.1

メモ
現時点ではAV1エンコーダはNVIDIA GPUでOBSが実行されていない限り表示されないとの事。

Jim — 今日 11:32
for nvenc, I actually made it so that nvenc av1 doesn't show up unless obs is running on the nvidia gpu
so if anyone's wondering why av1 isnt' showing up, it's beucase of that
I'll eventually fix that
but for now that's the way it has to be

パッチノートに書かれている内容まとめ
Release OBS Studio 28.1 · obsproject/obs-studio · GitHub
検証用にRTX 40シリーズほしい…

NVENC AV1 ハードウェアエンコーダが追加
・現在 NV12 (OBS初期値) および P010 カラーフォマットでのみ動作
・現在出力モード「詳細」で「出力をリスケール」機能はサポートされていない。
NVIDIA RTX 40 シリーズ ビデオカードでのみ使用可能で表示されます。
・出力モード「基本」の録画で利用可能 (ベータ版のメモ: これをテストして、品質が「high」と「indistinguishable」で期待どおりであることを確認してください! 必要に応じて、内部品質係数を微調整できます。)

NVENC プリセットの更新
・プリセット、チューニング、マルチパス モードの 3 つの異なる設定に分割。
・プリセットは P1 ~ P7 になり、数値が低いほど品質が低くなり、数値が高いほど品質が高くなります。プリセットを高くすると、GPU の使用率が高くなり、OBS と同時に実行されるゲームのパフォーマンスに影響を与える可能性があることに注意してください。最高のプリセットを使用すると、同時 NVENC エンコード セッションの数が少なくなる場合があります。 OBS は、アップグレード時に現在の NVENC 設定を最も近いプリセットに自動的にマップします。
・チューニングは、遅延と品質のどちらを優先するかを決定するために使用されます。高品質、低遅延、超低遅延の 3 つの設定があります。
・マルチパス モードは、エンコードで 2 番目のパスを使用するかどうかを決定するために使用され、無効、1/4 解像度、およびフル解像度の 3 つの設定があります。これを有効にすると、GPU リソースの使用量が増えますが、品質が向上します。

バージョン 28.0

NVDIAの公式にHEVCのやり方が書いてるのでお急ぎの方はそちらへ
NVIDIA NVENC Obs Guide | GeForce News | NVIDIA (英語ページ)

パッチノートに書かれている内容まとめ
Release OBS Studio 28.0 · obsproject/obs-studio · GitHub

HEVCに対応しました。
- HDR および 10 ビットは、AV1 および HEVC エンコーダでのみエンコードできます。
※10 ビット HEVC エンコーディングには、NVIDIA 10 シリーズ、AMD 5000 シリーズ、またはそれ以降の GPU が必要です。Intel QuickSync と Apple VT はまだサポートされていません。
HDR の推奨設定は、カラーフォーマット : P010 と 色空間 : Rec.2100 (PQ)です。
10 ビット SDR をエンコードする場合は、SDR 色空間 (Rec. 709、Rec. 601 など) で カラーフォーマット P010 を使用できます。ただし、AV1 または HEVC は引き続き必要です。
HDR 配信は現在、HEVC エンコーダを介した YouTube - HLS サービス経由でのみサポートされています。

バージョン 23.0

古いNVENC(FFmpeg実装)との違い

■新しいNVENCに関して
OS
8.1以降(10/11) に対応 (Windows 7は非対応)

「設定」→「出力」 (基本の場合)
エンコーダを「ハードウェア (NVENC)」にする。
※内部的に23.0以降は8.1以降では新しいNVENCになっています。

「設定」→「出力」 (詳細の場合)
「出力をリスケールする」は非対応
※変更すると古いFFmpeg実装にフォールバックします。
GPU」変更は非対応
※変更すると古いFFmpeg実装になります。 ※変更非対応コミット
「カスタム出力 (FFmpeg)」には表示されない。 (カスタム側はFFmpegなので別)

「設定」→「詳細設定」
「カラーフォーマット」を「NV12」のみ対応。
変更すると新しいNVENCを利用出来ず古いNVENCにフォールバックします。

■期待出来る効果
「RTX20xx番台などの(Turing世代)」以降で品質の向上
「GTX6xx番台」以降でパフォーマンスの改善

■プロセスの違い
古いNVENC (FFmpeg実装)
1、OBSがフレームをレンダリングする。
2、OBSは他のエンコーダと同じようにGPUからRAMにテクスチャを転送します。
3、FFmpeg NVENCはそれをGPUにアップロードします。
4、FFmpeg NVENCはそれをエンコードする。

新しいNVENC
1、OBSがフレームをレンダリングする。
2、NVENCはそれをエンコードする。

これはOBSの性能向上だけではなく、NVENCを使用しながらプレイしているゲームへの影響も軽減されます。シングルパソコンのセットアップでゲームを配信したり録画したりする人にとっては、必需品と言えるでしょう。

内容引用元 : OBS Studio Progress Report, February 2019 | OBS

バージョン別 変更点メモ

長いので折りたたんでいます。
全ての変更をメモしてるわけじゃないです。

▶ここをクリックで表示 バージョン 30.1
- NVENCのROI サポートを追加 (バックエンド)
- NVENCのオプション(disable_scenecut)を追加
- 必要な場合にのみNVENC互換性ハックを使用
- Windows 7 NVENCフォールバックを削除
- Ubuntu 20.04 NVENCフォールバックを削除

バージョン 30.0
- jim-nvenc から obs-nvenc に名称変更
- VBRモードで最大ビットレートが機能しない問題を修正

バージョン 29.1
- jim-nvenc の P6 または P7 プリセットを使用している際にビットレートを途中で変更しても反映されない制限を緩和
- エラーログの改善
- GPU 変更をした際のエラーが出なくなってたのを修正
- GeForce MX350 バリアントをブラックリストに追加
- GeForce MX450 バリアントをブラックリストに追加

バージョン 29.0
- 古い世代向けに互換性オプションを追加
- 初期値(デフォルト)のプリセットを p6 → p5へ変更
(自分で変更して設定ファイルにp6と指定されてる場合は自動的には変更されない)

バージョン 28.1
- NVENC AV1 ハードウェア エンコーダを追加
- NVENCのプリセットを更新

バージョン 28.0
- 名称からnewを削除
- FFmpeg出力になった場合にログに分かりやすいように変更
obs-ffmpeg: NVENC "(new)" begone · obsproject/obs-studio@21da0b0 · GitHub
- CQPの上限を 30 から 51 に変更
obs-ffmpeg: Set NVENC CQP maximum to 51 · obsproject/obs-studio@9c20ad9 · GitHub
- NVIDIA TeslaでNVENCサポートを追加
- HEVCのNVENCは「最大 Bフレーム」は 0 (普通の方は 2)
- HEVCサポートをNVENCに追加
- Linux用のNVENCブラックリストチェックを追加

バージョン 27.2
- ブラックリストにMX450を追加

バージョン 27.0
- ロスレスサポート端末のみエンコードされるよう修正

バージョン 26.1
- ブラックリストにMX350を追加

バージョン 26.0
- 上記エラーの翻訳を追加

バージョン 25.0.8
- NVENCエラーをわかりやすいようにする為のメッセージ追加

バージョン 25.0
- 出力モードが詳細の場合に、FFmpeg実装のNVENCを非表示に変更 (混乱を防ぐために)
- 出力モードが詳細の場合に、NVENC (new)で再スケーリングをサポート (内部的に古いNVENCにフォールバック)

バージョン 23.2
- 少数フレームレート(FPS)に設定してた場合のJim-nvnec不具合を修正 (59.94とか)

バージョン 23.1
- Quadro P5000でNVENCが表示されない不具合を修正
- 同じセッションで最初の出力フレームが誤って次のセッションで表示される不具合を修正
- ブロックしていたアダプタの一部を削除
(23.1現在のブロックされるアダプタ一覧 : 720M , 730M , 740M , 745M , 820M , 830M , 840M , 845M , 920M , 930M , 940M , 945M , 1030 , MX110 , MX130 , MX150 , MX230 , MX250 , M520 , M500 , P500 , K920M)

バージョン 23.0
- NVIDIA NVENC H.264 (new)を実装 (Windows 8 以降対応)
- NVENCが利用可能な場合、デフォルトエンコーダをNVENCに変更 (23.0以降にインストールした人)
- 出力モードが基本の場合、自動的に新しいNVENC(jim-nvenc)に変更 (23.0以降にインストールした人)
- NVENCが利用出来ないGPUをブロックする機能を実装 (不具合で23.0.1現在ブロックされていない可能性あり)
(ブロックされるアダプタ一覧 : 720M , 730M , 740M , 745M , 820M , 830M , 840M , 845M , 920M , 930M , 940M , 945M , 720A , 730A , 740A , 745A , 820A , 830A , 840A , 845A , 920A , 930A , 940A , 945A , 1030 , MX110 , MX130 , MX150 , MX230 , MX250 , M520 , M500 , P500 , K920M)

バージョン 19.0.0 - defaultプリセットの削除 (defaultの場合、自動的にhqとして扱われます)

バージョン 17.0(0.17.0)
- 内部エンコーダのネーム変更。(nvenc_h264 → h264_nvenc)

バージョン 0.16.0
- NVENC H.264プロファイルが設定されない問題を修正
- b-fremes設定を追加 (デフォルト値 : 2)

バージョン 0.15.0
- バージョン 0.14.2で使えなかったレート制御の無損失のバグが修正
- 出力モードが基本の場合、1つのコアだけ?を使用していたバグを修正

バージョン 0.14.2
- CBR(固定ビットレート)が正しく動作しないのを修正
- 録画時にビットレートを多く使用する問題を修正 (CQP → VBRに変更?)
- プリセット高品質?ビットレートが、50000 → 22000 に変更
- ビットレート上限を増加、90000 → 300000 に変更
- レート制御が変更 今までは「CBR」「VBR」2種だったが「CQP」「無損失」が追加
※無損失はバージョン 0.14.2では動作しない。バージョン 0.15.0のリリースで修正済み (1コミット後に修正だった)

バージョン 0.14.0
- Windows 版とLinux(コンパイル必須?)に対応。
- バージョン 0.12.0 のような Windows 10 必須ということがない。
- NVIDIA ドライバーVer 358.xx以降必須 (コメント情報)
- CBR (固定ビットレート)が動作していない (0.14.2で修正済み)
- プリセット : 既定・高画質・高品質・ブルーレイ・低遅延・低遅延高画質・低遅延高品質
- 基本モード名称 : ハードウェア (NVENC)
- 詳細モード名称 : NVENC H.264

バージョン 0.12.0
- Windows 10が必須の模様。 (仕様上)
- 名称 : NVIDIA NVENC H.264 エンコーダ (Media Foundation)
Windows 10環境を持ち合わせてない為不明。 (情報募集中)
※バージョン 0.14.0 リリースにより非推奨になった。