OBSに画質を求めるのは間違っているだろうか

OBSに画質を求めるのは間違っているだろうか

TL;DR 見出しにジャンプ

この記事はOSSのOpen Broadcaster Software(OBS Studio)のチュートリアルです。

OBSは配信の品質向上、処理の軽量化に最適なアプリケーションです。たとえ録画用途であってもBandicamやShadowPlay等の他のアプリケーションを選ぶ余地はありません。
日本語の情報が少なく、OBS関連では辿り着けない情報も含めて解説するので、何かに躓いている方や更に配信・録画品質を上げたい方は必見です。
目次・Ctrl-F を活用してね!

更新履歴 見出しにジャンプ

日時 内容
2019-04-16
  • 推奨されるハードウェアのスペックについて
  • レンダリング遅延映像の遅延 (非同期)について
  • Chromeのハードウェアアクセラレーションを無効化せずにキャプチャする方法について
  • OBS単体でBGMを流す具体例
  • FFmpegカスタム出力x264、utvideoの解説
  • YouTubeの劣悪なエンコード事情とその対処方法について
  • 2019-04-24
  • 曲名表示BGMスクリプトの項を、OBSだけでBGMを再生・曲名を表示する方法に変更
  • YouTubeのVP9と疑似4Kについて
  • 2019-04-28
  • OBSのログ、クラッシュレポートの見方について
  • メディアソースの記述を修正
  • OBSだけでBGMを再生する為の生成スクリプトに、曲名を表示しないオプションを追加、解説を修正
  • 2019-05-10
  • はみ出ている要素を修正
  • ソースの右クリックメニュー -> 変換の説明を追記
  • 統計の解説の追記
  • ビットレートに関する項目を更新
  • ANGLEの説明を修正
  • 詳細設定の説明、リンクの不具合の修正
  • アプリケーション毎に音声を分けて録音する解説を更新
  • OBSで動画編集する方法
  • AudioMediaSource.ps1とその説明を更新
  • よくある質問に対応したトラブルシューティングの項を追加
  • 2019-06-21
  • トラブルシューティングに項目を追加
  • タイムラプスの倍率の表記の誤りを修正
  • ソースの右クリックメニュー -> 変換についての記述を詳しく
  • エフェクトフィルタ, 映像キャプチャデバイスの色空間についての記述を詳しく
  • YouTubeの新しい配信UIの解説
  • Discordオーバーレイのフォントを変えるCSS
  • カラーバーやタイマーを表示する方法
  • 疑似4Kライブ配信の方法
  • 負荷を掛けずに同時配信する方法
  • 2019-07-09
  • Discord StreamKit OverlayYouTubeLiveコメント用CSSの4K対応
  • ソースの右クリックメニュー -> スケールフィルタにおける滲まないスケーリングに関する記述を修正
  • NVEncセッション数を専有する条件について追記
  • MPEG-2、HEVC拡張機能のリンク
  • 対YouTube最強エンコード疑似DCI風8K60fps
  • 2019-10-20
  • (記事内容とは無関係)画像やフォーマットの調整と統一
  • 2019-11-18
  • トラブルシューティング項目の追加
  • OBS 24.0~ ブラウザソースの音声ソースの設定を追記
  • Discord Overlayの解説を詳細に、CSSの追加
  • NVIDIA GPUにおけるTuring NVEncの最低要件をGTX 1660から1650 Superへ変更
  • hevc_nvenc vbr_hqにも関わらずmaxrate指定が抜けていたのを修正
  • FFmpegカスタム出力 映像エンコーダ設定の区切り記号に誤りがあり、正しく動作しないものであったのを修正(コメントありがとうございます)
  • (記事内容とは無関係)リストのフォーマットの統一
  • 非公式ドキュメントPDFのリンクを追加
  • 記事が肥大したため、早見表を追加
  • 執筆途中のまま公開になっていたハードウェア構成の項目を修正
  • 2019-11-19
  • 各項のビットレートの見直し・確認
  • 同時配信の解説に追記
  • 箇条書きが崩れていたのを修正
  • 2019-11-28
  • 一部のリンクが機能していなかったのを修正
  • ロスレス録音の方法を追記
  • YouTubeへのアップロードに適した音声形式・処理について言及
  • アプリケーション毎に音声を分ける方法についての解説を整理
  • 不要な「こと」「という」「もの」を削除した(今後も気づいたら削除していく)
  • 2020-02-12
  • OBS 24.0.3~GPU優先度修正テストに関する内容を追記
  • 見出しの階層を見直し
  • リンクのない参照を修正
  • ウィンドウキャプチャの説明を追記
  • ソースの右クリックメニュー -> コピー、貼り付け(参照)、貼り付け(複製)を詳しく
  • 変換の設定を詳しく
  • OBS用LUTの作成方法
  • ブラウザソースでスクロールできない問題を解決する設定
  • FFmpegカスタム出力 DNxHDの設定
  • NVEncのpresetをslowからmediumに修正
  • Twitch・Mixer FTL向けの留意点
  • imgのlazy-loadingに対応
  • Babyface ProからBabyface Pro FSへ修正
  • 崩れた表記を修正
  • 2020-02-17
  • リンクの不具合の修正
  • 2020-03-03
  • リンクの不具合の修正
  • 2020-03-11
  • VSTプラグインについて追記
  • (記事内容とは無関係)試験的な見出しのリンク機能
  • 2020-05-03
  • ソースの右クリックメニューのミキサーを非表示、インターレース解除について追記
  • OBS 25.0で追加されたVulkan・Chrome・UWPの新しいキャプチャー3D LUT変換の挙動変更への対応
  • RTX Voiceの設定
  • 2020-06-07
  • 見出しリンクの修正
  • 表示の崩れを修正
  • トラブルシューティングの各項をそれぞれの設定項目に分類した
  • 2020-07-31
  • AMD GPUのハードウェアエンコーダAMFの設定を追加
  • 2020-09-13
  • スケールフィルタの選び方を追記(ポイント、バイキュービック、ランチョス、エリア)
  • 中間コーデックDNxHDの設定を修正
  • エンコード1000本ノックで爆誕したNVEncさいつよ録画設定を追加・得た知見を配信設定に追記
  • ネットワーク設定の解説に追記
  • 最新のFFmpegを組み込んだOBSのビルド方法
  • 2020-09-14
  • CEFを組み込んだOBSのビルド方法(ブラウザソースを有効にする)
  • 2020-12-09
  • ワンオペ配信に必須な自動シーンスイッチャー
  • キャンバス解像度が変わってもレイアウトが崩れない相対的なソースをつくる
  • OBSのビルド手順に追記
  • 2020-12-10
  • ストリームエンコーダを使用して、負荷ゼロで配信と同時に録画する
  • リプレイバッファの解説・配信中にリプレイを流す
  • HLSを使ってHEVCでYouTubeに配信する
  • OBSが使用するスレッド数を制限する
  • 2020-12-15
  • OBS Studio 26.1.0リリースに伴いOBSのビルド手順を修正
  • 2020-12-17
  • ゲームキャプチャでFXAAの効果がキャプチャに反映されない場合の設定
  • 配信開始時に警告したり、リプレイバッファを自動開始する設定
  • 録画時のビットレートやレート制御の設定を見直した
  • YouTube HLS配信時の設定を修正
  • 2021-05-01
  • クラッシュしても動画ファイルが破損しない録画設定録画の最多重化
  • IPv6環境ではRTMPではなくHLSを使う
  • 配信の通信を暗号化するRTMPS
  • iTunesが入っている環境では配信の音質が向上する
  • 音声フィルタの詳細な解説
  • OBS 27.0で対応したNVIDIA Broadcastによるノイズ抑制フィルタの設定
  • 新しいQtでOBSをビルドする
  • 2021-06-28
  • 回線の問題で配信が安定しないときに気を付けるべきポイントを統計 - ドロップフレーム(ネットワーク)に追記
  • RTMP(S)をIPv6で配信する設定を配信設定 -> 詳細設定 -> ネットワーク -> IP選択に追記
  • 936p60の罠
  • 2022-03-02
  • OBS 27.2でNVEncさいつよ設定自ビルドしなくても使えるようになった
  • hevc_nvenc lossless録画する設定例を追加
  • OBS 27.2でCEFが更新された
  • OBSのビルドにはm-ab-sではなくffmpeg-windows-build-helperでビルドしたFFmpegが適切
  • アプリケーション毎に音声を分けて録音する方法の解説にVoiceMeeter Potato, win-capture-audio, AverMedia・ElgatoのAIFを追加
  • (記事内容とは無関係)ソースの右クリックメニュー -> 変換のように、テーブルのセルにパーマリンクするようにした
  • (記事内容とは無関係)更新履歴を遡ってパーマリンクを付けた
  • 2022-03-31
  • オーディオの詳細プロパティシーンコレクションを共通化する
  • (記事内容とは無関係)更新履歴の長さを制限
  • 2022-09-01
  • OBS 28.0の新機能の解説
  • ブラウザ, メディアソースで明らかに構文に問題がないのに、反映されなかったらOBSを再起動してみよう
  • DiscordオーバーレイのCSSを更新
  • 冗長で不明瞭なメディアソースLUTの解説を改善
  • VST 2.x プラグインのパスの誤りを修正
  • 冗長で不明瞭な統計を整理
  • 録画中の一時停止ボタンの出現条件, 仮想カメラの解説
  • RTMPS, HLSの使用ポートと組織ネットワークにおける利点
  • 配信サービスの推奨設定事項を無視する設定の有効無効の意味を逆に説明していたのを修正
  • 設定値の妥当性に悩まないようNVIDIA NVENC H.264, HEVC, QuickSync H.264, hevc_nvenc, h264_qsvを加筆修正
  • YouTubeに高品質な再エンコード設定を強制するストリームキー設定
  • 古いか冗長な項を削除し、必要な項は既存の雛形に入れた
  • (記事内容とは無関係)画像のレイアウトシフトを修正
  • ダウンロードとインストール 見出しにジャンプ

    OBSは開発が盛んなOSSなので、更新はチェックしておくと良い。
    下記の公式サイトにインストーラとポータブル版(Zip)のURLがある。
    Open Broadcaster Software | OBS

    Streamlabs(OBSではない)やN AirなどのForkには本家にはない便利な機能もあるが、バージョンが古かったり録画機能が削除されているので個人的には本家がオススメ。

    因みに"GitHubで見る"をクリックすれば、正式リリース前のRelease Candidate版(リリース候補版)等をいち早く試すこともできる。
    ソースコードを入手し、高機能化するために自前ビルドも可能。

    非公式ドキュメント(頻繁に更新されています)
    Open Broadcaster Software Studio Multiplatform Help Guide [PDF] | OBS Forums

    メニューバー 見出しにジャンプ

    自動構成ウィザードは、実行中のマシンに合わせて適切に設定してくれる。
    らしいが、何れにせよ設定し直す必要があるので勉強も兼ねて"いいえ"を選択。

    OBSの初回起動と画面構成 自動構成ウィザード

    ファイル 見出しにジャンプ

    項目 説明
    録画を表示
  • 設定 -> 出力 -> 録画 -> 録画ファイルパスで設定されたディレクトリが開かれる。
  • 録画の再多重化
  • 再エンコードせずmp4コンテナへ変換する機能。
  • 規格外や非対応のフォーマット変換では録画が最多重化されましたが、ファイルが未完成の可能性がありますと表示され失敗する。
  • 設定
    設定フォルダーを表示
  • シーンやプロファイル等のデータ、ログ等が保存される場所。
  • ここだけバックアップしてあれば設定内容を復元できる。
  • プロファイルフォルダーを表示
  • 現在選択中のプロファイルに該当するディレクトリを表示する。
  • 常に手前に表示
  • ウィンドウがアクティブでなくても最前面に表示する。
  • 終了
  • OBSを終了
  • 編集 見出しにジャンプ

    項目 説明
    全画面インターフェイス
  • フルスクリーン表示。F11で切り替えられる。
  • ドック
  • UIのリセットで配置を初期設定に、UIのロックで配置を固定する。
  • GUIの下部に表示されている項目の有効/無効がここで切り替えられる。
  • 配信や録画の問題解決に必須なので統計に必ずチェックを入れる。OBS23.0~の機能なので、古いバージョンの人はアップデートしよう。
  • ツールバー
  • リストボックス: 右クリックメニューの項目をGUIにも追加する。
  • ステータスバー
  • 配信、録画時間や安定性の簡易的な表示。
  • マルチビュー(全画面)
  • 放送用のお洒落な管理画面をフルスクリーンで表示する。
  • マルチビュー(ウィンドウ)
  • 放送用のお洒落な管理画面をウィンドウで表示する。
  • ツール 見出しにジャンプ

    項目 説明
    自動構成ウィザード
  • 初回起動時にキャンセルしても、ここかプロファイル新規作成時に実行できる。
  • 私の推奨値よりは低めになるが、回線に見合ったビットレートを知ることができるので、何も設定しないで配信するよりは実行したほうが良い。
  • Decklink Output
  • Blackmagic Designのキャプチャボードと連携できる機能。
  • 字幕 (実験的)
  • 埋め込み(CEA-608/708)字幕。OBSの映像ソースとしては使えず、ストリーミングサービス側で対応していないと表示されない。
  • 自動シーンスイッチャー
  • アクティブウィンドウのタイトルを取得し、それに合わせて自動でシーンを切り替える機能の設定。
  • 出力タイマー
  • 配信、録画の開始/停止タイマー機能の設定が可能。
  • スクリプト
  • バンドルされたLuaJITまたはシステムのPython環境を通してLuaとPythonスクリプトを実行できる。
    https://obsproject.com/docs/scripting.html
  • 自動シーンスイッチャー 見出しにジャンプ

    OBS 自動シーンスイッチャー

    ワンオペやシングルディスプレイ環境でのオペレーションを求められる配信では、この自動シーンスイッチャーが大活躍する。
    ウィンドウタイトルに一致する文字列や正規表現を書き、それに対応したシーンを選択すると、そのウィンドウがアクティブになった時に任意のシーンに自動で切り替えてくれる。
    オーバーレイやコメント欄、ゲーム、その他ウィンドウ、背景など用途別にシーンが適切に分けられていることが前提。

    項目 説明
    ウィンドウタイトル シーン名 ^RME TotalMix FX.*$
  • RME TotalMix FX: Babyface Pro (1) - 48.0kのような、文頭がRME TotalMix FXなウィンドウに一致する例(前方一致)
  • ^.*Visual (Studio Code|...)$
  • ファイル名 - ワークスペース名 - Visual Studio Codeファイル名 - ワークスペース名 - Visual ...に一致する例(OR)
  • ^(?!.*Launcher)Minecraft.*$
  • Minecraft 1.16.3には一致するが、Minecraft Launcherに一致しない例(否定先読み)
  • ^(?!.*Discord).*VoiceChat$
  • Discordのボイスチャンネル名"VoiceChat"でのGo Liveポップアップウィンドウに一致する
  • どのウィンドウにも一致しない場合 切り替える: Default
  • 待機画面等のデフォルトのシーンを作成し、それを指定する。配信中に映すものが無くなっても真っ黒にならないようにする。
  • アクティブウィンドウタイトルを確認する間隔 1000-2500ms
  • ウィンドウを頻繫に切り替えてそれに追従させたくない時は間隔を大きくする
  • シーンスイッチャーは アクティブ(停止ボタン)
  • OBSのシーンを弄る時など、勝手に切り替わっては迷惑な時に停止するとよい
  • ヘルプ 見出しにジャンプ

    項目 説明
    ヘルプポータル https://obsproject.com/help
    ウェブサイト https://obsproject.com/
    Discordサーバーに参加 https://discordapp.com/invite/obsproject
    ログファイル
  • ログファイルやクラッシュレポートのディレクトリを表示したり、OBSサーバにアップロードすることができます。
  • OBS Log AnalyzerOBS公式Discord #help-and-supportでURLを入力するとエラー内容等を整形して表示してくれる。
  • クラッシュレポート
    更新を確認
  • ここからアップデート出来る。
  • OBS Studioについて
  • クレジット
  • ファイルの整合性を確認
  • 解決できない不具合があるとき、OBSをクリーンインストールする前に試すとよい
  • シーンコレクション 見出しにジャンプ

    メニューバー -> シーンコレクション

    シーンコレクションには、映像・音声ソースを含んだシーンマイク・デスクトップ音声を扱うミキサーが含まれる。
    配信枠や録画別に複数シーンを一括で切り替えられて便利。不必要なシーンを読み込まない状態にできるので、軽量化・安定化に役立つ。
    解像度の異なるプロファイルで同一のシーンコレクションを使うことは可能。

    シーン 見出しにジャンプ

    ソースを纏めたものを、切り替えられる。
    +で追加、-で削除。

    ソース 見出しにジャンプ

    選択したシーン内に映像・音声・テキスト等のソースを追加(+ボタン)する。
    また、既に追加したソースの表示・非表示をここで切り替える。

    OBSのソース
    項目 説明
    アプリケーション音声キャプチャ
  • デスクトップ音声にミックスされる前の、特定のウィンドウの音声を取得する。
  • ウィンドウキャプチャ
  • 特定のウィンドウ、ボーダーレスウィンドウを安定してキャプチャする。
  • フルスクリーンモードのゲームをキャプチャするには、ゲームキャプチャを使用する。
  • 仮想デスクトップ上のウィンドウもキャプチャ可能。
  • ゲームキャプチャ
  • DirectX、OpenGLゲームのウィンドウをキャプチャする。
  • フルスクリーンモードのゲームに対応。
  • シーン
  • シーンを切り替えずにシーンをソースとしてインポートする。
  • ワンオペ配信に欠かせない自動シーンスイッチャーと組み合わせると存在意義を発揮する。
  • テキスト(GDI+)
  • テキストを直接またはテキストファイルを指定して、映像に合成する。
  • ブラウザ
  • OBS組み込みブラウザでURL先の内容を表示する。
  • リソースを多く消費するため、メディアソース等で代替可能なものにわざわざ使わない。
  • メディアソース
  • 映像、音声ファイルを指定し、再生する。
  • 対応する拡張子のファイルがD&Dされたとき、自動で追加される。
  • 複数の映像、音声ファイルを連続して再生することも可能。
  • 映像キャプチャデバイス
  • キャプチャボードやWebカメラの映像を取得する。
  • 画像
  • 画像を指定し、表示する。
  • 対応する拡張子のファイルがD&Dされたとき、自動で追加される。
  • 画像スライドショー
  • 複数の画像または画像の入ったディレクトリを指定し、スライドショーとして表示する。
  • 画面キャプチャ
  • 個別のウィンドウではなく、デスクトップ全体のキャプチャを行う。
  • 複数のアプリケーションに跨がるなど画面全体を録画する必要がある時のみ使用する。
  • 仮想デスクトップは非対応(ウィンドウキャプチャ等を使用)。
  • 設定 -> 一般の"スクリーンキャプチャからOBSウィンドウを非表示にする"を有効にすると、OBSのプレビューが映り込まなくてよい
  • 色ソース
  • パレットまたはHTMLカラーコードで単色の背景ソースを追加する。
  • 音声入力キャプチャ
  • Windows上での"録音デバイス", 設定 -> 音声のマイク音声デバイスをキャプチャする。
  • マイク音声デバイスを5つ以上入力したいときに使える
  • 音声出力キャプチャ
  • Windows上での"再生デバイス", 設定 -> 音声のデスクトップ音声デバイスをキャプチャする。
  • RME TotalMixやVoiceMeeter Bananaのようなソフトを使ってループバックする必要がない。
  • (マイク音声デバイスへのループバックが不足して、)デスクトップ音声デバイスを3つ以上入力したいときに使える
  • グループ化
  • ソースを束ねて一括でレイアウトを移動したり、フィルタを適用したり、纏めて表示/非表示を切り替える。
  • アプリケーション音声キャプチャ 見出しにジャンプ

    OBSを含む多くのソフトウェア(例外: Game DVR, Discord。Windows 11のAPI改善によって今後増えると思われる)が取得できる音声出力はデスクトップ音声(Windowsのサウンド -> 再生デバイス)であり、これは一部のオーディオインターフェースを除き一つしか存在しない。
    このため、例えばDiscordの画面共有のように、通話やゲーム音などアプリケーション毎に録音できない。

    OBS 28.0+で使える「アプリケーション音声キャプチャ」ソースは、最近のWindowsで使える同様のAPIに対応したOBS向け拡張機能と同様に、アプリケーション毎の音声を別けて録音できる。
    今までそのデスクトップ音声デバイスを増やす目的で、複数のWDMデバイス・ループバックを追加する(=RTX Voiceやボイチェンソフトと同じ)高価なオーディオインターフェースが必要だったが、
    少なくとも音声フィルタを使用してMixをOBS上で完結させるなら必要なくなった。
    配信録画はさることながら、OBSの仮想カメラ機能を組み合わせると、リッチなビデオ会議が格段にお手軽になる。

    項目 説明
    ウィンドウ 任意
  • キャプチャしたいアプリケーションを起動した状態で、該当するものを選択。
  • ウィンドウの一致優先順位 ウィンドウキャプチャに同じ

    目的が異なるので、配信界隈で耳にするようになった順にアプリケーション毎の音声を別けて録音する方法を列挙した。

    種別 特徴・用途
    VB-Audio VoiceMeeter Potato (VB-CABLE) ソフトウェア(仮想WDMを追加)
  • 不安定・設定が煩雑
  • Discordやビデオ会議ソフトなど、OBS以外でも使いたい
  • RME TotalMix Fx
  • Live Streamer AX310(AX310) | AVerMedia
  • Wave:3 | elgato.com
  • オーディオインターフェースとソフトウェア(仮想WDMを追加)
  • 先行投資が必要
  • OBS以外でも使いたいし、音質向上など配信全体のクオリティを上げたい
  • bozbez/win-capture-audio OBSの拡張機能(最近のWindowsで使えるAPIを使用して、任意のアプリケーション音声をキャプチャ)
  • OSS
  • とりあえず通話とゲーム音分けて配信したい
  • 「アプリケーション音声キャプチャ」ソース OBS 28.0以降の標準機能
  • ネ申!!
  • 下図は、私が現在使用しているRME Babyface Pro FSのTotalMixが如何なるものかイメージしやすいように、WindowsやOBSの機能と関連付けて、ルーティング状態を示したもの。

    RME Babyface Pro FSのTotalMix FXでDiscordとゲーム音を分けてOBSで録音する

    音がよくてWDM沢山貰えてWindowsドライバが安定していると言ったら実質RMEくらいしかない。 AG03の音質に不満を覚えてしまった方にもオススメです。

    エキスパンダー機能があるとOBS, Discord, ビデオ会議ソフト毎に感度調整しなくて済むから気になっている

    RME_TotalMix-FX-2017.pdf

    ウィンドウキャプチャ 見出しにジャンプ

    項目 説明
    ウィンドウ 任意
  • キャプチャしたいアプリケーションを起動した状態で、該当するものを選択。
  • フルスクリーンゲーム等の画面をフックする必要がある場合はゲームキャプチャを使用する。
  • Windowsでは、最小化したウィンドウやフルスクリーンウィンドウの下に隠れたウィンドウは静止画になってしまう。別のディスプレイか仮想デスクトップにウィンドウを置くと描画されるようになる。
  • キャプチャ方法 自動
  • 特に必要がなければ自動を選択する。
  • BitBit(Windows 7 以降)
  • 古くから伝わるBitBit APIを用いたキャプチャ。
  • Windows Graphics Capture(Windows 10 バージョン 1903 以降)
  • 最近出た新しいWGC APIを用いた、UWP、Chromium系ブラウザ(Edge、Chrome、VSCode、Discord...)に対応するキャプチャ方法。
  • 仕様上DPIスケーリングが適用され、マウスカーソルは常に表示される。
  • ゴニョゴニョは程々に。
  • ウィンドウの一致優先順位 ウィンドウのタイトルに一致する必要があります
  • Window title must match
  • ウィンドウタイトルに完全一致。
  • ウィンドウタイトルが変わらないアプリケーションにのみ有効。
  • 同じ名前のウィンドウを個別に認識させる
  • タイトルに一致、そうでなければ同じ種類のウィンドウを見つけます
  • Match title, otherwise find window of same type
  • ウィンドウタイトルに一致するか、ウィンドウクラス名に一致。
  • 異なる実行ファイル名でも、同じウィンドウクラスなら一致する。例えば、cmdとpowershellはConsoleWindowClassを使っているので、設定を変えずにキャプチャできる。
  • タイトルに一致、そうでなければ同じ実行可能ファイルのウィンドウを見つけます
  • Match title, otherwise find window of same executeble
  • ウィンドウのタイトルに一致するか、実行ファイル名に一致。
  • 確実
  • カーソルをキャプチャ 任意
  • マウスポインタを映像に含める場合はチェック、含めたくない場合はチェックを外す。
  • マルチアダプターの互換性 無効
  • VRAM<-->RAM間のフレームコピーが行われ、パフォーマンスに影響するため基本的に無効。
  • ビデオカードが2枚以上(SLI等)の環境で正常にキャプチャされず真っ暗の場合に有効にする。
  • ゲームキャプチャ 見出しにジャンプ

    ポータブル版を%ProgramFiles%以外にインストールした環境でUWPアプリをキャプチャするには、bin, data, obs-pluginsが含まれるOBS Studioディレクトリのセキュリティ権限にALL APPLICATION PACKAGESというオブジェクト名を追加して、アクセス許可する必要がある。

    項目 説明
    モード フルスクリーンアプリケーションをキャプチャ
  • フルスクリーンのアプリケーションを検出してキャプチャする。
  • 複数のフルスクリーンウィンドウを区別するには、"特定のウィンドウ"または"ホットキー"を使用する。
  • 特定のウィンドウをキャプチャ
  • ウィンドウタイトルや実行ファイルを参照してキャプチャするウィンドウを選択する。
  • フルスクリーンウィンドウはアクティブでないと静止画になる点に注意
  • ホットキーで前面のウィンドウをキャプチャ
  • 設定 -> ホットキー -> ゲームキャプチャ(ソース名) -> 全面のウィンドウをキャプチャ/キャプチャを無効化に設定されたキーを押下して、キャプチャするウィンドウを切り替える。
  • 同じウィンドウタイトル・同じ実行可能ファイルなアプリケーション・ゲームを個別のソースに認識させるときにも有効。
  • ウィンドウ
  • ウィンドウキャプチャを参照
  • OBS 25.0~ Vulkanベースのゲームに対応
  • ウィンドウの一致優先順位
    SLI/Crossfire キャプチャモード(遅い) 無効
  • VRAM<-->RAM間のフレームコピーが行われ、パフォーマンスに影響するため基本的に無効。
  • ビデオカードが2枚以上(SLI等)の環境で正常にキャプチャされず真っ暗の場合に有効にする。
  • 強制的にスケーリングする 任意
  • ここでスケーリングしても、スケールフィルタ等を使用してもGPUが使用されるようです[要出典]。使いやすい方を選んでください。
  • 既にドットバイドットで、リスケールする必要が無い場合は無効にするべきでしょう。恐らく1920x1080に1920x1080のスケールフィルタを適用すると少しぼやけます。
  • 透過を許可 任意
  • 有効時はアルファチャンネルを使用できます。
  • キャプチャのフレームレートを制限する 任意
  • ゲーム側のfps設定が無制限や垂直同期(高速)でCPUの過負荷が発生する場合、キャプチャのfpsのみ制限します。
  • カーソルをキャプチャ 任意
  • マウスポインタを映像に含める場合はチェック、含めたくない場合はチェックを外す。
  • アンチチート互換性フックを使用する 有効
  • デフォルトで有効。特定のゲームでフックエラーが発生した場合有効。
  • (steamなどの)サードパーティの製のオーバーレイをキャプチャする 任意
  • 文字通りオーバーレイを含めたいときは有効にする。
  • ゲームに対しNVIDIAコントロールパネル等でFXAAを掛けている場合、有効にしないとキャプチャに反映されない。
  • フック速度 通常(推奨)
  • 新しいウィンドウを見つけてフックしようとする間隔
  • 低速:~4s、通常:~2s、高速:~1s、最速:~0.2s
  • 通常が推奨され、早く設定することは推奨されません。
  • RGB10A2 色空間 sRGB
  • 通常のSDRゲームはsRGBを選択する
  • HDRゲームではRec. 2020(PQ)を選択し、設定 -> 詳細設定 -> 色空間Rec. 2100 (PQ)を選ぶ。
  • テキスト(GDI+) 見出しにジャンプ

    設定項目が説明そのもので言及することが特にないので端折る。
    テキストファイルの文字コードはUTF-8の必要がある。メモ帳等で作成したShift-JIS(ANSI)は文字化けするので注意。

    ブラウザ 見出しにジャンプ

    項目 説明
    ローカルファイル 任意
  • インターネットを利用するか、ローカルコピーのパスを指定する。
  • URL
    カスタムフレームレートを使用 無効
  • 有効時、映像とは別のフレームレートでレンダリングを行う。
  • OBSに音声を再ルーティングする 任意
  • 有効時、ブラウザソースで音声も取り込むことができ、OBS内のミキサーに仮想オーディオデバイスが追加されます。(OBS 24.0~
  • )
    カスタムCSS 任意
  • 追加のスタイルシートを適用できる。YouTubeのコメント等の装飾は主にこれが使用されている。
  • ソースの右クリックメニュー -> 対話でブラウザ内を操作できる。
  • スクロールができない場合は下記のように変更する。
    body { background-color: rgba(0, 0, 0, 0); margin: 0px auto; overflow: hidden; }
    
    body { background-color: rgba(0, 0, 0, 0); margin: 0px auto; }
    
  • 明らかにCSSに問題がないのに、反映されなかったらOBSを再起動してみよう
  • Discordのオーバーレイを表示する
  • YouTubeのコメントを表示する
  • 配信に友人視点の映像を載せる
  • 表示されていないときにソースをシャットダウン 有効
  • ブラウザソースはリソース喰らいなので、出来れば有効。
  • シーンがアクティブになったときブラウザの表示を更新 任意
  • ソースを非表示から表示に戻した時にリロードする。
  • 現在のページを再読込
  • %APPDATA%\obs-studio\plugin_config\obs-browser\Cache の現在のページのキャッシュをフラッシュする。
  • Discordのオーバーレイを表示する 見出しにジャンプ
    OBSでDiscordオーバーレイを表示する

    https://www.youtube.com/watch?v=fuqmGOfiMNg&t=11147s

    Discordのデスクトップアプリケーションにはゲーム内にオーバーレイを表示する機能がある。
    しかし、それが表示されない環境であったり、表示したくないが配信に載せたい場合に役立つAPIをDiscordが用意してくれている。

    Discord StreamKit Overlay
    1. デスクトップ版Discordを起動
    2. Discord StreamKit Overlayにアクセス
      ※アプリケーションが認識されない場合、"CAN'T CONNECT TO THE DISCORD CLIENT"と表示されます。
    3. Install for OBSをクリック
    4. 必要なウィジェットを選択します。ボイスチャットの様子を表示するには"VOICE WIDGET"を選択。
    5. Server、Voice Channelを選択します。テキストや色をカスタマイズすることもできます。
    6. OBSで#ブラウザソースを追加します。
    7. URLを貼り付けて、width、heightを合わせます。
    8. 必要であれば、下記のようなカスタムCSSで装飾します。
    • デスクトップ版Discordを起動中にOBSを起動すると、このソースが有効でなくても勝手にボイスチャンネルに接続してしまう仕様。
      録画と配信でシーンコレクションを分けるか、#ブラウザソースで"表示されていないときにソースをシャットダウン"を選択しておけば、勝手にボイスチャットへ接続してしまうのを防げる。

    • URLの後方は設定内容を表すので、それを流用すれば容易に複数ボイスチャンネルを同じ見た目にすることができる。

    https://streamkit.discordapp.com/overlay/voice/XXXXXXXXXX/XXXXXXXXXX?icon=true&online=true&logo=white&text_color=%23ffffff&text_size=14&text_outline_color=%23000000&text_outline_size=0&text_shadow_color=%23000000&text_shadow_size=0&bg_color=%231e2124&bg_opacity=0.95&bg_shadow_color=%23000000&bg_shadow_size=0&invite_code=zy5hZyW&limit_speaking=false&small_avatars=false&hide_names=false&fade_chat=0
    • 画像のようなデザインにしたい場合は、5.のカスタマイズを行っていないURLに対し、以下のCSSを使用します。
      どちらも4K用に作ってあるので、4KでもFHDでも無理矢理拡大する必要がないため、より綺麗に表示されます。

    ボイスチャンネル用

    ボイスチャンネル用(インジケータのデザイン変更版)

    テキストチャンネル用

    YouTubeのコメントを表示する 見出しにジャンプ

    YouTube Liveの仕様で、映像と一緒にコメントが表示されるのはモバイルのみ。
    デスクトップユーザはフルスクリーン状態ではコメントが表示されない。
    また、華を添える意味合いで装飾したコメントを映像に被せたい方も居るだろう。

    YouTubeのコメントはライブダッシュボードのチャット->チャットをポップアウトで表示されたウィンドウのURLを、OBSのブラウザソースに追加し、CSSを適用することで好みの見た目にカスタマイズして映像に合成できる。
    一からCSSを書けというのは酷だが、chatv2という有志によるGUIでYouTubeLiveのコメント用CSSを生成できるウェブツールがある。

    https://chatv2.septapus.com/

    画像のようなデザインにしたい場合は、以下のCSSを使用します(chatv2のみでは対応できない部分の修正も含まれます)。

    配信に友人視点の映像を載せる 見出しにジャンプ

    友人に限定公開または公開でライブ配信して貰い、そのURLを"ブラウザ"ソースに取り込めば良い。
    ただし、許可なく他人の動画を使用する権利はないことだけ要注意だ。垢BANチキンレースをしたい方はどうぞ。

    1. 以下のURLの末尾の英数字の羅列を友人の配信URLのものに置き換える。
      https://www.youtube.com/embed/zF92Ok4GQaE?autoplay=1
      

      再生ページで実行すると勝手に置き換えてくれるブックマークレット

      javascript:var title = window.location.href;if (title.indexOf('https://www.youtube.com/watch') == 0) { (function(){ window.open(title.replace('watch?v=','embed/')+'?autoplay=1'); })(); }
      
    2. "ブラウザ"ソースを追加する。
    3. URLを入力し、幅と高さをキャンバス解像度に合わせる。

    ブラウザ内の操作は ソースの右クリックメニュー->対話 で行えます。

    メディアソース 見出しにジャンプ

    OBS単体で動画や音声を流せる便利なソース。アプリケーション音声キャプチャ同様に希少なデスクトップ音声を汚さないのも大きな利点だ。
    他にもカラーバーやゲーミング背景、ピー音を生成できたり、BGMを連続再生したり簡易な動画編集ができる。

    項目 説明
    ローカルファイル 有効
  • 基本的に有効。ローカルファイルのみ対応。
  • mp4, ts, mov, flv, mkv, avi, mp3, ogg, aac, wav, gif, webm これらの音声・動画ファイルが再生できる。
  • 以下のようなテキストファイルを音声・動画ファイルと同じディレクトリに置いて、それをメディアソースに追加すると連続で再生される
  • # txtはメディアと同じディレクトリに配置
    
    ffconcat version 1.0
    file 'A_Quiet_Thought.mp3'
    file 'Absention.mp3'
    file 'Acoustic_Circles.mp3'
    file 'All_Hail_the_Queen.mp3'
    file 'Angelic_Forest.mp3
    
  • 同じコーデック・解像度・フレームレート・色空間でないと再生されない(FFmpegのconcatと同じ)。2つ目以降の動画のrotate属性は無視されるため、回転しない。
  • 再生されているかは音声ミキサーで確認する。構文に誤りがないにも拘わらず再生されないときは、ソースを表示した状態でOBSを再起動してみよう。
  • inpointoutpointを指定するとカット編集された動画が再生される
  • # これ忘れない
    ffconcat version 1.0
    
    # コメントは
    file 'VNSG1857.MOV'
    
    file 'OTWL2920.MOV'
    inpoint 5
    
    file 'TWZZ6601.MOV'
    outpoint 9
    
    # この前撮ったいい感じのシーン
    file 'TWZZ6601.MOV'
    inpoint 20
    outpoint 29
    
    file 'VVFG0977.MOV'
    file 'GNFC3758.MOV'
    
    # みたいに使えるよ
    
    file 'TWZZ6601.MOV'
    inpoint 20
    outpoint 29
    
                        |&lt;-- Play -->|
    +-'TWZZ6601.MOV'----+------------+-----
    0 1 2 ...      inpoint 20   outpoint 29
    
    無効
  • (高度なオプション)無効時、ffmpeg demuxerを使用可能。
    現在利用可能なフォーマット(ビルドに依存)(空欄で自動選択):
    aa, applehttp, apng, asf, concat, flv(RTMP), gif, image2, mov, mp4, 3gp, QuickTime, mpegts, mpjpeg...
  • 入力
  • ローカルファイル: 無効
  • フォーマット: lavfi
  • smptehdbars=size=3840x2160:rate=1
  • 所謂カラーバー。SMPTE RP 219-2002
  • 他にもあるので一覧を見てみてね: FFmpeg Filters Documentation ffmpeg で使える映像のテストソース | ニコラボ
  • SMPTEカラーバーを表示
    sine=frequency=1000:sample_rate=48000
  • 振幅が1/8に減衰された、1kHzサイン波(ピー音)を流す。カラーバーのお供に。
  • このメディアソースとマイクミュートのショートカットキーをあべこべに組み合わせれば、喋りながらピー音を挟める。
  • colorspectrum=size=2560x1440:rate=60
  • colorspectrum=size=2560x2:rate=60
  • エフェクトフィルタでスクロール・クロップすると、カカポも喜びそうなゲーミングな背景に。
  • レインボーなグラデーションを表示
    testsrc=size=1920x1080:rate=30 testsrc
    testsrc2=size=1920x1080:rate=30 testsrc2
    color=Green:size=1280x720:rate=1
  • 使用可能な色:FFmpeg Utilities Documentation
  • 単色の背景を表示
    フォーマット lavfi
  • 入力フォーマット。FFmpegでいうところの-f
  • Libav documentation : Libavfilter
  • 繰り返し 任意
  • 無限ループ再生
  • ソースがアクティブになったとき再生を再開する 任意
  • 有効時、ソースを再表示すると最初から再生される。
  • 無効時はミュートのような挙動になる。
  • 可能な場合ハードウェアデコードを使用 有効
  • ffmpeg同梱のffplayと同様、全ての動画がハードウェアデコードに対応している訳ではない模様(ALL-I等)。
  • 再生終了時にソースを非表示にする 任意
  • 有効時、再生が終わったら動画を非表示にする。
  • 無効時、再生後は最後のフレームの静止画。
  • アクティブでないときにファイルを閉じる 有効
  • 有効時、ソースが非表示状態であればファイルを編集可能。ただし、再表示に若干のタイムラグが生じる場合がある。
  • 速度(パーセント) 任意
  • 100で等倍速。
  • YUV色範囲 自動
  • 正しくないcolor rangeを指定すると変な色になります(Limited RangeをFull Rangeとして扱うと明るく白っぽく、FullをLimitedで扱うと暗く黒っぽくなる)。
  • アルファ値を線形空間に適用する
  • RGBはガンマ補正するが、アルファチャンネルは線形で扱うことで色がくすまないようにする。
  • FFmpeg オプション
  • FFmpegでいうところの-iの前に記述する入力オプション。FFmpegカスタム出力の映像エンコーダ設定と同様にkey=value key=value...形式で指定する。

    obs-ffmpeg: Add ability to set FFmpeg options by stopforumspam · Pull Request #4967 · obsproject/obs-studio

  • rtsp_transport=tcp rtsp_flags=prefer_tcp
  • RTSPでUDPが安定しないとき、TCPを優先する例
  • framerate=60
  • MJPEGなどで入力フレームレートを明示する必要があるとき
  • 映像キャプチャデバイス 見出しにジャンプ

    項目 説明
    デバイス 任意
  • DirectShowデバイス入力に対応します。
  • Webカメラやキャプチャボードのドライバや、仮想キャプチャデバイスがインストールされていれば、ここにデバイス名(FaceRig、AVerMedia、Elgato、Blackmagic等)が表示されます。
  • OBS使用時はキャプボ付属のアプリケーションを使用しない。
  • 表示中でない場合非アクティブ化する 有効
  • チェックすると、表示していないときにデバイスはオフになります。
  • 映像だけでなく音声も同様です。
  • 解像度/FPSタイプ カスタム
  • カスタムに設定すると、下の項目がアクティブになります。
  • 解像度 任意
  • キャプチャデバイス側の解像度に合わせる。
  • キャンバス解像度と合わない場合、OBS側のフィルタ等で対応する。
  • FPS 出力FPSに合わせる
    YUV色空間 自動
  • 正しくないcolor rangeを指定すると変な色になります(Limited RangeをFull Rangeとして扱うと明るく白っぽく、FullをLimitedで扱うと暗く黒っぽくなる)。
  • YUV色範囲 自動
    音声出力モード 音声のみをキャプチャ
  • これ以外に設定されている場合、音声は一般的なデスクトップ音声デバイスからキャプチャされる可能性があります。
  • Video Capture Devices with HDR support | OBS

    BlackMagick DeckLinkはOBS、FFmpegと親和性が高いので個人的にオススメなキャプチャボード。

    画像 見出しにジャンプ

    項目 説明
    表示中でない画像は読み込まない 有効
  • チェックしておくと、非表示時にメモリを開放します。
  • ソースの右クリックメニュー 見出しにジャンプ

    ソースやプレビューウィンドウを選択し右クリックすると表示されるメニューです。

    ソースの右クリックメニュー
    項目 説明
    選択したアイテムのグループ化
  • ソースを束ねて一括でレイアウトを移動したり、フィルタを適用したり、纏めて表示/非表示を切り替えられる。
  • ショートカット操作は普段お使いのエクスプローラと同様です。
  • キャンバス解像度が変わってもレイアウトが崩れない相対的なソースをつくる
  • コピー
  • ソースをコピーします。
  • 貼り付け(参照)
  • コピーしたソースを貼り付けます。
  • プロパティやフィルタの内容はコピー元と連動します。
  • 変換やスケールフィルタは連動しません。
  • 貼り付け(複製)
  • コピーしたソースを貼り付けます。
  • プロパティやフィルタの内容がコピー元と連動せず、コピー元とは別のソースとして機能します。
  • ゲームキャプチャはその性質上、参照しか使えません(手動での複製も非推奨)。
  • フィルタをコピーする/貼り付ける
  • フィルタのみ別のソースに適用できます。
  • 色の設定
  • ソースやグループの項目を任意の色で色分けできます。
  • 名前を変更
  • ソース名を変更します。
  • 削除
  • ソースを削除します。
  • 順序
  • ソースレイヤーの表示順を変更できます。
  • 上のソースほど優先的に前面に表示され、下のソースを隠します。
  • 変換
  • ソースの正確な位置調整を行います。
  • ミキサーを非表示
  • 音声ミキサーから隠しますが、オーディオの詳細プロパティには存在します。
  • 映像キャプチャデバイスメディアソースで有効。
  • インターレース解除
  • ソースの正確な位置調整を行います。
  • 一部のビデオカメラの映像や、インターレースな(縞々の)映像ソースを、現在一般的なプログレッシブに補間します。
  • 60iの場合、yadifでは30p、yadif 2xでは60pになります。
  • 出力サイズ変更(ソースサイズ)
  • 選択されたソースが基本(キャンバス)解像度、出力(スケーリング)解像度でない場合に項目がアクティブになります。
  • 自分が何をしているのか分からない場合は押すべきではありません。
  • スケールフィルタ
  • スケールアルゴリズムを選択できます。
  • "無効化"を選択した場合、文字通り無効化されることはなく、設定 -> 映像恐らく有無を言わさずバイリニアフィルタが適用されます。
  • 文字通りの無効化、ドット絵などを全く滲ませることなく拡大したい場合はポイントを選択します。
  • 小さなソースを大きく拡大する場合はバイキュービック又はランチョスを選択します。
  • 大きなソースを小さく縮小する場合はエリアを選択します。
  • 全画面プロジェクター
  • 選択したソースを全画面でプレビューします。
  • Escまたは右クリックメニューから"閉じる"を選択して終了します。
  • メインのプレビュー、番組ウィンドウでも同じ機能が使えます。
  • 遅延は比較的小さいので、OBSに表示された画面でプレイしつつ、オーバーレイのように表示されたコメントを見て配信、という方法も一応可能です。
  • ウィンドウプロジェクター
  • 選択したソースをウィンドウでプレビューします。
  • メインのプレビュー、番組ウィンドウでも同じ機能が使えます。
  • 対話
  • ブラウザソースで使用できる対話的インターフェイスです。
  • 文字を打ち込んだり、クリックを発生させることができます。
  • フィルタ
  • 映像や音声を調整します。
  • プロパティ
  • ソース毎の各項目を参照
  • 変換 見出しにジャンプ

    ソースの拡大/縮小、位置合わせをピクセル単位で行います。

    プレビューウィンドウ上で赤い枠を操作し同様の操作を直感的に行えますが、思い通りの位置にならなかったり、適切でないスケーリングによってぼやける場合があるため、こちらを使用することを推奨します。

    ぼやけたり滲まないよう、拡大/縮小を行う場合は縦横が2xや1/2になるようにしましょう。スケールフィルタが"ポイント"の場合のみ、一切滲むことなく変換できます。

    慣れればスタジオモードを使用しなくても、ソースの位置調整の様子が配信に映らないよう操作できます。

    ※OBS 25.0から、ソースのロック(鍵マーク)を解除しないと"変換"の大半の操作ができなくなっています。

    変換をリセット 見出しにジャンプ

    ソースの拡大/縮小、回転や位置合わせの内容全てをリセットし、左上に元の大きさで戻します。
    変換の設定を弄る前に、必ず実行しておくと良いでしょう。

    変換の編集 見出しにジャンプ
    シーン アイテム 変換
    項目 説明
    位置 "位置揃え"の角の座標
    回転 "位置"を中心に回転
    大きさ ソースの大きさ
    位置揃え "位置"・"回転"の起点を赤枠の点 から選択

    既定の状態

    シーン アイテム 変換

    左上を起点に"位置"で横軸64px・縦軸48pxの余白を設け、"大きさ"で2xした例。
    スケールフィルタを"ポイント"に設定し、1/2や2倍の値に拡大縮小すると、滲みを軽減できます。
    例: 640x360 -> 1280x720

    変換で2倍に拡大
    シーン アイテム 変換
    項目 説明
    バウンディングボックスの種類 境界なし バウンディングボックスがない既定の状態
    境界まで引き伸ばす ソースの縦横比を無視して、指定した大きさに引き伸ばす
    境界の内側に合わせる ソースの縦横比を維持して、幅・高さのいずれも指定した大きさからはみ出さないように拡大縮小する
    境界の外側に合わせる ソースの縦横比を維持して、幅・高さの片方だけは指定した大きさからはみ出さないように拡大縮小する
    境界の幅に合わせる ソースの縦横比を維持して、幅が常に指定した値に合うように拡大縮小する
    境界の高さに合わせる ソースの縦横比を維持して、高さが常に指定した値に合うように拡大縮小する
    最大サイズのみ "大きさ"の値を維持して、余白の大きさを指定する
    バウンディングボックスの配置
    バウンディングボックスのサイズ

    右下に配置したいので、"位置揃え"を右下、"位置"はキャンバスサイズに合わせて1920,1080。
    ※右上なら1920,0、左下なら0,1080

    1280x720のソースに対し、1440x810のバウンディングボックスで余白をつくる。

    変換で右下寄せしつつ、余白をつくる

    4K2K 3:2のソースの縦横比を維持して、左右に黒帯を追加する例。
    画面に合わせると同じ。

    変換で画像に黒帯を追加する

    4K2K 3:2のソースの縦横比を維持して、上下をクロップする例。

    変換で画像の上下をクロップする
    シーン アイテム 変換
    項目 説明
    クロップ ソースの余計な部分を上下左右から相対位置で切り取る

    バウンディングボックスで余白を作っている場合、サイズの調整が必要になる。

    変換で画像をクロップする
    画面に合わせる 見出しにジャンプ

    画面の大きさに合わせて拡大/縮小します。
    拡大/縮小のアルゴリズムは下記の"スケールフィルタ"に従います。
    後述の"スケールフィルタ"が"ポイント"の場合のみ、一切滲むことなく変換できます。

    画面に合わせる
    画面中央に置く 見出しにジャンプ

    ソースの縦横比・大きさを保持して、キャンバスの中央に配置します。

    画面中央に置く

    フィルタ 見出しにジャンプ

    複数のフィルタを重ね掛けできます

    エフェクトフィルタ 見出しにジャンプ

    項目 説明
    LUTを適用
  • ルックアップテーブルを適用し、カラーグレーディング等を行える。
  • NVIDIAバックグラウンド除去
  • RTXシリーズのNVIDIA GPUで使用できる、グリーンバック要らずで背景抜きするフィルタ。
  • NVIDIA Studio Driver 462.46, Game Ready Driver 465.89, NVIDIA RTX Enterprise Driver 462.59 以上、Video Effects SDKが必要

  • イメージ マスク/ブレンド
  • ソースを切り抜き用の画像と合成します。
  • 画像ファイル自体にアルファマスクを使用するためにはアルファマスク(アルファチャンネル)を使用します。
  • カラーキー
  • クロマキーと同様、映像の背景を抜きます。
  • 精度が悪いと感じる場合はクロマキーを使用します。
  • クロップ/パッド
  • 映像ソースの不要な部分を上下左右からカットします。
  • 16:9を21:9にクロップする時など、非常に便利です。位置合わせはソースの右クリックメニュー -> 変換で行うとズレなくぼやけたりせずに調整できます。
  • クロマキー
  • 映像の背景を抜きます。
  • より良い結果を得るために、明るい色の背景色を使用してください。
  • シャープ
  • 映像をわずかにシャープにします。
  • 特に配信時の低ビットレート下では品質が大きく低下する場合があります。使用するとしてもダウンスケール時に少しシャープにする程度でしょう。
  • スクロール
  • 映像を連続してスクロールします。
  • 流れる文字やカラーバーに適用するとダサくて面白いでしょう。
  • スケーリング/アスペクト比
  • 選択されたソースに対し、デフォルトのスケーリングフィルタを上書きします。
  • レンダリング遅延
  • 少しだけ映像を遅らせることができる
  • 音ズレ(音が遅れる)する場合の調整に役立ちます。
  • 色補正
  • カラーコレクションを行います。
  • ガンマ、コントラスト、輝度、彩度、位相、透明度等を弄れます。
  • 間違った色空間(color space)や色範囲(color range)の設定を無理矢理補正する為のものではありません。
  • LUTを適用 見出しにジャンプ

    LUTを使うと、単にエフェクトフィルタの色補正で彩度や明度を弄るより格段に優れた色調整が可能。

    OBS 25.0でDavinci Resolveで作成できる3D LUT.cubeに対応した。

    OBSにDavinci Resolveで作成した3D LUTを当てる

    PhotoshopやGIMPを駆使してOBS用のLUTを作成するレガシーな手順:

    1. OBSのルートディレクトリ内の\data\obs-plugins\obs-filters\LUTs\original.pngをLUTを適用したいシーンのスクリーンショットと合成
    OBSでLUTを当てる
    1. GIMPやDavinci Resolveでカラーグレーディング
    OBSでLUTを当てる
    1. 合成したLUTの部分のみを切り出し、OBSのApply LUTフィルタに登録
    スケーリング/アスペクト比 見出しにジャンプ
    スケールフィルタ
  • スケールアルゴリズムを選択します。
  • ドット絵や図など滲んではいけないもの、YouTubeでの配信映像の再エンコード品質の改善を行いたい場合は"ポイント"を使用します。
  • 小さなソースを大きく拡大する場合はバイキュービック又はランチョスを選択します。
  • DSRでオーバーサンプリングされたゲームなど、キャンバス解像度より大きなソースを小さく縮小する場合はエリアを選択します。
  • 解像度
  • "基本(キャンバス)解像度"を使用すると、異なるキャンバスサイズを持ったプロファイルで同じシーンを共有できます。
  • ソースがキャンバスの縦横比(16:9)でなく伸びてしまう場合、ソースの右クリックメニュー -> 変換を使います。
  • 音声フィルタ 見出しにジャンプ
    推奨フィルタ (適用順)
    項目 説明
    ノイズゲート
    Noise Gate
  • 音量が閾値を超えた場合ゲートを開放することで、環境音やノイズフロアが常に録音される状態を防ぐ。Discordの入力感度のようなもの。
  • ただし、閾値を超えている時(喋っている間など)は環境音含め全ての音が入る。
  • エキスパンダーのゲートに比べて確実にノイズをカットできる。
  • オーディオインターフェイスに機能がない場合、環境音が不必要なマイク入力に対して使用する。
  • 閉鎖閾値
    Close Threshold
  • 開放閾値を最大0.00 dBに、閉鎖閾値を最小-96.00 dBにし、開放閾値を適切に声が入るまで小さくしてから、閉鎖閾値を大きくする。
  • 開放閾値は語頭とノイズの区別、閉鎖閾値は語尾とノイズの区別を目的に調整する。
  • 音声ミキサーのレベルメーターやオーディオの詳細プロパティのモニター機能を使って調整するとよい。
  • SNRが小さい(ノイズに対して信号が小さい/信号に対してノイズが大きい)とノイズゲートだけではどうしようもない場合がある(例: 青軸キーボードの近くにマイクがあり、口から遠い)。改善方法は以下の通り。
    1. 静音キーボードの導入など、ノイズ源を消す
    2. ノイズ源からマイクの距離を離す
    3. 口を近づける(近接効果に注意)
    4. 裏側の音を拾いにくい指向性マイクを導入する
    5. ノイズ抑制を使う(音質劣化に注意)
    開放閾値
    Open Threshold
    動作開始時間
    Attack Time
  • 開放前のフェードインの時間
  • デフォルトの25 msでは、開放閾値に余裕がなく語頭にアクセントがないと子音が掠れてしまう場合がある。5 msがオススメだが、実際に聞いてブチブチ言わないか確認が必要。
  • 保持時間
    Hold Time
  • 閉鎖閾値に達し、且つ保持時間を超えた場合に閉鎖される。デフォルト値200 msで問題ない。
  • 語尾が切れるからと保持時間を大きくするより、閉鎖閾値を適切に設定した方がよい。
  • 解除時間
    Release Time
  • 閉鎖後のフェードアウトの時間
  • デフォルトの150 msでは語尾が不自然に切れる場合があるので、SNRが大きい環境なら1000 ms(1秒)に設定するとよい。
  • ノイズ抑制
    Noise Suppression
  • 音声を加工してノイズを目立たなくする。
  • ノイズにも声にも同じ周波数が含まれているため、音は多かれ少なかれ劣化する。できる限り使わないに越したことはないが、収録環境がどうにもならない場合や、結果がよければ使うとよい。
  • SNRが小さい(ノイズに対して信号が小さい)マイク入力を誤魔化して使う場合のみ使用する。
  • 方式
    • Speex
      libspeexに基づくノイズ抑制アルゴリズム。低品質で低負荷。
    • RNNoise
      AIベースのノイズ抑制アルゴリズム。高品質で高負荷。
    • NVIDIAノイズ除去
      RTX Voiceと異なり、RTX GPUのみで使用できるノイズ抑制フィルタ。かなり高品質。
      NVIDIA Studio Driver 462.31, Game Ready Driver 456.38 以上、Audio Effects SDKが必要。
    • NVIDIAルームエコー除去
      RTX GPUのみで使用できるエコー除去フィルタ。エコー除去はその性質から人の声を除去するフィルタなので、基本的にヘッドホンを付けスピーカーの音を拾わない環境にすべきだが、お風呂上りで髪も乾かないうちにゲームに誘われることもあるだろう。

    Suppression Level
  • ノイズ抑制が掛かる低い入力レベルの閾値。

  • Suppression Intensity
  • ノイズ抑制の強度。
  • リミッター
    Limiter
  • 大きな音を強く抑制し、叫び声などの過大入力のレベルオーバーをできる限り防ぐ。
  • オーディオインターフェイスにこの機能がない場合使用する。
  • 閾値
    Threshold
  • リミッターが掛かる閾値。
  • Attack
  • 設定項目はなく1msにハードコードされているため、Attackを調整したいならコンプレッサーを使う。
  • リリースタイム
    Release
  • リミッターが解除されてから元の音量にフェードアウトするまでの時間
  • コンプレッサー
    Compressor

    エキスパンダー
    Expander
  • コンプレッサー: 閾値より大きい音声を減衰してダイナミックレンジを小さくし、マイク入力などを聞き取りやすくする。
    Compressor | Groove Agent SE | steinberg.help
  • エキスパンダー: 閾値より小さい音声を減衰してダイナミックレンジを大きくする。それを利用して、ノイズゲートのような役割を持たせることもできる。
  • エキスパンダーのゲートは、ノイズゲートフィルタと違いミュートされないため、自然な効果を得られる。
  • オーディオインターフェイスにこの機能がない場合使用する。
  • プリセット
    Presets
  • Expander: 通常のプリセット。
  • Gate: Thresholdを下回るレベルに大きなRatioを適用することで、ノイズゲートと同様の効果を得るプリセット。
  • 比率
    Ratio
  • Thresholdを超えた音を圧縮する比率。
  • コンプのデフォルトでは10.00:1、つまりThresholdより大きい音はAttackを経て1/10に減衰される。
  • エキスパンダーではThresholdより小さい音はAttackを経てRatio分減衰される。
  • 閾値
    Threshold
  • Ratioが適用される閾値レベル。
  • Thresholdを超えない限り音の劣化は発生しない。
  • アタックタイム
    Attack
  • Thresholdを超えてからAttackを経てRatioの減衰が完全に適用される。Thresholdに戻ってからReleaseを経てレベルが元に戻る。
  • コンプはAttackを遅くReleaseを早くすると弱く、Attackを短くReleaseを長くすると強く掛かる。
  • エキスパンダーをゲートとして利用する場合、ノイズゲートと同様Releaseを1000ms程度にすると語尾が切れなくてよいかもしれない。
  • 用途に適したコンプの解説は検索エンジン上のDTMできるマンに丸投げする。
  • リリースタイム
    Release
    出力ゲイン
    Output Gain
  • フィルタ後の出力ゲイン
  • サイドチェーン/ダッキングソース
    Sidechain/Ducking Source
  • フィルタを掛けるトラックではなく、別の音声トラックで圧縮率を決める。
  • 選択した別の音声トラックがThresholdを超えると、Ratio~Output Gainがこの音声トラックに適用される。
  • ゲーム音声やBGMにコンプを適用し、サイドチェーンにマイク入力などを適用する、というような用途。
  • Detection
  • RMS: RMS値を参照して適用される。最大10msの遅延がある。
  • Peak: 音声のピークレベルを感知して瞬時に適用される。
  • ゲイン
    Gain
  • 音量を単純に大きくする。
  • 基本的にOSの設定、マイクやオーディオインターフェース側で適切な音量になるように調整するべき。
  • 使用するときはピークレベルがオーバーしないようリミッターやコンプレッサーを掛けることを推奨する。
  • 映像の遅延 (非同期)
    Video Delay (Async)
  • 映像と音声の両方を含むソースで映像と音声の同期を解除し、映像のみを遅延させる。
  • 主に映像キャプチャデバイスソースで音ズレの修正のために使用する。
  • 極性を反転する
    Invert Polarity
  • 音の位相を反転する。
  • オーディオインターフェイスにこの機能がない場合使用する。
  • VST 2.x プラグイン VST 2.x Plug-in
  • DAWやオーディオインターフェースのVST 2.x プラグインが対応していれば使用できる。
  • 拡張子*.vst, *.dll, *.so, *.oが以下のディレクトリで探索され、見つかったものが選択できる。インストーラのないVSTもこの中に配置されていれば使用できる。
    • MacOS
      /Library/Audio/Plug-Ins/VST/
      ~/Library/Audio/Plug-ins/VST/
      
    • Windows
      C:\Program Files\Steinberg\VstPlugins\
      C:\Program Files\Common Files\Steinberg\Shared Components\
      C:\Program Files\Common Files\Steinberg\VST2
      C:\Program Files\Common Files\VSTPlugins\
      C:\Program Files\VSTPlugins\
      
    • Windows (obs32.exe且つVSTが32-bitのとき)
      C:\Program Files (x86)\Steinberg\VstPlugins\
      C:\Program Files (x86)\Common Files\Steinberg\Shared Components\
      C:\Program Files (x86)\Common Files\VST2
      C:\Program Files (x86)\Common Files\VSTPlugins\
      C:\Program Files (x86)\VSTPlugins\
      
    • Linux
      VST_PATH
      /usr/lib/vst/
      /usr/lib/lxvst/
      /usr/lib/linux_vst/
      /usr/lib64/vst/
      /usr/lib64/lxvst/
      /usr/lib64/linux_vst/
      /usr/local/lib/vst/
      /usr/local/lib/lxvst/
      /usr/local/lib/linux_vst/
      /usr/local/lib64/vst/
      /usr/local/lib64/lxvst/
      /usr/local/lib64/linux_vst/
      ~/.vst/
      ~/.lxvst/
      

    キャンバス解像度が変わってもレイアウトが崩れない相対的なソースをつくる 見出しにジャンプ

    キャンバス解像度プロファイルの切り替えによって変更されると、折角つくったレイアウトも崩れてしまう。
    上記にあるように、キャンバス解像度と出力解像度は揃えるのが好ましい。
    よって、共通のシーンコレクションを異なる解像度のプロファイルで使用し、配信と録画を異なる解像度で行いつつ同じシーンコレクションを使用することを諦めている方も多いはず。
    実はソースに対して変換選択したアイテムのグループ化スケールフィルタの組み合わせによって相対レイアウトを実現できる。

    OBS キャンバス解像度が変わってもレイアウトが崩れない相対的なソースをつくる
    1. 変換のバウンディングボックスでキャンバス解像度の縦横比に合わせる
    OBS キャンバス解像度が異なるプロファイルでシーンコレクションを共有してもレイアウトが崩れない相対的なソースをつくる
    ソースはキャンバス解像度と同じ縦横比(16:9等)でなくても動作する
    項目 解説
    バウンディングボックスの種類 境界の内側に合わせる
  • ソースを常にバウンディングボックスに内接させる。
  • キャンバスより横長になっても縦長になっても、ソースが変形することはなく、キャンバスからはみ出ることもない。
  • 最大サイズのみ
  • "境界の内側に合わせる"同様ソースがキャンバスからはみ出ることはないが、ソースがキャンバスより小さい場合内接せずに余白が生まれる。
  • 敢えて余白をつくりたい場合に有効。ソースが小さすぎる場合は大きさを2x 4xするとよい。
  • バウンディングボックスの配置 中央
  • 黒帯は上下左右に均等に配置される。
  • バウンディングボックスのサイズ 1280x720
    1920x1080
    2560x1440
    3840x2160
  • ソースの縦横比に関わらず、必ずキャンバスの縦横比に合わせる。
  • スケーリングを最小限に留めるため、可能であれば変換では余白を追加するだけで拡大縮小しない。
    • 例: フルスクリーン(1920x1080)とウィンドウモード(1920x1016)で縦横比が変わってしまうゲーム -> 1920x1080
    • 例: スマートフォンで撮影した4016x3008(約4:3)の写真 -> 5348x3008
    • 余白を追加するだけでスケーリングが発生しない場合、ソースの右クリックメニュー -> スケールフィルタはポイント。3.と配信プラットフォームでのみスケーリングが発生する。
  • 2.にあるように、同じグループのソースに合わせる。
  • スケーリングが発生する場合、ソースの右クリックメニュー -> スケールフィルタを参考に適切なアルゴリズムを選択する。
    • 例: フルスクリーン(3840x2160), ウィンドウ(1920x1016) -> 3840x2160 (等倍or拡大)
    • 例: ウィンドウ(1920x1016), ウィンドウ(1024x768) -> 1920x1080 (等倍or拡大)
  • 抽象化すると何言ってるか分からん。俺も分からん。とにかくスケーリングを減らしてできる限り高品質でプロファイル切り替えても崩れなけりゃおk。
    • 画面端に表示するコメント欄等のオーバーレイ表示

    前述のように、オーバーレイそれぞれが16:9になるようにバウンディングボックスで管理してもよいが、オーバーレイものは解像度がまちまちなので直観的ではない。
    ダミーの16:9の色ソースを置いて(非表示にし)、2.や3.を行ってからグループ内のソースの位置を調整するとよい。

    OBS キャンバス解像度が異なるプロファイルでシーンコレクションを共有してもレイアウトが崩れない相対的なソースをつくる
    1. 1つあるいは複数のソースを選択し、選択したアイテムのグループ化する
      このとき、それぞれのソースの最終的なサイズ(バウンディングボックスのサイズ)が同じでないと、一番大きなソースに合わせてレイアウトが崩れてしまう。
      グループを分けるか、1.の時点でリサイズを行って解像度を揃える。

    2. グループ全体にスケールフィルタでキャンバス解像度を適用する

    キャンバス解像度の異なるプロファイルを切り替えてみましょう。あら不思議、全くレイアウトが変わりません。

    音声ミキサー 見出しにジャンプ

    音声ミキサー

    設定->音声で設定したオーディオソースが表示される。
    歯車又は右クリックでオーディオルーティング等の各種設定項目が表示される。

    項目 説明
    すべて再表示/非表示 音声ソースの表示/非表示を切り替える
    名前を変更 表示名を変更できる
    フィルタをコピーする/貼り付ける "フィルタ"で設定した項目をコピー&ペースト出来る
    垂直レイアウト 既定では横だが、縦のレベルメータ表示に変えることができる。多くの音声デバイスを使用する人にオススメ。
    フィルタ オーディオフィルタを使用できる。下記参照。
    プロパティ ここでもデバイスの選択を行える。
    オーディオの詳細プロパティ オーディオルーティングやパンの設定が出来る。下記参照。

    フィルタ 見出しにジャンプ

    #音声フィルタを参照。

    オーディオの詳細プロパティ 見出しにジャンプ

    項目 説明
    名称
  • 表示名。デフォルトでは設定 -> 音声が表示される。
  • 音量(%)
  • 音量を調節する。
  • モノラルにダウンミックス
  • オーディオインターフェイスに接続したLチャンネルのみのマイクの音声等をモノラルとして扱うことで、片方からしか聞こえない状態を回避できる。
  • オーディオインターフェイスにこの機能がない場合使用してください。
  • バランス
  • 左右の音量バランスを調整する。パン。
  • 同期オフセット
  • 音声の遅延を設定する。
  • キャプチャデバイス等で音ズレを起こす場合に有効。
  • 音声モニタリング
  • 設定 -> 詳細設定で設定した音声モニタリングデバイスへ音を返す設定。
  • あくまでもOBS上で適用したフィルタの確認用であり、配信や録画時に使用すべきものではない。
  • これは遅延がある為、自分の声をヘッドホン等からモニターしたい場合は、オーディオインターフェースの機能を利用する。
  • トラック
  • 配信時は1トラックのみを使用するため、マイク音声、デスクトップ音声含め使用するデバイス全て1のみチェックする。
  • 録画時はマイク音声はトラック1、デスクトップ音声を2に分けるなど、柔軟に設定可能。
  • 設定 -> 出力(FFmpegカスタム出力時はそちらで)でチェックしたトラック数分ストリーム数が確保されていることが前提。もし足りなければそのトラックは録音されない。
  • アプリケーション毎に音声を分けて録音するなら、トラック1はMix, 2にゲーム音声, 3はDiscord…とチャンネルを分けておくと、録画データの確認がしやすい他、トラック1しか使用しない配信プロファイルシーンコレクションを共通化できる。
    Advanced Recording Guide With Multi Track Audio · obsproject/obs-studio Wiki
  • シーントランジション 見出しにジャンプ

    シーントランジション

    シーン切り替え時に様々なトランジションを適用できる。

    コントロール 見出しにジャンプ

    コントロールペイン
    項目 説明
    配信開始
  • 設定 -> 出力 -> 配信の設定でエンコードを開始します。
  • 録画開始
  • 設定 -> 出力 -> 録画の設定でエンコードを開始します。
  • 録画停止ボタンで停止し、処理が完了するまで必ず待ってください。Xボタンや終了ボタンで強制終了すると、基本的に録画ファイルが破損します。
  • ⏸(一時停止)
  • OBS 24.0で追加された、録画中に表示される録画を一時停止して、同じファイルで再開する機能
  • 設定 -> 出力の出力モード「基本」なら録画品質を「配信と同じ」"以外"に設定、OBS組み込みのエンコーダ、つまりFFmpegカスタム出力ではなく、出力モード「詳細」なら種別が「標準」であれば録画開始後に一時停止ボタンが表示される
  • スタジオモード
  • デフォルトではレイアウトの変更、ソースの追加等の作業の様子が配信に映ってしまいます。このモードが有効の場合、内容を決めてから実際の配信映像に適用することができます。
  • 誤爆防止にも有効です。
  • リプレイバッファ開始
  • 記録はせずメモリ上に過去の映像を残しておくことで、ゲームの名シーンのリプレイを保存できる
  • 工夫次第で配信中にリプレイを流せる
  • 仮想カメラ開始
  • OBSを映像・音声ミキサーとして使用し、ZoomやTeams等のビデオ会議ソフトに取り込むための機能
  • 映像デバイスとして認識される
  • ポータブル版は\data\obs-plugins\win-dshow\virtualcam-install.batで有効化
  • ⚙(歯車) 出力の種類
  • 仮想カメラで
  • 出力の選択
  • スタジオモードにおける"プレビュー"または"番組", 任意のシーン, 任意のソースを選択する
  • 設定
    終了
  • OBSを終了
  • 統計 見出しにジャンプ

    統計

    ここでは何が原因で配信がカクついているのかの原因の特定を行える。
    OBSが重い、配信がカクつく、それらは全てここの値に現れる。統計を表示しパフォーマンスをモニターすることが快適な配信への近道なので、表示 -> ドックで必ず追加しておきましょう。

    レンダリングラグが原因で逃したフレーム 見出しにジャンプ

    • シーン切り替え時にカウントが増える程度なら問題ない
    • GPU使用率が張り付いてカクつくなら、ゲーム側の画質設定を妥協するかOBSを管理者で起動する

    エンコードのラグが原因で逃したフレーム 見出しにジャンプ

    ドロップフレーム(ネットワーク) 見出しにジャンプ

    ネットワークが原因のドロップは、高性能なPCに買い替えれば済むような単純なものではなく、環境によってはどうにもならない。
    この値が増えるとき、上り回線の速度にビットレートが収まっていないので、各プラットフォームの推奨値やビットレートの解説を参照し、環境に見合ったビットレートに設定する。

    YouTubeではHLSで、設定すればRTMP(S)でも負荷の少ないネイティブIPv6が使える。
    ISPを選べるなら、v6プラス(MAP-E)は利用可能ポート数, DS-Lite(transix)はCGNATでポート開放ができないこと, IPv6高速ハイブリッド(IPIPトンネル)は自前ルータで終端できないといった欠点に注意。

    • Primary YouTube ingest serverを選択する
      プライマリa.rtmps.youtube.comの方がバックアップサーバb.rtmps.youtube.comより潤沢なので、設定 -> 配信でセカンダリに変更しても改善は期待できない。 特にマイナーなISPや僻地にお住いの場合、EDNS Client Subnetで最適なサーバが選択されるようDNSを設定するとよい。
    # IPv4 RTMP(S)
    # Primary YouTube ingest server
    ping.exe -4 -n 10 a.rtmps.youtube.com
    # Backup YouTube ingest server
    ping.exe -4 -n 10 b.rtmps.youtube.com
    
    # IPv6 HLS
    ping.exe -6 -n 10 a.upload.youtube.com
    ping.exe -6 -n 10 b.upload.youtube.com
    
    • tracerouteで遅い箇所を探す
    # RTMP, RTMPSではIPv4が優先される
    tracert -4 a.rtmps.youtube.com
    
    # HLSではIPv6が優先される
    tracert -6 a.upload.youtube.com
    
    • フレームレート(fps)を落としてみる
      映像品質をできるだけ落とさずビットレートを下げるとき、ソース解像度の変更は負荷と品質の観点から推奨できない。
      ゲームの描画とエンコードの品質を上げ、フレームレートを60から30fpsに落とす方が効率が良い。

    • 詳細設定 -> ネットワーク設定の最適化が有効な場合がある

    • 輻輳制御アルゴリズムを変える
      需要時にパケロスする通信事業者を利用しているとき、google/bbrv1が使えるLinuxを中継して配信すると、端末の輻輳制御によるスループット低下を大幅に回避できるかもしれない。
      公平性が損なわれる傾向があるため、褒められた行為ではない。
      輻輳制御の新アルゴリズム TCP BBR を GCP に導入 | Google Cloud Blog

    • "一部"の視聴者にクルクルすると言われる
      著しく視聴者側のネットワーク環境が悪くてもなんとか観られてしまうのがYouTubeなので、統計とライブダッシュボードに問題がなく、自分や他の視聴者が遅延なく視聴できているなら、こちら側ではどうしようもない。解像度を下げるようにアドバイスするとよい。
      強いて言えば視聴がシビアな「超低遅延」モードではなく、「低遅延」や「通常の遅延」を配信開始時に選ぶことだろうか。
      Live streaming latency - YouTube Help
      配信者側の問題であっても配信中に対処できないので、2時間前にはエンコーダ設定を終え、イベントの開始予定時刻の少なくとも15分前には配信開始するとよい。
      エンコードに関するヒント - YouTube Help

    • 引っ越すか、工夫するか
      提供エリアや集合住宅の都合でISPや配線方式を変えられず、どうにもならない環境がある。
      フレッツの光コンセントさえあれば何とかなるので、入居時に確認しよう。いわゆる「光回線完備」は光コンセントの有無を示さない。
      私は配管の都合でVDSLを光配線方式に変えられなかったものの、以下の工夫で配信に何ら支障ない環境に変えることができた。

      • Bフレッツ時代のVDSLモデムを交換
      • 業務用家庭用ルータを導入
      • IPv4 over IPv6 または NTEガチャ
      • EDNS Client Subnet
      • QoS

    設定(プロファイル) 見出しにジャンプ

    メニューバー -> プロファイル
    メニューバー -> ファイル -> 設定

    プロファイルを分けると、異なる配信プラットフォームキャンバス解像度・フレームレートエンコード設定を切り替えられる。
    プロファイルにはファイル -> 設定設定 -> 一般, 設定 -> 音声 -> グローバル音声デバイス以外が含まれる。
    配信・録画中は切り替えられない。

    一般 見出しにジャンプ

    項目 説明
    一般 言語 日本語
  • 英語にすると設定項目の意味が分かったり、ググラビティが向上する場合がある。
  • テーマ Yami
  • OBS 27.x以前の既定はDark
  • OBS 28.0+の既定はYami
  • スクリーンキャプチャからOBSウィンドウを非表示にする 有効
  • 画面キャプチャソースにOBSのウィンドウが映り込まないようにする
  • 出力 配信を開始するときに確認ダイアログを表示する 有効
  • 誤爆防止に有効
  • 配信を停止するときに確認ダイアログを表示する 有効
    録画を停止するときに確認ダイアログを表示する 有効
    配信時に自動的に録画 任意
  • ストリームエンコーダを使用して、負荷ゼロで配信と同時に録画する
  • 配信時に自動的にリプレイバッファを開始 任意
  • リプレイバッファ
  • 配信中にリプレイを流す
  • プロジェクター 終了時にプロジェクターを保存する 有効
  • ウィンドウ・全画面プロジェクターを開いたままOBSを終了すると、次回も自動的に開く。
  • スタジオモード ダブルクリックしたときにシーンに遷移 有効
  • 便利
  • 縦長/垂直レイアウトを有効にする 任意
  • お好みで
  • プレビュー/番組ラベルを表示する 無効
  • 分かってれば邪魔
  • 配信 見出しにジャンプ

    配信プラットフォームを選択する。

    項目 説明
    サービス YouTube - RTMPS
  • YouTube Studioのライブダッシュボードで、ストリーミングプロトコルに合致したストリームキーを作成する
    ライブ管理画面を使って YouTube でライブ配信する方法 - YouTube
  • いずれも通信内容がSSL/TLSで暗号化される。
    RTMPS を使用して配信を暗号化する - YouTube ヘルプ
  • 443/tcpを使うので、1935/tcpを使うRTMPに比べ、セキュリティポリシーの厳しい企業などの組織ネットワークでも利用できる可能性がある。
  • HLSでは、RTMPが対応していないHEVCやHDR配信に対応する
    HLS 配信を設定する - YouTube ヘルプ
  • YouTubeにはIPv6で待ち受ける配信サーバがあるが、HLSではIPv6、RTMP(S)ではIPv4が優先される。HLSはデュアルスタック環境でIPv6が使われるので安定しやすい。インターフェースを明示的に選択すれば一応RTMPSでもIPv6を使える。
  • YouTube - HLS
    カスタム
  • YouTube - RTMP:
    rtmp://a.rtmp.youtube.com/live2
  • YouTube - RTMPS:
    rtmps://a.rtmps.youtube.com/live2
    RTMPS を使用して配信を暗号化する - YouTube ヘルプ
  • Twitch (RTMP):
    Twitch Streamers - Twitch Ingest Recommendation
  • サーバー Primary YouTube ingest server
  • YouTubeの調子が悪い時はBackupに切り替えると安定するかもしれないが、概ねPrimaryの方が高速でBackupは遅い。まず疑うべきは冗長化されたISPやYouTubeのインフラより、自分の環境
  • ストリームキー(リンク)
  • 再エンコード品質を高めるため、ストリーミングキーは常に60fpsを選択するとよい。YouTubeが30fpsの映像であっても60fpsとして処理することで、ビットレートが多く配分されるからである。
  • 配信サービスの推奨設定事項を無視する 有効
  • 配信プラットフォームが定めた解像度、ビットレートの最大値を守らない設定を行いたい場合は有効。
  • 例えば、VBRを使うとビットレート上限を超えて配信できる場合がある。
  • 出力 見出しにジャンプ

    配信 見出しにジャンプ

    配信開始で選ばれるエンコード設定。
    品質、パフォーマンスの観点から上から順に使えるものを選択する。
    Macの場合はアップル VT H264 ハードウェアエンコーダ、Linuxの場合はOBS 23.0から公式対応した"VAAPI"等を選ぶと良いでしょう。

    x264 見出しにジャンプ

    デフォルトではソフトウェアエンコーダのx264になっている。ソフトウェアエンコーダはハードウェアエンコーダに比べ設定項目が豊富だが、配信や録画といったリアルタイム処理ではハードウェアエンコードに負荷・品質共に勝ることは難しいので、特殊な事情がなければ選ぶ必要はない。
    例えば、同程度の品質になるようエンコードした場合、x264で実時間の5倍かかるところ、h264_nvencでは1/5未満で終わる。

    NVIDIA NVENC H.264 見出しにジャンプ

    ハードウェアエンコードの現状最適解、対応したNVIDIA製GPUで使用できるNVEnc。

    OBS 23.0からNVIDIAと共同で開発した、最適化されたNVEncが利用できる。
    Pascal世代と比べ品質が向上したTuring (7th Gen NVEnc) 以降だけでなく、Pascal (6th Gen NVEnc) 以前にも有効なので、既存ユーザは今すぐアップデートしよう。

    項目 説明
    出力モード 詳細
  • エンコーダ設定が配信や録画の品質・パフォーマンスに最も影響するため、詳細な設定項目が見えるようにしよう。
  • 音声トラック 1
  • 配信は基本的に映像1ストリーム、音声1ストリームまで。
  • オーディオの詳細プロパティ -> トラックを工夫すると、ストリームエンコーダを使用した同時録画で複数の音声ストリームを含められる
  • 出力をリスケールする 無効
  • 解像度は設定 -> 映像で設定する
  • エンコーダ NVIDIA NVENC H.264 (new)
  • OBS 23.0からの最適化が含まれているnewを選択する。
  • 廉価GPU・古い世代のNVIDIA製品の場合、NVEncが使えない・一部機能が制限されているものがあるため、NVIDIA公式の対応表を確認する。 Video Encode and Decode GPU Support Matrix [NEW] | NVIDIA Developer
    • Max # of concurrent sessionsにNVEncのセッション数(同時にエンコード可能な数)が書いてある。
      3本以上を同時に処理する用途ならQuadroが欲しくなってくる。
      同時配信では同一解像度なら1セッションで済む
    • GTX 1650 Super以上が対応する7th Gen NVEncHEVC B Frame supportは映像品質にかなり効いてくるので、財布の紐を緩める理由に十分だ。

    Windows 8や10の古いバージョンを使っていて、要件を満たしておらずNVEnc(new)が選べない場合もある。

  • レート制御 VBR
  • YouTubeやTwitchなどが推奨するように、1フレームあたりの処理時間余剰ネットワーク帯域が予測しやすい点で安定はCBR。Mixer FTL(サ終)のようにCBRしか受け付けない配信プラットフォームもある。
    Choose live encoder settings, bitrates, and resolutions - YouTube Help
    配信の推奨事項 - Twitch
  • H.264エンコーダにおけるCBR(固定ビットレート)の実態は、ビットレート = 最大ビットレートを目指してレートコントロールするVBR(可変ビットレート, YouTubeストリームキーのことではない)。低いビットレート配分で済むシーンではネットワーク帯域を無駄遣いし、高いビットレートが必要なときVBVに沿ってわざわざ品質を落とすので、個人的にはVBRを推したい。
  • CQPはビットレート変動が非常に大きく配信には不向き。
  • ビットレート
  • YouTube 1080p:
    8000-12000 Kbps
  • YouTube 1440p:
    12000-18000 Kbps
  • YouTube 4K:
    24000-34000 Kbps
  • Twitch:
    6000 Kbps
  • 解像度、フレームレート毎に異なるため、YouTubeの推奨値を参考に調節するとよいが、NVEnc H.264 VBR 30fpsで試した結果、これらビットレートが適切(目標VMAFスコア96-97)だった。
  • ゲーム配信等で動きが多い場合は値を大きく、逆に動きの少ない静止画や絵描き配信等は値が小さくても良い。
  • ビットレートが回線の帯域を超えていないかを統計で必ず確認する
  • 最大ビットレート ビットレート + 2000, 4000 Kbps
  • レート制御にVBRを選ぶなら必ず設定する。4Mbps以上大きくしてもあまり効果がない上に余剰ネットワーク帯域が予測できずネットワークドロップを誘因するので、この程度に留めておこう。
  • 本来ビットレート制限の厳しいTwitchではCBRを使用すべきだが、VBRを使用し配信サービスの推奨設定事項を無視を有効にして、推奨値を若干超える最大ビットレートを設定するとコーナーで差をつけられる。
    Twitch Streamers - Twitch Video Encoding/Bitrates/And Stuff
    H.264の性質上、配信プラットフォーム側で多少のビットレートスパイクは許容されるから、VBRでも最大ビットレートを控えめに設定すれば何ら問題ない。
  • キーフレーム間隔(秒) 2 s
  • 配信では、キーフレーム(動画の大半が差分フレームな中で、完全な画像のフレーム)をある程度の頻度で含ませる必要がある。
  • ビットレートが映像に対して不十分なときに生じる、ブロックノイズや数秒前のシーンが纏わりつくようなアーティファクトが断ち切られる瞬間が、キーフレームが挿入されたときである。
  • NVEnc H.264に限って言えば実は4秒が効率が良いので、画質を攻める人にオススメ。
  • プリセット Quality
    Low-Latency Quality
    Low-Latency
  • GPUに余裕があれども、Max Quality(2 passエンコーディング)はリアルタイム処理に難があり、配信を不安定にするため、遅くてもQuality(medium)を選択する。Mixer FTLのように、レイテンシにシビアなプラットフォームでは配信すらできなくなる。
  • もし処理が間に合わずカクつく、このとき統計の"エンコードのラグが原因で逃したフレーム"の値が増えるようであれば、Quality同様に品質・負荷・ビットレートの効率が良いLow-Latency Quality(llhq)かLow-Latency(ll)を選ぶ。
  • Profile high
  • 対応していない機能があるため、baselineやmainは不可。ビットレート当たりの品質も確実に低下する。
  • Look-ahead 無効
  • キーフレーム間の2倍を先読み(最大Bフレームが2のとき、rc-lookahead=8)して、シーン検出によるキーフレーム間隔内での適応的なIフレーム挿入(no-scenecut=0)とBフレーム数を可変的(b_adapt=1)に決める。
  • 無効時は常に"最大Bフレーム"
  • 配信ではキーフレーム間隔が短く、Bフレはせいぜい2つ程度なので、負荷が上がるだけで先読みするメリットはあまりない……と思う。
  • 心理視覚チューニング 有効
  • Temporal AQ(aq-strength=8)によりビットレートの使用方法が大幅に最適化され、特に動きの激しいシーンでビットレートあたりの視覚品質が向上する。必ず使いたい。
  • 出力開始に失敗しましたあるいはNVENC コーデックを開けませんでしたと配信開始・録画開始に失敗するとき、無効。OBS Log Analyzerやログファイルを確認しつつ改善しない場合、
    1. GeForce ExperienceのShadowplayやWindows Game DVRなどNVENCセッション数を消費する他の録画ソフトを終了またはアンインストールする。
    2. 手動でビデオドライバをクリーンインストールする。最新タイトル対応と引き換えに配信前のBSoDで青ざめたくなければ、Game Ready DriverではなくStudio Driverを選ぶ。
    GPU 0
  • 複数挿したNVIDIA GPUを選択できる。
  • ただし、複数のGPU間では最適化(texture sharing)が機能しないため、OBSやNVIDIA曰く非推奨。遊びたいゲームがある程度余裕を持ってプレイできるスペックを選ぶとよい。

    GPU: 0. If you have 2 GPUs in your system, you can select which one is used to encode. This is not recommended, as NVENC is already very efficient and the little gain you can get from using a second card is lost by having to copy the frame to the second GPU.


    Google 翻訳: GPU: 0. システムに 2 つの GPU がある場合、どちらをエンコードに使用するかを選択できます。 NVENC はすでに非常に効率的であり、フレームを 2 番目の GPU にコピーする必要があるため、2 番目のカードを使用することで得られるわずかな利益が失われるため、これはお勧めできません。
    NVIDIA NVENC OBS Guide | GeForce News | NVIDIA

  • 最大Bフレーム 2
  • ビットレートが限られる環境下では、キーフレームの差分の更に差分であるBフレームは品質保持に有効。
  • 動きが少なく、ブロックノイズや数秒前のシーンが纏わりつくようなアーティファクトが出なければ3に増やしても良いが、NVEnc H.264では2が最も効率がよく、04は非効率。
  • YouTube Liveの低遅延や超低遅延、Mixer FTLでは0にすると安定する場合がある。
  • 上記の設定を行った際の映像品質(参考):

    NVIDIA NVENC HEVC 見出しにジャンプ

    OBS 28.0+で使える組み込みHEVCハードウェアエンコーダ。H.264にできなかった10-bitやHDR配信が可能。
    高負荷高効率なコーデックなので、回線に余裕がなくても品質を保ちながらGPUの処理能力でカバーできる。
    2022年8月現在、対応している配信プラットフォームはYouTube且つHLSのみ。
    HLS 配信を設定する - YouTube ヘルプ
    Delivering Live YouTube Content via HLS | YouTube Live Streaming API | Google Developers

    項目 説明
    エンコーダ NVIDIA NVENC HEVC (new)
  • 設定 -> 配信のサービスでYouTube - HLSを選ばないと表示されない
  • NVEncのHEVCエンコードはH.265 (HEVC) 4K YUV 4:2:0サポートのある5th Gen NVEnc以降が必要。
    • レート制御
    • ビットレート
    • 最大ビットレート
    • キーフレーム間隔(秒)
    • プリセット
    NVIDIA NVENC H.264を参照
  • SDRなら、ビットレートはH.264の3/4で同程度の品質。1/2は許容できない。
  • 4K HDRでプリセットQualityは難しいかもしれない。Low-Latency Quality(llhq)かLow-Latency(ll)を選ぶ。
  • プロファイル main10
  • HDRに対応するmain10プロファイルはHEVC 10-bit supportのある6th Gen NVEnc以降が必要。
  • 設定 -> 詳細設定 -> 映像P010(YCbCr 4:2:0 10-bit Rec. 709)を選んではじめて10bit出力される
  • デバンドの効果か、同じビットレートならmain(8bit)よりmain10(10bit)の方が高品質なので、SDRでもmain10を使おう
  • main, main10いずれを選んでもI444(YCbCr 4:4:4 8/10-bit Rec. 709)はRExtなので注意。
    • Look-ahead
    • 心理視覚チューニング
    • GPU
    • 最大Bフレーム
    NVIDIA NVENC H.264を参照
  • HEVC B Frame supportされた7th Gen NVEncが必要なので、Pascal世代(GTX 10)まで最大Bフレームは0
  • AMD HW H.264 見出しにジャンプ

    AMD製APUやRadeonなどのdGPUで使用できるハードウェアエンコーダ。
    アニメ調な絵が得意なNVEncに対して、AMD Advanced Media Framework(AMF)は実写のディテールを保った品質が特徴で、配信でH.264を使用する分には十分な品質だった。

    項目 説明
    エンコーダ AMD HW H.264
  • AMDのGPUを使用しているにも関わらず選択できない場合は、ドライバの更新を試みる
  • レート制御 NVIDIA NVENC H.264を参照
    ビットレート
    キーフレーム間隔 (0=自動)
    プリセット Quality
  • 品質を優先したエンコードを行う設定。
  • 統計の"エンコードのラグが原因で逃したフレーム"の値が増えるなら、BalancedSpeedを選択する。
  • プロファイル NVIDIA NVENC H.264を参照
    最大Bフレーム
    B Frames
    2 s
  • Bフレームに対応したAMFがOBS 28.0で使えるようになり、最新のNVEncやQSVに対し明らかに劣っていた品質がほぼ同等になった。RDNA1(RX 5000)以降で使えるので、必ず使いたい。
    AMD Re-introduces the B-frame! - Code Calamity
  • AMF/FFmpegオプション
  • レガシーなAMF実装H.264/AVC, H265/HEVC Encoder (AMD Advanced Media Framework)で詳細なオプションを指定していたユーザ向けの機能。
  • FFmpegカスタム出力の映像エンコーダ設定と同様にkey=value key=value...形式で指定する。
    ffmpeg -h encoder=h264_amf
    ffmpeg -h encoder=hevc_amf
    

    AMF/AMF_Video_Encode_API.pdf at master · GPUOpen-LibrariesAndSDKs/AMF
    AMF/AMF_Video_Encode_HEVC_API.pdf at master · GPUOpen-LibrariesAndSDKs/AMF
    AMF Options · obsproject/obs-studio Wiki

  • BPicturesPattern=3
  • AMFオプションでBフレーム数を指定する例。AMFオプションのみを指定し、FFmpegへフォールバックしていない場合機能する。
  • obs-amd-encoder/VideoEncoderVCE.hのうち、整数またはbool値で機能するパラメータのみ使用できる。
  • 配信・録画開始後、適用されたかログファイルを確認しよう。
  • PeakBitrate=12000000
  • AMFオプション。配信でレート制御にVBRを選んだら、スパイクでドロップしたり配信プラットフォームに弾かれないよう、最大ビットレートはビットレート + 2000-4000 Kbps程度に留めるとよい
  • 例は、最大ビットレート12000Kbps12M = 12000K = 12000000bits相当。
  • レート制御にVBRを選んでも、OBSのAMF実装に最大ビットレートの項目は表示されない。AMF_VIDEO_ENCODER_PEAK_BITRATEはビットレートの1.5倍に固定されているためである。
  • RateControlPreanalysisEnable=true
    または
    HevcRateControlPreAnalysisEnable=true
  • AMFオプション。VBRで使用できる先読みレート制御。品質に影響するので、Bフレームだけでなくこちらも使いたい。VBAQと共に使用する。
  • エンコードのラグが原因で逃したフレームが増えるなら、無効RateControlPreanalysisEnable=false, EnableVBAQ=falseにする。
  • AMF_VIDEO_ENCODER_RATE_CONTROL_PREANALYSIS_ENABLEと名前が似ているEnablePreAnalysis=false(AMF_VIDEO_ENCODER_PRE_ANALYSIS_ENABLE)は古い先読み実装で、使わない
  • EnableVBAQ=true
    または
    vbaq=1
  • AMFの既定では無効だが、OBSでは主観品質を向上させるVBAQが有効になっている。
  • vbaq=1FFmpegオプション形式で記述すると、何らかの原因でtexture-based encoding(NVIDIA NVENC H.264相当の最適化)に失敗したときと同様に、組み込みエンコーダからFFmpegへフォールバックする。パフォーマンスが低下したり、RateControlPreanalysisEnableなどFFmpegになくOBSに実装されているAMFの恩恵にあずかれなくなる点に注意。
    obs-ffmpeg: Add texture-based hardware AMD encoder by jp9000 · Pull Request #6508 · obsproject/obs-studio
  • 利用可能なFFmpegオプション: obs-studio/texture-amf-opts.hpp ログファイルを確認しよう。
  • AMD HW H.265 (HEVC) 見出しにジャンプ
    項目 説明
    エンコーダ AMD HW H.265 (HEVC)
  • 設定 -> 配信のサービスでYouTube - HLSを選ばないと表示されない
  • レート制御
  • ビットレート
  • キーフレーム間隔 (0=自動)
  • NVIDIA NVENC H.264を参照
  • プリセット
  • AMF/FFmpegオプション
  • AMD HW H.264を参照
    H.264/AVC Encoder (AMD Advanced Media Framework) 見出しにジャンプ

    OBS 28.0で非推奨・削除された、旧バージョンのAMF。

    H265/HEVC Encoder (AMD Advanced Media Framework) 見出しにジャンプ

    OBS 28.0で非推奨・削除された、旧バージョンのAMF。

    QuickSync H.264 見出しにジャンプ

    Intel製iGPU搭載の、Quick Sync Video(QSV)が使えるモデルで有効な機能。
    処理が遅いので配信では設定を妥協する必要があるが、IceLake以降の内蔵グラフィックしか搭載していないラップトップでも、NVEncと同等以上の品質が得られる。
    rigayaの日記兼メモ帳 画質比較 (2020.03) アニメ編

    項目 説明
    エンコーダ QuickSync H.264
  • GeForce等を搭載したデスクトップでQSVを使う場合、BIOSでiGPUを有効にする必要がある。
  • NVEncとQSVに大きな世代差がなければ、NVEncを使う。
  • QSV H.264 エンコーダ では 10ビット エンコードを実行できませんと怒られる場合は、設定 -> 詳細設定でカラーフォーマットにNV12を選択する
  • ターゲットの使用法 medium
  • quality, balanced, speedは古い指定方法なので無視する
  • mediumが処理時間・品質ともにバランスがよい。slowでは60fps出ない可能性がある。
  • slowerにした途端に処理速度が半減するので注意。mediumですら統計の"エンコードのラグが原因で逃したフレーム"の値が増えるようであればfast, fasterに下げても良いが、veryfastだけは極端なポテト品質なので使うべきでない。
  • Skylake以降(のラップトップ)では、省電力時VDEnc動作となりエンコード品質が下がる点に注意。
  • プロファイル NVIDIA NVENC H.264を参照
    キーフレーム間隔(0=自動)
    レート制御 LA_VBR
  • LA(先読み)を有効にするには、遅延をnormalまたはlowに設定する
  • LA_ICQの品質は素晴らしいが、1フレームあたりの処理時間余剰ネットワーク帯域が大きく変動するため、配信向きでない
  • ビットレート NVIDIA NVENC H.264を参照
    最大ビットレート
    遅延 low
  • 非同期深度async_depth, 先読み深度look_ahead_depthを設定する。先読みはレート制御でLA_CBR, LA_VBR, LA_ICQを選んだときに有効。
  • normal(async_depth=4, look_ahead_depth=フレームレート)は最大2秒のエンコード遅延と引き換えに品質を向上させる。ultra-low(async_depth=1, look_ahead_depth=0)はパフォーマンスと引き換えにエンコード遅延を最大0.5秒程度に抑える。いずれも"ターゲットの使用法"との組み合わせでエンコードドロップが増えるようならlow(async_depth=4, look_ahead_depth=フレームレート/2)を選び、レート制御でLA_VBRからVBRに変更(look_ahead_depth=0)する。
  • 遅延とエンコード品質はトレードオフである
  • 最大Bフレーム
    B Frames
    NVIDIA NVENC H.264を参照
    主観的なビデオ強化 有効
  • MBBRCとCQM(MFX_SCENARIO_GAME_STREAMING)を有効にする
  • MBBRCがパフォーマンスに影響するので、エンコードドロップが増えるなら無効にする
  • アップル VT H264 ハードウェアエンコーダ 見出しにジャンプ

    MacOSではこちらを選ぶしかないようです。

    項目 説明
    エンコーダ アップル VT H264 ハードウェアエンコーダ
  • macOS版OBSで使えるハードウェアエンコーダ。
  • 選択したカラーフォーマットは Apple VT H.264 エンコーダ ではサポートされていませんと怒られる場合は、設定 -> 詳細設定でカラーフォーマットにNV12を選択する
  • ビットレート NVIDIA NVENC H.264を参照
    ビットレート制限 有効
    最大ビットレート
    最大ビットレート ウィンドウ(秒) 1.50
  • 既定値。VBVに関する設定で、YouTubeなら変える必要はない。
  • OBSのApple VT実装にCBRモードはないが、値を小さくする1.00CBRに近いレート制御となる。ビットレートあたりの品質が低下する。
  • 既定で1.5秒間のところ1秒間という短い区間で最大ビットレートを超えないようにやりくりするため、ビットレートのスパイクが軽減される。Twitchなどビットレート上限の厳しいプラットフォームでは有効かもしれない。
  • キーフレーム間隔 (0=自動) NVIDIA NVENC H.264を参照
    プロファイル
    B フレームを使用する

    録画 見出しにジャンプ

    録画開始で選ばれるエンコード設定。
    カスタム出力 (FFmpeg)でURLに出力すれば配信になる。

    因みにYouTubeの推奨値。あくまでもアップロード用の最終出力の推奨値であり、編集前のソースとして使う場合はこの値は推奨されない。
    アップロードする動画におすすめのエンコード設定 - YouTube ヘルプ

    項目 説明
    出力モード 詳細
    種別 標準
  • 組み込みエンコーダでは、録画を一時停止して、同じファイルで再開する機能FFmpegに実装されていない機能が利用できる
  • 配信用のプロファイルで、ストリームエンコーダを使用して配信と同時に録画したり、リプレイを流す場合
  • 種別 カスタム出力 (FFmpeg)
  • OBS組み込みではなく、FFmpegを使用したエンコードを行う。
  • 設定可能な項目が大幅に増える。FFmpegはいいぞ。
  • FFmpegの出力の種類
    ファイルパスまたはURL
    ファイルに出力
  • フォルダを参照又は直接ディレクトリのパスを記述。基本的に録画機能。
  • URLに出力
  • RTMP URLを記述するとRTMPで配信でき、負荷を掛けずに同時配信が可能。
  • マルチプレクサーと併せて設定すると、HLS配信が可能
    https://a.upload.youtube.com/http_upload_hls?cid=STREAMKEY&amp;copy=0&file=playlist.m3u8
    

    @Dennis S. Fun fact: you can use ffmpeg (including OBS' ffmpeg output) to ingest HEVC over HLS to YouTube. / Twitter

  • スペースなしのファイル名を生成 有効
  • ファイル名のスペースは極力避けたい。
  • 詳細設定でスペースをアンダースコアに置き換えても良い。
  • コンテナフォーマット mpegts
    mkv(matroska)
    mp4
  • コンテナフォーマットがmp4の場合、OBSがクラッシュして録画が強制終了するとmoov atomが破損し再生・編集が不可になる。
  • mpegtsは録画中にデコード(再生)やエンコードが可能になり、OBSがクラッシュしても動画が破損しない。一般的にはデジタル放送やライブストリームに使用される形式。
  • 映画&ビデオで再生するには、Microsoft StoreからMPEG-2拡張機能をインストールする必要がある。
    MPEG-2 ビデオ拡張機能 - Microsoft Store Apps
  • 編集ソフトの殆どはmpegtsに対応していないため、編集前に録画の最多重化が必要。
  • マルチプレクサーの設定(ある場合)
  • 基本的に何も指定しない。
  • strict=-2
  • コンテナフォーマットmp4に音声コーデックflacを入れるといった規格外を許容するときに必要。
  • 音声エンコーダにflacを使用するなら、mp4(規格外)よりmkvが望ましい。
  • 規格外のフォーマットをよく扱うなら、ffplayやMPC-BEをオススメする。
    Download FFmpeg
    MPC-BE download | SourceForge.net
  • color_range=tv color_primaries=bt709 color_trc=bt709 colorspace=bt709
  • 色空間を明示的に指定し、メタデータに記述する。
  • movflags=faststart color_range=tv color_primaries=bt709 color_trc=bt709 colorspace=bt709
  • Twitter等のSNSに直接アップロードするには、ファイルの先頭にmoov atomを含める必要がある
  • 編集ソフトに影響はないのでオススメ。
  • movflags=frag_keyframe+empty_moov
  • コンテナフォーマットがmp4でも、強制終了時に動画ファイルが破損しなくなるFragmented MP4を使用する。
  • fmp4はTwitter等のSNSにそのまま投稿できなかったり、Premiere Pro等の編集ソフトが非対応・対応が甘い場合があるので非推奨。
  • OBSの録画の最多重化もFragmented MP4には対応していないため、FFmpegを使用して同様の処理を行う必要がある。素直にmpegtsを使えばよい。
  • ffmpeg -i input.mp4 -c copy out.mp4
    
    hls_time=6 hls_segment_filename=https://a.upload.youtube.com/http_upload_hls?cid=STREAMKEY&copy=0&file=fileSequence%d.ts color_range=tv color_primaries=bt709 color_trc=bt709 colorspace=bt709
  • YouTubeにHLS配信する例
  • Segment Durationはhls_time=4までが推奨されるが、6や8にした方が安定した。
  • STREAMKEYYouTubeのストリームキーに置き換える。
  • 映像ビットレート 0 Kbps
  • 録画に適したConstant QPやConstant Quatlityモードの場合は0 Kbpsに設定して無視させる。
  • 解像度別ファイルサイズ(ビットレート設定)と品質(VMAF)の関係と最適な値
  • キーフレーム間隔(フレーム) 15-60
  • ここでは秒ではなくフレーム数であることに注意。
  • 編集や殆どのプラットフォームへのアップロードに適したclosed gop(フレームレートの半分)。よって、30fpsなら15、60fpsなら30。
  • closed gopでなくとも、2秒程度なら問題ない。
  • 出力をリスケールする 無効
  • ここではリスケール(リサイズ)しない。
  • 映像エンコーダ
    映像エンコーダ設定(ある場合)
    hevc_nvenc
  • NVIDIA製GPUを使用している場合、最もよい選択
  • h264_nvenc
  • HEVCと比べ品質は劣るものの互換性は高く、ソフトウェアエンコーダx264に引けを取らない品質
  • h264_qsv
  • NVEncの世代が古いあるいは使えない場合の回避策
  • 最新世代のIntel CPUの場合、NVEncに引けを取らない品質
  • utvideo
  • AviUtlと親和性が高く、比較的負荷の低い可逆圧縮コーデック
  • dnxhd
  • 比較的負荷の低い中間コーデック
  • x264
  • 一般的なソフトウェアエンコーダ
  • SVT-AV1
  • Intel SVTを使った、Intel CPUに最適化された品質が微妙ソフトウェアエンコーダ
  • AOM AV1
  • AV1ソフトウェアエンコーダでは比較的軽い、激重エンコーダ
  • すべてのコーデックを表示(潜在的に互換性がない場合でも) 有効
  • mpegtsを選択した場合、チェックしないとプルダウンメニューに表示されない。
  • 音声ビットレート 320
    音声トラック オーディオの詳細プロパティに対応したトラックを有効にする。#出力の音声に関する項を参照。
    音声エンコーダ aac
  • FFmpeg既定のAACエンコーダ
  • コンテナフォーマットはmpegtsかmp4
  • 基本的に不可逆圧縮のaacで十分。実際のところ、マイクやAIFの品質の方が音質への影響は大きい。
  • libfdk_aac
  • FFmpeg既定のAACエンコーダより高品質とされる。
  • FDK-AACが含まれるFFmpegを組み込んでOBSをビルドすると選択可能。
  • flac
  • 劣化無く音声を記録できる、可逆圧縮のflacもオススメ。
  • コンテナフォーマットはmkv。mp4では規格外で、マルチプレクサーの設定が必要。
  • #YouTubeの劣悪エンコード事情への対処法#動画音声の再エンコ品質にもあるように、最初から最後までflacで貫き通すと、YouTube側でより良く音声がエンコードされる。
  • pcm_s16le
    pcm_s24le
    pcm_s32le
  • PCM signed 24-bit little-endian
  • コンテナフォーマットはmkvかmov
  • 音声エンコーダ設定(ある場合) aac_coder=twoloop
  • 音声エンコーダにFFmpeg標準のAACエンコーダを使用する場合、品質が良くなるとされる
  • hevc_nvenc 見出しにジャンプ

    この設定を使用して録画すれば、ShadowPlayの1/10のファイルサイズで同等以上の品質を得られるでしょう。

    項目 説明
    種別 カスタム出力 (FFmpeg)
    映像ビットレート 0 Kbps
  • ビットレートではなくQPでレート制御を行うので、映像ビットレートは0 Kbpsにして無視してもらう。
  • 映像エンコーダ hevc_nvenc
  • NVIDIA製GPUを使用している場合、最も推奨。
  • H.264より高品質で圧縮率が高い。
  • ローカル保存用としても、YouTubeへのアップロードにも適している。
  • 4K60や8KはH.264の場合規格外となるので、必然的にHEVCやVP9が使われる(例外あり)。
  • 再生負荷は大きい。GPUによってはデコード・エンコードに非対応。映画&ビデオで再生するには、Microsoft StoreからHEVC拡張機能をインストールする必要がある。
  • 映像エンコーダ設定(ある場合) preset=p7 profile=main10 rc=constqp rc-lookahead=1 spatial-aq=0 temporal-aq=1 weighted_pred=0 init_qpI=21 init_qpP=21 init_qpB=23 b_ref_mode=1 dpb_size=4 multipass=2 g=60 bf=3
  • エンコード500本ノックにより生まれた、hevc_nvencさいつよ設定をOBSで使用する。SVT-AV1並みのVMAF/ファイルサイズで10倍の処理速度(Intel Core i7-8700, NVIDIA GeForce RTX 2080比)。 init_qpI=21 init_qpP=21 init_qpB=23の品質が十分/不十分で、ファイルサイズが大きいと感じたら、上記で組み合わせを幾らか列挙しているので参考にされたし。
  • 特に4Kでpreset=p7を使用するとRTX 2080(7th Gen NVEnc)では間に合わなかった。SDRではpreset=p4, HDRでpreset=p3に妥協し、multipass=0が良いだろう。
    Introducing NVIDIA Video Codec SDK 10 Presets | NVIDIA Developer Blog
  • 27.2で対応 組み込まれたFFmpegのバージョンが古いので、preset=p1-p7 dpb_size=4 multipass=2は無視され、b_ref_mode=0でないと動作しないFailed to open video codec: Operation not permitted。引数の設定に失敗しているかはヘルプ -> ログファイル -> 現在のログを表示で確認できる。
  • profile=main10(10bit)はmain(8bit)に比べて品質がよいので、カラーフォーマットP010と共に設定し、ぜひ使いたい。highはない。
  • rc=constqp配信ではレート制御にVBRを使用したが、録画にはCQPが適している。NVIDIAも推奨している。
  • bf=2Bフレームは世代毎にサポートされている値を使うか、編集に差し支える場合はbf=0に設定する。
  • preset=lossless tune=lossless profile=main
  • HEVCのDCT変換と量子化の両方をバイパス(Transquant bypass mode)して、比較的圧縮率の高いロスレスエンコードを行う。
  • 色空間・ピクセルフォーマット設定により、色の劣化は避けられない。
  • h264_nvenc 見出しにジャンプ
    項目 説明
    種別 カスタム出力 (FFmpeg)
    映像ビットレート 0 Kbps hevc_nvencを参照
    映像エンコーダ h264_nvenc
  • NVIDIA製GPUを使用している場合で、HEVC編集に難があるか、ビットレートを潤沢に割り当てられる場合こちらを推奨。
  • HEVCと比べ品質は劣るものの互換性は高い。
  • 編集ソフトで扱う際に負荷が小さい。
  • 旧世代のGPUでもハードウェアデコード・エンコードに対応。
  • 映像エンコーダ設定(ある場合) preset=p4 profile=high rc=vbr rc-lookahead=1 spatial-aq=0 temporal-aq=1 cq=23 weighted_pred=0 coder=cabac b_ref_mode=2 dpb_size=4 multipass=0 g=120 bf=2
  • エンコード500本ノックにより生まれたh264_nvencさいつよ設定をOBSで使用する。
  • rc=vbr cq=23配信では、レート制御にVBRのビットレート指定モードを使用したが、録画にはVBR CQモード(固定品質)が適している。値を大きくするとファイルサイズが小さくなる代わりに品質が落ちる。
  • 配信向けの設定値は負荷を掛けずに同時配信する方法を参照。

    h264_qsv 見出しにジャンプ
    項目 説明
    種別 カスタム出力 (FFmpeg)
    映像ビットレート 0 Kbps hevc_nvencを参照
    映像エンコーダ h264_qsv
  • NVEncが利用できず、QSVが使用できる場合に推奨。
  • FFmpegカスタム出力でQSVを使うには、QSVが組み込まれたFFmpegでOBSをビルドする必要がある。
  • IceLakeより前の世代のhevc_qsvは品質、速度面で優位性が無いので使用しない。
    QSVEnc/Readme.ja.md at master · rigaya/QSVEnc
  • 映像エンコーダ設定(ある場合) preset=veryslow look_ahead=1 look_ahead_depth=30 look_ahead_downsampling=2x profile=high global_quality=25 g=60 bf=0
  • preset=veryslow最も時間をかけてエンコードする
  • look_ahead=1 look_ahead_depth=30 look_ahead_downsampling=2x先読みを行う。Haswell以降対応、非対応のCPUではICQlookahead=0
  • global_quality=25レート制御にLA_ICQを使い、品質を指定する
  • bf=0
  • utvideo 見出しにジャンプ

    録画負荷が比較的軽い可逆圧縮コーデック。
    一般的な中間コーデックではないので、編集ソフトの対応は微妙。

    項目 説明
    種別 カスタム出力 (FFmpeg)
    コンテナフォーマット avi
    映像エンコーダ utvideo
  • 可逆圧縮エンコードの中でも互換性が高く、効率が良いと言われている。
  • "編集用"にロスレスで録画したい場合はこちらを推奨。
  • ストレージの性能と容量に余剰が無ければ非推奨。
  • 映像エンコーダ設定(ある場合) pred=median
  • pred=gradientはエンコード/デコード速度と圧縮率のバランスが良く、pred=medianの方が圧縮率が高い。
  • 音声エンコーダ pcm_s16le
  • PCM signed 16-bit little-endian
  • dnxhd 見出しにジャンプ

    Premiere ProやDavinci Resolveなど幅広い編集ソフトで使用できる扱いやすい中間コーデック。編集前ソースとして最適。
    録画負荷はまあまあ。Core i7 8700では4K30 DNxHR SQは可能で、60fpsは盛大にドロップした。

    項目 説明
    種別 カスタム出力 (FFmpeg)
    コンテナフォーマット mov
    mxf
    映像ビットレート 0 Kbps
  • 規格に対応した値でないとエンコードできない。下に解像度・ビットレート対応表がある。
  • ビットレートは0にし、映像エンコーダ設定でprofileを指定すればよい。
  • キーフレーム間隔(フレーム) 1
  • 映像エンコーダ dnxhd
  • Premiere ProやDavinci Resolveなど幅広い編集ソフトで使用できる中間コーデック。
  • 映像エンコーダ設定(ある場合) profile=dnxhr_444(yuv444p10le)
    profile=dnxhr_hq(yuv422p)
    profile=dnxhr_sq(yuv422p)
    profile=dnxhr_lb(yuv422p)
  • dnxhr_444は設定 -> 詳細設定 -> 映像 -> カラーフォーマットがI444でないと使用できない。他はNV12を選択する。
  • dnxhr_sqが品質・ファイルサイズの観点からオススメ。
  • 音声ビットレート 2304 Kbps
  • 音声エンコーダ pcm_s24le
  • PCM signed 24-bit little-endian
  • 以下の表は

    ffmpeg -loglevel error -i "input.mp4" -c:v dnxhd -b:v 1M -pix_fmt yuv422p10le -c:a pcm_s16le "output.mxf"
    

    のエラー出力をAvidのドキュメントWikipediaを参考に整形したものです。

    Valid DNxHD profiles (FFmpeg)
    Frame size / FPS Resolution bitrate pixel format
    1920x1080p/23.976
    1920x1080p/24
    Avid DNxHD 175x 175Mbps yuv422p10
    Avid DNxHD 115 115Mbps yuv422p
    Avid DNxHD 175 175Mbps yuv422p
    Avid DNxHD 36 36Mbps yuv422p
    Avid DNxHD 350x 350Mbps yuv444p10, gbrp10
    1920x1080p/25 Avid DNxHD 185x 185Mbps yuv422p10
    Avid DNxHD 120 120Mbps yuv422p
    Avid DNxHD 185 185Mbps yuv422p
    Avid DNxHD 390? 390Mbps yuv444p10, gbrp10
    1920x1080p/29.97 Avid DNxHD 145 145Mbps yuv422p
    Avid DNxHD 220 220Mbps yuv422p
    Avid DNxHD 45 45Mbps yuv422p
    Avid DNxHD 440x 440Mbps yuv444p10, gbrp10
    1920x1080p/50 Avid DNxHD 365x 365Mbps yuv422p10
    Avid DNxHD 240 240Mbps yuv422p
    Avid DNxHD 365 365Mbps yuv422p
    Avid DNxHD 75 75Mbps yuv422p
    Avid DNxHD 730? 730Mbps yuv444p10, gbrp10
    1920x1080p/59.94
    1920x1080p/60
    Avid DNxHD 440x 440Mbps yuv422p10
    Avid DNxHD 290 290Mbps yuv422p
    Avid DNxHD 440 440Mbps yuv422p
    Avid DNxHD 90 90Mbps yuv422p
    Avid DNxHD 880? 880Mbps yuv444p10, gbrp10
    x264 見出しにジャンプ
    項目 説明
    種別 カスタム出力 (FFmpeg)
    映像エンコーダ libx264
  • そもそもソフトウェアエンコードはハイスペックなPCであっても高負荷であり、リアルタイムエンコードに向かないことに注意。
  • ただし、上記のハードウェアエンコーダが使えないPCで、(ゲーム等ではなく)絵やデスクトップ操作等の録画用であれば、x264でも賄える場合がある。
  • 映像エンコーダ設定(ある場合) preset=placebo x264-params=crf=20:rc-lookahead=60:qpmin=5:qpmax=40:qpstep=16:qcomp=0.85:mbtree=0:vbv-bufsize=31250:vbv-maxrate=25000:aq-strength=0.35:psy-rd=0.35:keyint=15:no-open-gop:bframes=2:partitions=p8x8,b8x8,i8x8,i4x4:merange=64:ref=4:no-dct-decimate=1
  • x264 placeboでclosed gopな引数。
    かなり重たい。
  • SVT-AV1 見出しにジャンプ

    --enable-libsvtav1 ffmpeg -h encoder=libsvtav1

    AOM AV1 見出しにジャンプ

    --enable-libaom ffmpeg -h encoder=libaom-av1

    ストリームエンコーダを使用 見出しにジャンプ

    ストリームエンコーダを使用すると、負荷が増やさずに配信と同時に録画できる。
    品質劣化を気にして配信プラットフォーム側のアーカイブ機能に任せず、配信と同時に手元に録画したいが、同時エンコードはしたくない人向け。
    配信中のリプレイにも使える。

    項目 説明
    種別 標準
  • 配信と同時に録画する際はOBS組み込みの標準エンコーダを使用する。
  • 録画フォーマット mkv
  • mkvで録画して録画の再多重化を使用する。
  • 音声トラック 音声ミキサー設定 -> 音声に登録されている分チェックする
  • 音声ミキサー -> オーディオの詳細プロパティで触れているように、デスクトップ音声とマイク音声を分けられるので、トラック1に配信ミックス, 2 マイク, 3 デスクトップ音声とし、1を配信に2-3を録画に使うことも可能。
  • アプリケーション毎に音声を分けて録音できる仮想オーディオデバイスやオーディオインターフェースを使用すると、1 ミックス, 2 マイク, 3 通話, 4 ゲーム, 5 BGMで配信1に録画2-5という使い方も可能。配信素材から動画をつくる用途で、より生産性を高めてくれるだろう。
  • エンコーダ (ストリームエンコーダを使用)
  • ストリームエンコーダを使用することが負荷を増やさない為のミソ。
  • 負荷を増やさず配信と異なるビットレートやエンコーダ設定は使えない。
  • 負荷を掛けずに同時配信する方法 見出しにジャンプ

    現在OBSは同時配信を正式にサポートはしていません。
    様々な方法がありますが、より効率的な方法を解説します。

    一般的に知られている方法は、OBSを多重起動したり、OBSの配信から1つ、録画(FFmpegカスタム出力)から1つという方法ですが、
    これは2つエンコード(及びデコード)が走るのは極めて無駄であり、GeForceの限られたNVEncセッション数(3)を浪費するため、お勧めできません。NVENCエラー: 同時セッションが多すぎます

    開発の盛んな同時配信プラグインもあるようです:
    OBS複数サイト同時配信プラグイン(ソースコード付き) - 雷鳴の日記
    sorayuki/obs-multi-rtmp: OBS ≧ 26.1用複数サイト同時配信プラグイン

    今回解説するのは、FFmpegカスタム出力でエンコードしローカルポートへ出力、その出力をffmpegに入力してエンコードせず複数出力するという手法です。
    これなら上り回線が許す限り、2つ3つと同時配信が可能になります。

    1. まずはOBSの設定
    項目
    種別 カスタム出力 (FFmpeg)
    ファイルパスまたはURL rtmp://localhost:5555
    コンテナフォーマット flv
    映像ビットレート> 6000 Kbps
    キーフレーム間隔(フレーム) 30fps: 15
    60fps: 30
    映像エンコーダ h264_nvenc
    映像エンコーダ設定(ある場合) profile=high preset=medium rc=vbr_hq maxrate=7M bf=2 rc-lookahead=1
    音声ビットレート 128 Kbps
    音声トラック 1
    音声エンコーダ aac
    1. コマンドプロンプト(PowerShellでは書き方が違うよ!)(Win-R->cmd)で以下ffmpegコマンドを実行
    ffmpeg -listen 1 -i rtmp://localhost:5555 -c copy -f flv rtmp://live-tyo.twitch.tv/app/Twitchのストリームキー -c copy -f flv rtmp://a.rtmp.youtube.com/live2/YouTubeのストリームキー
    

    ※収益化している場合、Twitchは同時配信を認めていない

    1. OBSで録画開始を押下。FFmpegカスタム出力を使うので配信開始じゃないよ!
    2. ffmpegが何らかのストリームを受け取ってるような表示になったら成功。
    3. OBSで録画停止を押下すると、勝手にffmpegの処理も止まります。

    音声 見出しにジャンプ

    設定 -> 出力 -> 音声

    項目 説明
    トラック1 音声ビットレート 320
  • AACなら320Kbpsで送り付けよう。ダメなら256や128に落とす。
    配信の推奨事項 Twitch
    ライブ エンコーダの設定、ビットレート、解像度を選択する - YouTube ヘルプ
  • 配信用のプロファイルでは、オーディオの詳細プロパティで全ての音声をトラック1にミックスする。
  • 名称 任意
  • ストリームのメタデータに明示する事ができる。
  • 複数音声ストリームを使用する場合に便利。
  • トラック2
  • 録画用のプロファイルでは、設定 -> 音声にあるマイクとデスクトップ音声をオーディオの詳細プロパティで複数のトラックに分けたり、アプリケーション毎に音声を分けて録音すると便利。
  • iTunesが入っている環境では配信の音質が向上する 見出しにジャンプ

    AppleのAACエンコーダは他のAACエンコーダに比べてエンコード結果が高品質だと評価されているが、プロプラエタリなソフトウェアな為、OBSに同梱して配布できない。
    AAC encoders - Hydrogenaudio Knowledgebase

    しかし、実はiTunesがインストールされたWindows上のOBSでは、以下のようなログが表示される。

    [CoreAudio encoder]: Adding CoreAudio AAC encoder
    

    CoreAudioとはまさに、あの天下のApple様が先端技術の粋を集めて開発した世界最強AACエンコーダを含む音声系フレームワークである。
    WindowsにiTunesがインストールされていれば、AppleのありがたいAACエンコーダを使わせて頂けるという訳だ。
    言わずもがなMacOSはデフォルトで対応している。

    設定 -> 出力 -> 音声で音声ビットレートにマウスオーバーすると確認できる。

    • iTunesが入っていない環境: FFmpeg 既定のAACエンコーダ
    • iTunesが入っている環境: CoreAudio AACエンコーダ
    WindowsのOBSはiTunesが入っている環境では配信の音質が向上する

    iTunesを入れる必要がない環境でもAppleのAACエンコーダを使うために、旧バージョンのiTunesのインストーラからAppleApplicationSupportのインストーラだけを取り出してインストールする方法もある。
    OBS-Studio: Enable CoreAudio AAC encoder (Windows) | OBS Forums
    Troubleshooting issues with iTunes for Wi… - Apple Community

    1. Appleのコミュニティフォーラムから旧バージョンのiTunes 12.9.1.4 for Windows (64-bit)インストーラをダウンロード
      https://itunes.apple.com の previous versions of iTunes でもよい
    2. iTunes64Setup.exeは実行しない
    3. 7-Zip等を利用してiTunes64Setup.exeを展開しAppleApplicationSupport64.msiを取り出す。
    7z x iTunes64Setup.exe
    
    1. AppleApplicationSupport64.msiを実行してApple AACエンコーダをインストール

    OBSはiTunesを入れると音質が劇的に向上する - 科学無謬論 - Medium
    根津ちずも🧀さんはTwitterを使っています 「OBSの音質わるいっぽい問題、どうやら元から導入されてるFFmpeg AACエンコーダが原因っぽくて... / Twitter

    リプレイバッファ 見出しにジャンプ

    リプレイバッファを実行しながらゲームをプレイしておけば、名場面の後に保存を押すことで、ストレージ容量を気にせず動画を残せる。
    バックグラウンドでエンコードが常に実行され、保存する秒数分システムメモリ上に直近の動画が置かれる仕組みなので、あくまでも名場面だけをストレージに残す目的で、負荷軽減の機能ではない。

    ShadowPlay インスタントリプレイ OBS Studio リプレイバッファ
    負荷 小さい 小さくも大きくもできる
    ファイルサイズあたりの品質 あまりよくない よくできる
    リプレイのキャッシュ先 ストレージ(SSD, HDD)
    -> 高耐久なSSDが必要。CrystalDiskInfoで寿命を確認した方がよい。
    システムメモリ(RAM)
    -> システムメモリに空きが必要というほど使わない
    遡れる時間 20分 システムメモリ次第(基本的に劣る)
    HDR 対応 未対応
    配信中にリプレイを流す 見出しにジャンプ

    これらを駆使すれば、負荷を増やさず配信を遡ってリプレイを配信に載せられる。
    リプレイ専用のシーンをつくると尚よい。

    音声 見出しにジャンプ

    設定 -> 音声

    項目 説明
    一般 サンプリングレート 48kHz
  • YouTubeの推奨値は44.1kHzだが、CDの規格ではなく映像で使われるサンプルレート48kHzを使うべき。
  • YouTube動画でも、48kHzで上げたほうが音声の再エンコードが高品質
  • オーディオインターフェースのサンプルレートも必ず合わせよう。
  • チャンネル ステレオ
  • 大抵のプラットフォームはステレオ。特殊な用途でない限り弄らない。
  • グローバル音声デバイス デスクトップ音声デバイス スピーカー
    SPDIF
    ライン
  • Windows上の"再生デバイス"に該当する。
  • スピーカーやヘッドホン、オーディオインターフェイスの出力デバイス名を選択する。
  • AIFのループバック機能を使用する場合はデスクトップ音声がマイク音声に返される。その場合こちらを有効にする必要はないが、ボイスチャットや分けて編集したい場合はそれを使用せずOBSの機能を使おう。
  • Windows Update、AIFの抜き差し、サンプルレートの変更等でDeviceIDが変更されると、"デバイスが接続されていないまたは利用不可"になります。再設定が必要です。
  • (マイク音声デバイスへのループバックが不足して、)デスクトップ音声デバイスを3つ以上入力したいときは音声出力キャプチャソースを使う
  • マイク音声デバイス マイク
    ライン
    Analog Input
  • Windows上の"録音デバイス"に該当する。
  • マイク、ウェブカメラ、オーディオインターフェイスの録音デバイス名を選択する。
  • 複数デバイスにそれぞれループバックを設定できるAIF(RME TotalMix等を使用して)の場合、再生デバイスをこちらに登録することもできる。マイク、Discord、Minecraft、BGMをそれぞれ別のデバイスで再生することで、アプリケーション毎に音声を分けて録音できる。
  • Windows Update、AIFの抜き差し、サンプルレートの変更等でDeviceIDが変更されると、[デバイスが接続されていないまたは利用不可]になり再設定が必要。
  • マイク音声デバイスを5つ以上入力したいときは音声入力キャプチャソースを使う
  • メーター ピークメーターの種類 真のピーク (CPU使用率高い)
  • オーディオインターフェースを使っていないか、使用機器でトゥルーピークによるクリップ表示ができない場合はOBSで確認できるようにする。
  • 音割れはトゥルーピークがクリップしている状態で、サンプルピークでクリップしていないから音割れしていないとは限らない。
  • 詳細設定 モニタリングデバイス
  • オーディオの詳細プロパティモニターあるいはモニターと出力を選んだ際の、OBSを通した(ミックスした)後の音声の確認目的で使うデスクトップ音声デバイスを選択する。
  • つまり複数の音声デバイス(ループバック)がある環境でなければ音がループしてしまうため、配信中は使用できない。
  • Windowsの音量を自動で下げる機能を無効にする 有効
  • タスクバー右のスピーカーアイコンの右クリックメニュー -> サウンド -> Windowsが通信アクティビティを検出したとき: 何もしないと同義
  • 低遅延音声バッファリングモード (DeckLink/NDI 出力用) ステレオ
  • 大抵のプラットフォームはステレオ。特殊な用途でない限り弄らない。
  • OBSを起動すると他の音量が小さくなる 見出しにジャンプ

    1. タスクバー右のスピーカーアイコンの右クリックメニュー -> サウンド -> Windowsが通信アクティビティを検出したとき: 何もしない に設定する

    2. 設定 -> 音声の"Windowsの音量を自動で下げる機能を無効にする"を有効にする

    音が出ない 見出しにジャンプ

    初期設定が間違っている場合 見出しにジャンプ
    前回は大丈夫だったのに音が突然入らなくなった 見出しにジャンプ

    Windowsにおいて、以下の場合にDeviceIDが変更され、OBSの設定と食い違ってしまう場合があります。

    • Windows Updateやクリーンインストール
    • オーディオインターフェースのドライバの更新
    • (WASAPIやASIOを使用するなどして)サンプルレートが変更された

    サンプルレートが変更されただけの場合は、サンプルレートを元に戻すだけでOBSに音が入るかもしれませんが、その他の場合は設定->音声の再設定が必要になります。

    マイクの音が左からしか聞こえない 見出しにジャンプ

    PC直差しの場合は恐らく起こらないが、AIF(オーディオインターフェース)等でモノラルマイクの音声を扱う際、AIFのコンソールかOBS側でL側の音声をLR両方に出すように設定する必要がある。

    AIFによっては鎖のアイコンやらステレオ/モノラルトグルやらで設定できると思う。
    AIFだけではLのみにしか流せない場合、OBS側で以下のように設定する。

    オーディオの詳細プロパティでマイクの"モノラルにダウンミックス"または"モノラル"のチェックボックスを有効にする。

    音が返ってくる 見出しにジャンプ

    • Windows サウンドのプロパティで"このデバイスを聴く"にチェックが入っていないか
    • ブラウザ等で自分の配信をプレビューしている場合、ミュートされているか
    • オーディオインターフェースや仮想オーディオデバイスで間違ったルーティングになっていないか

    マイクのノイズを消したい 見出しにジャンプ

    OBSのフィルタを使う 見出しにジャンプ

    Discordで言うところの入力感度と同じ、オーディオインターフェースにあるようなノイズゲートを使用できる。
    音量が閾値を超えると、ゲートが開放され音が入る。
    音声フィルタを参照。

    RTX Voiceを導入する 見出しにジャンプ
    RTX Voice

    NVIDIA GeForce RTXシリーズで利用できる異次元のノイズ除去仮想オーディオデバイス。
    一般的なノイズ除去とはまるで違う。机バンバンしてもポテチ食ってもバレない。

    NVIDIA RTX Voice: Setup Guide

    RTX Voiceを起動し、マイクを選んで"Remove background noise from my microphone"を有効にし、設定 -> 音声でNVIDIA RTX Voiceを選択することで使用できる。

    • Input device"マイク (NVIDIA RTX Voice)"を設定 -> 音声のマイク音声に設定し、自分が話す声にノイズ除去を掛けるのが基本的な使い方。
    • Output device"スピーカー (NVIDIA RTX Voice)"は設定 -> 音声の"デスクトップ音声"で使用でき、こちらでボイスチャット相手の声にノイズ除去を掛ける、といった応用的な使い方ができる。ただし、一般的にデスクトップ音声は他のゲーム音等も含まれるため、アプリケーション毎に音声を分けて録音できる環境 向け。

    対象外のNVIDIA GTXシリーズで実行させるハックが紹介されている。
    ASCII.jp:RTX Voiceの超強力なノイズキャンセルはゲームプレイにどの程度影響するのか検証してみた

    オーディオインターフェースを導入する 見出しにジャンプ

    ノイズはそもそも最初から少ない方が良い。
    そもそもPC内蔵や直挿しのマイクの場合、一定以上の音質はどうあがいても望めない。
    因みに、音質を良くするとき、マイクやヘッドホンを更新する例があるが、
    実はAD/DA、つまりDACやAIF(オーディオインターフェース)に先に投資したほうが費用対効果が大きい、というのを頭の片隅にでも置いておいてほしい。

    予算が少ない・既存のプラグインパワーのマイクをそのまま使いたい・初心者でも使いやすい

    予算に余裕がある・今後買い換えたくない・アプリケーション毎に音声を分けて録音したい

    映像 見出しにジャンプ

    項目 説明
    基本(キャンバス)解像度 3840x2160(UHD 4K)
    2560x1440(WQHD)
    1920x1080(FHD)
    1280x720(HD)
  • OBSの映像ソースを配置するキャンバスの解像度。
  • 解像度の変更は負荷と品質に悪影響があるので、基本的にディスプレイまたはメインのソース(ゲーム等)の解像度に合わせる(ドットバイドット)。
  • 16:9のディスプレイが推奨される。配信、録画用途では16:10や21:9の解像度は不具合の元なのでオススメしない。
  • 出力(スケーリング)解像度
  • 配信、録画の出力解像度
  • 解像度の変更は負荷と品質に悪影響があるので、基本的にキャンバス解像度に合わせる(ドットバイドット)。
  • スペックが間に合っていても、配信プラットフォームの制限やネットワーク品質の都合で、解像度に見合ったビットレートが出せない場合は縮小することも考える。拡大はしてはならない。
  • 配信プラットフォームが対応している限り、ビットレートや負荷軽減の為のダウンサンプリングは推奨されない
  • 936p60のような、規格にない中途半端な解像度にすべきでない。
  • ソースそれぞれには別途異なるスケールフィルタがデフォルトで適用されているため、ソースの拡大縮小を行っている場合は意図しないスケーリングアルゴリズムにならないよう注意する。
  • YouTubeの低遅延モードでは1440p, 超低遅延は1080pに落とされる。
    Live streaming latency - YouTube Help
  • 縮小フィルタ バイリニア
    面積(エリア)
    バイキュービック
    ランチョス
  • スケーリングアルゴリズムの選択。
  • キャンバス解像度と出力解像度が同じなら、スケーリングは行われない
  • 縮小する場合はAreaを使う。ゲームの描画品質が馬鹿みたいに高くない限り、Areaでないと縮小時にジャギーが目立ってしまう。
  • 特に用事がなければBicubicまたはLanczosを選んでおけば良い。Bicubicの方が負荷は小さく、Lanczosの方が一般的に高品質。
  • FPS共通値 30
    60
  • 動画やライブ配信には30または60fpsを選択する。
  • 基本的にNTSC 29.97や59.94fpsは配信では使わない。
  • ビットレートが潤沢に割り当てられていない場合、下手に60fpsにするよりも30fpsの方が視覚的な品質は向上する。
  • ゲーム配信なら60fpsを選んだ方が良いが、ゲーム内フレームレートが出ていなかったり、エンコードが間に合わない、ネットワークドロップが発生する場合は潔く30fpsに落とす。
  • YouTubeで60fps配信する場合、ストリーミングキーは60fpsを選択する。30fpsであっても60fpsのストリームキーを選択したほうがYouTube側の再エンコード品質が高くなる。
  • 映画風のテイストにしたい場合、プラットフォームが対応していれば24fpsもあり。
  • FPS分数値 30fps: 30/1
    60fps: 60/1
  • 基本的にこちらを使う必要はない。FPS共通値で選べないようなフレームレートを選びたい場合はこちらで指定する。
  • 1/1fps、1/6fps、1/15fpsのように、1以下のフレームレートも可能。エンコード不要で数百倍速のタイムラプスをつくれる
  • 29.97fpsは30000/1001fpsに該当する。
  • 936p60の罠 見出しにジャンプ

    Twitchというゲーマー向け配信プラットフォームでは、上限8500kbpsという少ないビットレートの制約のなかで、FHD(1920x1080)ではなく1664x936という謎規格の解像度が一部で絶大な支持を受けているようだ。
    1664x936は一見中途半端だが、縦横共に8で割り切れる値という意味があるようで、これは恐らくH.264のブロックサイズのことを言いたいのだと思うが、これは8x8だけではないし、FHD(1920x1080)やHD(1280x720)も同じ条件だから考えなくてよい。
    HEVCやAV1ではより細かなマクロブロックを柔軟に組み合わせられるようになり、負荷が上がるもののビットレートあたり品質が向上しているので、今後考えなくてよくなるだろう。

    そもそもの目的に目を向けると、確かに8.5Mbpsは物足りないがTuring NVEnc H.264 VBRにおけるビットレートと品質の関係のグラフを見れば、近年の高品質なハードウェアエンコーダであれば十分な品質を出せることがわかる。

    1664x936で配信する場合、キャンバス解像度及びゲーム解像度を1664x936に合わせないと、かえってスケーリングで大きく品質が悪化する。もしかすると、スケーリングによってディテールを失った分も含めて、少ないビットレートでも破綻しづらいだけかもしれない。
    近年のスマートフォンは、OLEDのペンタイル配列によってドットバイドットのドの字もないから気にしなくてよいが、それでも不必要なスケーリングによって失われるディテールや色は、お手元にあるiPhoneのような高品質な端末ではかなり目立つはずだ。 また、多くのPC環境で1664x936を1920x1080に再度引き延ばして視聴することになるので、これも滲んで宜しくない。

    オススメは設定を煮詰めて1920x1080で配信すること。次点で1280x720

    画面解像度 - Wikipedia
    Twitch Streamers - Broadcasting Guidelines
    Guide to Broadcast Health and Using Twitch Inspector

    エンコード無しで数百倍速のタイムラプスをつくる 見出しにジャンプ

    一般的な動画編集ソフトのフィルタでは、8倍速まで、のように制限があったり、プレビューが重くなったりと限度がある。
    しかし、動画の構造を理解していれば、再エンコード無しで数十、数百、数千倍速の動画、もといタイムラプスを容易につくることができる。
    この方法なら24時間録画し続けても、然程のファイルサイズにならないというメリットもある。
    例えば、1fpsで録画した動画のタイムスタンプを無視して30fpsとして読み込むと、1x30=30倍速となる。
    30fpsや60fps等の等倍速の動画として使えるものでも、後からキーフレームのみ使用することで簡単に早送りを生成することが可能。

    では実際にやってみよう。

    1. 設定 -> 映像でFPS分数値を選択、分子と分母を指定。
    2. 設定 -> 出力 -> 録画でキーフレーム間隔を設定。
    録画時のFPS キーフレーム間隔
    (フレーム)
    30fpsにした場合の倍率
    全フレームを使用 キーフレームのみ使用
    30fps 15 (1x) 15x
    60fps 30 (1/2x) 15x
    1fps 4 30x 120x
    1/6fps 4 180x 720x
    1/15fps 4 450x 1800x
    1. 録画
    2. FFmpegを使う。

    /blog/ffmpeg

    以下はH.265で録画した場合の例。H.264の場合の拡張子は.264となる。

    rem 素材のある場所に移動
    cd "C:\Rec\obs"
    
    rem tsで録画している場合はmp4に変換
    ffmpeg -i rec.ts -c copy rec.mp4
    
    rem 音声を含んでる場合はタイムラプスにする前に除外する
    ffmpeg -an -i rec.mp4 -c copy rec.mp4
    
    rem 複数ファイルを一括で処理する場合
    ffmpeg -f concat -safe 0 -i input.txt -c copy rec.mp4
    
    rem キーフレームのみ使用する場合、-discard nokeyでキーフレーム以外を破棄する  
    ffmpeg -i rec.mp4 -c:v copy tmp.265
    
    rem キーフレームのみ使用する場合、-discard nokeyでキーフレーム以外を破棄する  
    ffmpeg -discard nokey -i rec.mp4 -c:v copy tmp.265
    
    rem 30fpsで読み込んでコピー  
    ffmpeg -r 30 -i tmp.265 -c copy timelapce.mp4
    

    input.txtの例

    file 190405_1300.ts
    file 190405_1400.ts
    file 190405_1500.ts
    

    複数ファイルを一度に処理する場合も再エンコードなしで可能。タイムラプス用に録画したものは、プレビューで確認しながらのカット編集が難しいため、この処理を行った後に行うと良い。

    ホットキー 見出しにジャンプ

    同じキーを割り当てるとトグルになる。例えば、ミュート/ミュート解除にCtrl - Mを割り当て、Discordのミュートキーと一致させると便利だ。
    ホットキーで指定できるのはキーバインドのみ。Elgato Stream Deckは仕組みが異なりFrontend APIを使うので、キーバインドを消費しなくてよい。

    詳細設定 見出しにジャンプ

    項目 説明
    一般 プロセスの優先度 通常
  • 基本的に通常、高は非推奨。
  • CCXを跨ぐようなメニーコアCPUではスレッド数を制限するのもよい
  • OBS(24.0.3+)を管理者権限で起動すると、グラフィック要求の厳しいゲームでレンダリングラグが原因で逃したフレームが低減する可能性がある。
    OBS Studio 24.0.3 GPU Priority Fix Testing | OBS Forums

    GPU Utilization: If your GPU utilization is above 95% Windows will start prioritizing the game over everything; this can, in some cases, make your stream lag. To solve this, OBS added an option in OBS 24.0.3 to prioritize OBS Studio over the Game. Just run OBS as Admin, and your stream will be silky smooth.


    Google 翻訳: GPU 使用率: GPU 使用率が 95% を超えると、Windows はゲームを優先し始めます。 これにより、場合によってはストリームが遅延する可能性があります。 これを解決するために、OBS は OBS 24.0.3 に、ゲームよりも OBS Studio を優先するオプションを追加しました。 管理者として OBS を実行するだけで、ストリームは非常にスムーズになります。
    NVIDIA NVENC OBS Guide | GeForce News | NVIDIA

  • 映像 カラーフォーマット
    Color Format
    NV12
  • ハードウェアエンコーダに使用されるYCbCr 4:2:0のピクセルフォーマット。YouTubeの推奨値でもあり、他のプラットフォームでも基本的にこちらを使用する。
  • H.264でNV12以外を選択すると、NVEncやAMFで最適化が利用できず、エンコードのラグが原因で逃したフレームが増える可能性がある。[jim-nvenc] nv12/p010 not active, falling back to ffmpeg
  • I422
  • 中間コーデックではI422(YCbCr 4:2:2)を使用すると良いが、h264_nvenchevc_nvencは対応していない。
  • NVEncは一応I444(YCbCr 4:4:4)で動作する。しかし、8bitで使うべきではない。NV12を使おう。
  • P010
  • 10-bitエンコーディングにはNVIDIA NVENC HEVCやFFmpegカスタム出力のhevc_nvencなどHEVCあるいはSVT-AV1AOM AV1などのAV1コーデックが必要。H.264は対応していない。
  • OBSは Rec. 2100 で 8ビット 出力をサポートしていません OBS does not support 8-bit output of Rec. 2100.: HDR配信ではP010を選択する
  • HEVCでNV12, P010以外を選択すると、NVEncやAMFで最適化が利用できず、エンコードのラグが原因で逃したフレームが増える可能性がある。
  • RGB
  • RGBはrawvideoやUtVideoで使用できる。
  • 色空間
    Color Space
    sRGB
  • 配信や録画で使う規格ではないが、カラーフォーマットRGB, FFmpegカスタム出力のrawvideoやUtVideoと組み合わせて、sRGB, フルレンジ(PCスケール)のデスクトップを無劣化で記録し、後に静止画で切り出す用途には使えるかも。
  • BT.709標準が使用されているが、sRGB IEC61966-2.1のトーン応答曲線(sYCC)が適用される
    Add RFC: sRGB Color Space setting by jpark37 · Pull Request #7 · obsproject/rfcs
  • Rec. 709
  • SDRではRec. 709を選ぶ
  • YouTube - HLS, NVIDIA NVENC HEVCエンコーダ, カラーフォーマットP010と組み合わせて10bit配信も可能。
  • Rec. 601
  • イマドキは使わない
  • Rec. 2100 (PQ)
  • WindowsデスクトップでHDRゲームをキャプチャする場合、ガンマカーブはPQを選択する
  • 映像キャプチャデバイス及びカメラの色空間(ガンマカーブ)に合わせる
  • 警告: Rec. 2100はより精度の高いフォーマットを使用する必要があります: NVIDIA NVENC HEVCなどHEVC, AV1エンコーダを使う
    Stream HDR video on YouTube - YouTube Help
  • Rec. 2100 (HLG)
    色範囲
    Color Range
    一部
  • 一部: リミテッドレンジ, TVスケール
  • 全部: フルレンジ, PCスケール
  • GPU, ディスプレイをフルレンジに設定していても、映像ではリミテッドレンジを使う。
  • SDR ホワイトレベル 300 nits
  • SDRコンテンツをHDRにマッピングするときの最大輝度。
  • 本来sRGBの最大輝度は80cd/m2のところ、一般的なディスプレイは250-350, テレビは500cd/m2程度あり輝度が本来より高く、似たような見栄えが得られるよう値を調整する。
    Windows HDR (とキャプチャ問題について) の解説
  • HDR 公称ピークレベル
    HDR Nominal Peak Level
    1000 nits
  • ピーク輝度が1000cd/m2を超えるPQマスターからHLGへトーンマッピングする際の、maxRGB EETF(Lmax)。OBSではLw = Maximum Luminanceになってる?[要出典]
  • MaxCLLが1000cd/m2を下回る場合、トーンマッピングされない
    MovieLabs Best Practices for Mapping BT.2100 PQ to HLG Using maxRGB
  • 400-10000cd/m2
  • 音声 音声モニタリングデバイス 既定
  • オーディオの詳細プロパティで音声モニタリングを設定した場合の出力先。基本的に使用しない。
  • 録画 ファイル名書式設定 %CCYY-%MM-%DD_%hh-%mm-%ss
  • 既定値ではISO 8601に寄せてあり、実際には2020-02-20_20-02-22.tsにようになる。
  • ファイル名にハイフンは兎も角、スペースが入るのは好ましくない。
  • ネットワーク IP選択
    Bind to IP
    既定
  • 複数のNICがある場合などに、任意のインターフェースを選択できる。
  • ゴールデンタイムに回線が遅くなり、IPv6で配信する必要がある環境なら、YouTubeではHLSを使用する。
  • RTMP(S)で配信プラットフォームがIPv6に対応しているなら、既定からIPv6アドレスが付与されたネットワークインターフェースに変更する。
    2001:db8:b0ba:10ee...のようなグローバルIPv6アドレスや一時IPv6アドレスを選ぶ。リンクローカルアドレスfe80...ではない。
  • どちらがグローバルIPv6アドレスか一時IPv6アドレスかはコマンドプロンプトで確認できる。
    ipconfig /all
    
  • 一時IPv6アドレスを使用するべきだが、RTMPSでは切断/接続を繰り返したり、配信停止時にOBSがハングアップする場合がある。このとき、グローバルIPv6アドレスを使用するべきではない。代わりにRTMPやHLSを使うとよい。
  • IPv6アドレスは一般に(日本のフレッツ東西において、特に固定IP契約を結ばない場合)半固定なので、PCやHGW/ルータを再起動する程度では設定変更なく動作する。
    ただし、長時間のネットワーク切断やPCのNICの初期化、または通信事業者側の工事などで予告なく変更される場合がある。
    配信開始時に無効なIPアドレスにバインドしようとした可能性がありますが出るので、この設定を見直せばよい。
  • 輻輳を管理するためにビットレートを動的に変更する(ベータ版) 無効
  • RTMP配信でネットワークドロップが発生した場合に配信のビットレートを数分間制限し、数分後ネットワークに問題がなければビットレートを元に戻す機能。
  • Numpad 0–6キーで制限中のビットレート上限を変更できる。0(制限なし)、1000–6000Kbps。
  • ネットワークの最適化を有効にする
  • 新しいネットワークコードを使用 する
  • 有効
  • ノンブロッキングソケットではなく、イベントベースのAPIをストリーミングに使用する。
  • フレームドロップや切断の改善に役立つ場合がある。
  • TCPページングを有効にする
  • 低遅延モード
  • 無効
  • ネットワークバッファを可能な限り高速に維持し、その占有率を可能な限り低く保つことで、同じPCで同時に実行されている他のネットワークプログラム(ゲームなど)への影響を減らすことができる。
  • 安定した回線でない場合、フレームドロップの原因になる場合がある。
  • YouTubeの低遅延モードとは無関係
  • OBSが使用するスレッド数を制限する 見出しにジャンプ

    Ryzen 9やThreadripper等のメニーコア環境で、論理コアを半分ずつOBSとゲームに割り当てたり、プロセスがCCXを跨がないようにする設定。
    既に起動しているプロセスにしか効果がないので注意。

    • タスクマネージャーtaskmgr.exeの詳細タブでobs64.exeや任意のゲームプロセスで右クリック -> 関係の設定から変更する方法
    OBSが使用するスレッド数を制限する タスクマネージャー 関係の設定
    • Windows PowerShellpowershell.exeでプロセスに対しProcessorAffinityを設定する方法
      Linuxでいうところのtasksetに相当する
    # obsのプロセスを見つける
    Get-Process | Where-Object {$_.ProcessName -match "obs"}
    
    Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
    -------  ------    -----      -----     ------     --  -- -----------
       4354      84  1150624     474372   6,940.42   4240   1 obs64
        350      21     7856      24216       0.13   1552   1 obs-browser-page
        524      27    50596      45448       0.36  19420   1 obs-browser-page
        301      28    28496      50948      14.67  21232   1 obs-browser-page
    
    # obs64プロセスの詳細を見る
    Get-Process obs64
    
    Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
    -------  ------    -----      -----     ------     --  -- -----------
       4354      87  1212196     473740   6,994.94   4240   1 obs64
    
    # obs64プロセスのProcessorAffinityを設定する
    # 2進数000011111111はCPUの論理コアを表す この例では8/12スレッドをOBSに割り当てている
    (Get-Process obs64).ProcessorAffinity = [Convert]::ToInt32(000011111111,2)
    

    cf. Process.ProcessorAffinity プロパティ (System.Diagnostics) | Microsoft Docs

    因みに、エクスプローラexplorer.exeのProcessorAffinityを変更すると、その後に起動したプロセスはそれに従って同じProcessorAffinityになる。
    タスクスケジューラtaskschd.mscでシステム起動時に指定するなど、色々応用できると思う。

    応用 見出しにジャンプ

    YouTubeの劣悪エンコード事情への対処法 見出しにジャンプ

    「YouTubeにうpしたらなんか汚いな…」

    YouTubeはアップロードされた動画を全て再エンコードすることはよく知られています。
    良くある間違いは「できる限り高ビットレートでエンコードしたものをアップロードすると良い」というものです。

    • YouTubeのエンコーダは、解像度に対してビットレートの割り当てが小さく、更にエンコーダの品質自体も決して良くないため、自分のマシンで破綻しない程度に圧縮してからアップロードしたほうがマシなより良い品質が得られる。

    • YouTubeのビットレート割り当てが小さいなら、擬似的に解像度を盛れば比較的高いビットレートでエンコードしてもらえる。

    • YouTubeが提供するエンコードのうち、映像はH.264とVP9、音声はAACとOpusがあるが、弱小チャンネルや再生数の小さい動画には品質の高いVP9やOpusが提供されない。

    上記を満たすために、下記のようなアプローチを行う。

    YouTubeの再エンコ品質改善
    #動画映像の再エンコ品質 #配信映像の再エンコ品質 #動画音声の再エンコ品質
  • 疑似4K(8K)動画
  • 疑似60fps
  • 黒帯
  • 疑似4K配信
  • flac
  • 48kHz/24bit
  • True peak: -1.0dBFS以下
  • Integrated loudness: -13.5~-13.0LUFS
  • 動画映像の再エンコ品質 見出しにジャンプ

    一応「アップコンバート」や「フレーム補間」をするわけだが、決して滑らかにする目的ではないことに注意。
    そのため、ただ編集ソフトで8Kや60fpsを指定しても良い結果は得られない。

    • 疑似4K8Kをする場合、スケールアルゴリズムはニアレストネイバー法を選ぶ。
      所謂ドット絵を滲ませずに拡大するのと同じで、解像度のかさ増しのために元の映像を滲ませてしまっては元も子もない。

    • 補間しない60fps補間。これも同様に、30fpsを60fps、24fpsを48fpsに水増しする際、ヌルヌルな映像になるようフレームを補間するのが目的ではなく、そのfpsに合わせたビットレート設定でYouTubeにエンコードしてもらうことが目的。

    • DCIやシネスコの縦横比にクロップする。更に黒帯を追加し、その分ビットレートを稼ぐ。

    上記が出来るソフトとなるとFFmpegほぼ一択となる。

    /blog/ffmpeg

    1920x1080を3840x2160にニアレストネイバー法でスケーリングするビデオフィルタの例。

    -vf scale=3840:2160:sws_flags=neighbor
    

    1920x1080をDCI風のアスペクト比になるような黒帯を追加した7680x4320に拡大し、滑らかなフレーム補間が一切ないフレームの水増しを行う例。

    -vf crop=1920:1012,pad=width=1920:height=1080:x=0:y=34,scale=7680:4320:sws_flags=neighbor,fps=60
    

    ↑のソースが3840x2160版。

    -vf crop=3840:2026,pad=width=3840:height=2160:x=0:y=67,scale=7680:4320:sws_flags=neighbor,fps=60
    

    以下は私が普段使ってる引数なので、-vf ~~辺りを置き換えると綺麗かつ高速にエンコードできると思う。
    -bf 2はTuring以降のみ使用可能なので、Pascal以前は-bf 0とすること。

    ffmpeg -i input.mp4 -c:a copy -vf ~~ -c:v hevc_nvenc -preset:v slow -profile:v main -rc:v constqp -rc-lookahead 32 -init_qpI 21 -init_qpP 24 -init_qpB 25 -g 30 -bf 2 -refs 6 -pix_fmt yuv420p -movflags +faststart out.mp4
    

    配信映像の再エンコ品質 見出しにジャンプ

    疑似4K配信 見出しにジャンプ

    同様にFHDソースをニアレストネイバー補間でUHD 4Kに拡大し、ライブ配信することでより高品質な配信/アーカイブを残させる。

    項目 説明
    ファイル -> 設定 -> 出力 -> 配信
    エンコーダ NVIDIA NVENC H.264 (new)
  • 疑似4Kなので、YouTubeの4Kの推奨値ほどビットレートを大きくする必要はないが、少し盛ったほうが良い。
  • あくまで参考値
  • レート制御 VBR
    ビットレート 15000
    最大ビットレート 20000
    ファイル -> 設定 -> 映像
    基本(キャンバス)解像度 3840x2160
  • ここでスケーリングする(キャンバス解像度を1920x1080、出力解像度を3840x2160)と、ニアレストネイバー補間が選べないため、ここは同じ解像度にする。
  • 出力(スケーリング)解像度 3840x2160
    FPS共通値 30
  • 4K60fpsのリアルタイムエンコードはGPU、上り回線と相談しましょう。
  • ソースの右クリックメニュー -> フィルタ -> スケーリング/アスペクト比
    スケールフィルタ ポイント
  • メインのソース(FHDのゲーム画面等)をニアレストネイバー補間で一切滲ませることなく拡大する。
  • 3840x2160と指定しても良い。
  • 解像度 基本(キャンバス)解像度

    動画音声の再エンコ品質 見出しにジャンプ

    ほぼこちらの方の内容です。
    YouTubeにアップロードする動画の音声は、推奨の44.1kHz/16bitなaacではなく、48kHz/24bitのflacが良さそうです。

    https://vocal-edit.com/blog/2019/01/11/youtubeで最高音質を目指す/

    • flac 48kHz/24bit
      FFmpegカスタム出力flacを選択し、mp4に無理矢理詰める場合は適切に設定します。
      因みに、OBSは宗教上の理由から24bitに対応しないようです(FFmpegカスタム出力で対応)。

    • True peak: -1.0dBFS以下

    • Integrated loudness: -13.5~-13.0LUFS

    下記はFFmpegでリアルタイムなマイク音声Analog (1+2) (RME Babyface Pro)を取得し、True peakとIntegrated loudnessを取得する例。

    C:\Rec\obs>ffmpeg -f lavfi -i "amovie='audio\=Analog (1+2) (RME Babyface Pro)':f=dshow,ebur128=peak=true" -f null -
    (Qキーで終了)
    
    [Parsed_ebur128_1 @ 000002670bacbc40] Summary:
    
      Integrated loudness:
        I:         -24.0 LUFS
        Threshold: -35.2 LUFS
    
      Loudness range:
        LRA:         9.9 LU
        Threshold: -45.5 LUFS
        LRA low:   -31.3 LUFS
        LRA high:  -21.4 LUFS
    
      True peak:
        Peak:       -3.1 dBFS
    

    マイク音声Analog (1+2) (RME Babyface Pro)にあたるデバイスを取得するコマンド。

    C:\Rec\obs>ffmpeg -hide_banner -list_devices true -f dshow -i dummy
    
    [dshow @ 000001510adffa80] DirectShow video devices (some may be both video and audio devices)
    [dshow @ 000001510adffa80] Could not enumerate video devices (or none found).
    [dshow @ 000001510adffa80] DirectShow audio devices
    [dshow @ 000001510adffa80]  "ADAT (7+8) (RME Babyface Pro)"
    [dshow @ 000001510adffa80]     Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{635F1A57-FD89-4820-9A1D-F105515D2989}"
    [dshow @ 000001510adffa80]  "SPDIF/ADAT (1+2) (RME Babyface Pro)"
    [dshow @ 000001510adffa80]     Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{3DCB7A75-7200-4418-9910-432DC9425902}"
    [dshow @ 000001510adffa80]  "Analog (1+2) (RME Babyface Pro)"
    [dshow @ 000001510adffa80]     Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{E8005C12-7765-47D1-90F8-E73C89577884}"
    ...
    dummy: Immediate exit requested
    

    カレントディレクトリのinput.wavを読む例。

    C:\Rec\obs>ffprobe -i "amovie=input.wav,ebur128=peak=true"
    

    FFmpegでラウドネスノーマライゼーションをかける例。

    loudnorm
    意味 引数 推奨値
    Integrated loudness I -13.5~-13.0LUFS -13.5
    True peak TP -1.0dBFS以下、既定値は-2.0 -2.0
    Loudness range LRA 既定値は7、GoogleやAmazonが11を指定してるので従うことにした 11
    C:\Rec\obs>ffmpeg -i rec.mp4 -filter_complex "[0:1]loudnorm=I=-13.5:TP=-2:LRA=11[mic]" -strict -2 -ar 48000 -c:a flac -c:v copy -map 0:0 -map "[mic]" out.mp4
    
    C:\Rec\obs>ffmpeg -i out.mp4 -filter_complex "[0:1]ebur128=peak=true" -f null -
    
    [Parsed_ebur128_0 @ 0000022e385d18c0] Summary:
    
      Integrated loudness:
        I:         -16.9 LUFS
        Threshold: -27.7 LUFS
    
      Loudness range:
        LRA:         8.4 LU
        Threshold: -37.9 LUFS
        LRA low:   -22.7 LUFS
        LRA high:  -14.3 LUFS
    
      True peak:
        Peak:       -1.7 dBFS
    

    OBSのビルド 見出しにジャンプ

    配布されているビルド済みのOBSは、同梱されているFFmpegのバージョンが古かったりするので自分でビルドしたい場合がある。
    例えば、下記のように 配布されているOBSでは動作しない引数 27.2で対応 が、

    (最新のFFmpegを組み込んで)自ビルドしたOBSでは動作するようになる。

    いち早く新機能にアクセスしたい場合や、FFmpegカスタム出力でfdk-aacを使用して高音質に録画したい場合、拡張機能を盛り込んでビルドする時にも有効だ。

    下記はOBS公式Wikiの手順を参考にしつつ、コピペできるようCLIでWindows用バイナリをビルドする手順になっている。
    WSLやGit、MSBuildの環境構築手順は他に情報が山ほどあるので割愛する。

    Build Instructions For Windows · obsproject/obs-studio Wiki

    1. 必要な依存関係をダウンロード・インストールする

    2. リポジトリのダウンロード
      GitHubのWebページのDownload Zipではsubmodulesが足りないので--recursiveが必須。

    git clone https://github.com/obsproject/obs-studio.git --recursive --origin upstream
    

    2回目以降、OBSのリポジトリを更新するとき

    git pull upstream --recurse-submodules
    
    1. CMakeでCEFをビルド
      cmake-gui.exeは操作が分かりづらいので、CLIなcmake.exeを使うとよい。
      • -Sには1.でダウンロード・展開したCEFのルートディレクトリを指定
      • -Bにはcmakeの出力先を指定
      • ディレクトリの場所がダメって怒られたらbuild\CMakeCache.txtを消す。エラーメッセージを読もう(自戒を込めて)。
    cmake.exe -S "C:\repos\cef_binary_5060_windows_x64" -B "C:\repos\cef_binary_5060_windows_x64\build"
    cmake.exe --build "C:\repos\cef_binary_5060_windows_x64\build"
    
    1. MSBuildでbuild\cef.slnをビルド
      Windows 10 SDKのバージョンWindowsTargetPlatformVersionはWindows10のバージョンによって異なるので、必要に応じて対応したバージョンに書き換えるか、Visual Studio Installerの拡張機能の管理で追加する。
      必要なのは${CEF_ROOT_DIR}\build\libcef_dll_wrapper\Release\libcef_dll_wrapper.libで、cef.slnをビルドする必要はない。これがないと5.でCould not find the CEF wrapper libraryと怒られ、ブラウザソースやブラウザドック機能が使えないOBSが出来上がる。
    MSBuild.exe -maxCpuCount -target:rebuild -property:"PlatformToolset=v142;WindowsTargetPlatformVersion=10.0.20348.0;Configuration=Release;Platform=x64" "C:\repos\cef_binary_5060_windows_x64\build\libcef_dll_wrapper\libcef_dll_wrapper.vcxproj"
    

    ビルドに成功しました。と出ていれば警告を吐いていても問題ない。

    1. CMakeでOBSをビルド
      • -S 2.でcloneしたリポジトリのルートディレクトリを指定
      • -B cmakeの出力先を指定
      • -DDepsPath 1.でダウンロード・展開したwindows-deps-2022-08-02-x64ディレクトリを指定
      • -DQTDIR 1.でQtをインストールした先windows-deps-qt6-2022-08-02-x64を指定
      • ビルドした最新のFFmpegをOBSで使用する場合、-DFFmpegPathにincludeディレクトリを指定
        • ネイティブLinux環境でWindows向けFFmpegをクロスビルドできるrdp/ffmpeg-windows-build-helpersならffmpeg-windows-build-helpers\sandbox\win64
        ./cross_compile_ffmpeg.sh --disable-nonfree=n --compiler-flavors=win64
        
        • 互換性がない WindowsでバッチファイルポチっとなでFFmpegをビルドできるm-ab-s/media-autobuild_suite ならmedia-autobuild_suite\local64\includeを指定
          設定によってOBSのビルドが通らない場合がある。下記で動作確認した。
        [compiler list] 
        arch=3
        license2=1
        standalone=1
        fdkaac=1
        faac=2
        ffmpegB2=3
        ffmpegUpdate=3
        ffmpegChoice=1
        CC=2
        deleteSource=2
        strip=1
        
      • -DBUILD_BROWSERブラウザソースを有効にし、-DCEF_ROOT_DIRに3.4.でビルドが済んでいるCEF Binaryのパスを指定
      • WindowsのCMakeでビルドする際、OBS_VERSIONを指定しないとビルドできない既知の不具合がある
        Tags · obsproject/obs-studioで選んだバージョンを-DOBS_VERSION_OVERRIDE="27.0.0-rc2"のように指定するか、git describeで取得した最後のタグ27.2.0-rc1-4-ge6a55e7を指定する。
      • OBS requires Windows 10 SDK version 10.0.20348.0 and above to compile. Visual Studio InstallerでWindows 10 SDKを追加し、-DCMAKE_SYSTEM_VERSION="10.0.20348.0"
      • 仮想カメラを使うには、-DVIRTUALCAM_GUIDに自分で決めたGUIDを指定する。
      
      
      
    cmake.exe -S "C:\repos\obs-studio" -B "C:\repos\obs-studio\build" -DDepsPath="C:\repos\windows-deps-2022-08-02-x64" -DQTDIR="C:\repos\windows-deps-qt6-2022-08-02-x64" -DFFmpegPath="C:\repos\ffmpeg-windows-build-helpers\sandbox\win64" -DCEF_ROOT_DIR="C:\repos\cef_binary_5060_windows_x64" -DBUILD_BROWSER=yes -DOBS_VERSION_OVERRIDE="28.0.0-rc1" -DVIRTUALCAM_GUID="9da46793-da42-44b0-8ff1-515dfd61808b" -DCMAKE_SYSTEM_VERSION="10.0.20348.0" -DCOPIED_DEPENDENCIES=false
    
    -- copying C:/Users/sbn/Downloads/5.10.1/msvc2017_64/lib/cmake/Qt5Core/../../../bin/libGLESv2d.dll to C:/bin/obs-studio/additional_install_files/exec64d
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/bin/obs-studio/build
    
    cmake.exe --build "C:\repos\obs-studio\build"
    
      obs-ffmpeg-mux.vcxproj -> C:\repos\obs-studio\build\plugins\obs-ffmpeg\ffmpeg-mux\Debug\obs-ffmpeg-mux.exe
      Building Custom Rule C:/Rec/obs-studio/plugins/obs-x264/CMakeLists.txt
      obs-x264-test.c
      obs-x264-test.vcxproj -> C:\repos\obs-studio\build\plugins\obs-x264\Debug\obs-x264-test.exe
      Building Custom Rule C:/Rec/obs-studio/CMakeLists.txt
    
    1. MSBuildでcmakeで出力されたbuild\obs-studio.slnをビルド
    MSBuild.exe -maxCpuCount -target:rebuild -property:"PlatformToolset=v142;WindowsTargetPlatformVersion=10.0.20348.0;Configuration=Release;Platform=x64" "C:\repos\obs-studio\build\obs-studio.sln"
    

    ビルドに成功しました。と出ていれば例外を吐いていても問題ない。

    1. obs-studio\build\rundirRelease\bin\64bit\obs64.exeを起動
      avcodec-58.dllが見つからないため、コードの実行を続行できません。と怒られる場合は、media-autobuild_suite\local64\bin-video\*.dllをこの場所にコピーする