🖋️2019-04-07 🔄2020-09-14
by shibanyan_1

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

OBS

TL;DR #

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

OBSは配信の品質向上、処理の軽量化に最適なアプリケーションです。たとえ録画用途であってもBandicamやShadowPlay等の他のアプリケーションを選ぶ余地はありません。
日本語の情報が少なく、OBS関連では辿り着けない情報も含めて解説するので、何かに躓いている方や更に配信・録画品質を上げたい方は必見です。
初心者向けではない内容も所々に見え隠れしているが、安定した高品質な配信・録画の為に気を付けなければならないポイントを網羅する為なのでご了承願いたい。目次・Ctrl-F を活用してね!

早見表
目的 見てほしい項
OBSの初期設定
  • すべて
  • 配信・録画のトラブルシューティング
  • トラブルシューティング
  • 配信の負荷軽減・安定化
  • 配信が止まる・途切れる・カクカクする
  • 統計
  • 設定 -> 出力 -> 配信
  • 配信の画質向上
  • 設定 -> 出力 -> 配信
  • ソース -> ソースの右クリックメニュー -> 変換
  • 録画の画質向上
  • 設定 -> 出力 -> 録画
  • 配信・録画向けPC構成
  • 応用・豆知識
  • YouTubeの劣悪エンコード事情への対処法
  • アプリケーション毎に音声を分けて録音する
  • Discordのオーバーレイを表示する
  • YouTubeのコメントを表示する
  • 正しい同時配信の方法
  • 配信・動画プラットフォーム向けの設定
  • YouTube側の設定
  • 更新履歴 #

    日時 内容
    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 Overlay、YouTubeLiveコメント用CSSの4K対応
  • ソースの変換による滲まないスケーリングに関する記述を修正
  • NVEncセッション数を専有する条件について追記
  • MPEG-2、HEVC拡張機能のリンク
  • 対YouTube最強エンコード疑似DCI風8K60fps
  • 2019-10-20
  • (記事内容とは無関係)画像やフォーマットの調整と統一
  • 2019-11-18
  • トラブルシューティング項目の追加
    • ChromeやVSCodeのハードウェアアクセラレーションを切らずにOBSに映す方法をより詳細に
    • マイクの音が左からしか聞こえない場合の対処法
    • 画面が映らない諸々の理由について
  • 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へのアップロードに適した音声形式・処理について言及
  • アプリケーション毎に音声を分ける方法についての解説を整理
  • 不要な「こと」「という」「もの」を削除した(今後も気づいたら削除していく)cf.
  • 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のビルド方法(ブラウザソースを有効にする)
  • ダウンロードとインストール #

    OBSは開発が盛んなOSSなので、更新はチェックしておくと良い。
    StreamlabsやN Airの場合、バージョンが古かったり録画機能が削除されているので、本家がオススメ。
    下記の公式サイトにインストーラとポータブル版(Zip)のURLがある。
    https://obsproject.com/ja/download

    ポータブル版をProgram Files以外のディレクトリにインストールする場合、bin・data・obs-pluginsが含まれるOBS Studioディレクトリのセキュリティ権限にALL APPLICATION PACKAGESというオブジェクト名を追加して、アクセス許可する必要がある。この権限がないと、特定の機能(UWPアプリのゲームキャプチャ)が正しく機能しない場合がある。
    OBS 26.0で追加されたVirtual Camera機能を使用するにはインストーラ版を選択する。

    因みに"GitHubで見る"をクリックすれば、正式リリース前のRelease Candidate版(リリース候補版)等をいち早く試すこともできる。
    勿論ここからソースコードを入手し、自前ビルドすることも可能。
    https://github.com/obsproject/obs-studio/releases

    公式ドキュメント(頻繁に更新されています)
    https://obsproject.com/forum/resources/open-broadcaster-software-studio-multiplatform-help-guide-pdf.365/

    初回起動と画面構成 #

    OBSを管理者として実行すると、GPU高負荷時に統計 -> レンダリングラグが原因で逃したフレームが低減し、配信のカクつきがを最小限にできる可能性があります(OBS 24.0.3~)。

    https://obsproject.com/forum/threads/obs-studio-24-0-3-gpu-priority-fix-testing.111669/

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

    OBS

    メニューバー #

    ファイル
    録画を表示
  • 設定 -> 出力 -> 録画 -> 録画ファイルパスで設定されたディレクトリが開かれる。
  • 録画の再多重化
  • 再エンコードせずmp4コンテナへ変換する機能。
  • 設定
  • 後述の#プロファイルを参照
  • 設定フォルダーを表示
  • シーンやプロファイル等のデータ、ログ等が保存される場所。
  • ここだけバックアップしてあれば設定内容を復元できる。
  • プロファイルフォルダーを表示
  • 現在選択中のプロファイルに該当するディレクトリを表示する。
  • 常に手前に表示
  • ウィンドウがアクティブでなくても最前面に表示する。
  • 終了
  • 終了
  • 編集
  • ここの項目はソースやミキサーの右クリックメニューにあるので、ここからアクセスする必要はない。
  • 解説もそれぞれの項目で行うので後程。
  • 全画面インターフェイス
  • フルスクリーン表示。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
  • ヘルプ
    ヘルプポータル 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
    項目 説明
    ウィンドウキャプチャ
  • 特定のウィンドウ、ボーダーレスウィンドウを安定してキャプチャする。
  • フルスクリーンモードのゲームをキャプチャするには、ゲームキャプチャを使用する。
  • 仮想デスクトップ上のウィンドウもキャプチャ可能。
  • ゲームキャプチャ
  • DirectX、OpenGLゲームのウィンドウをキャプチャする。
  • フルスクリーンモードのゲームに対応。
  • シーン
  • シーンを切り替えずにシーンをソースとして表示する。
  • テキスト(GDI+)
  • テキストを直接またはテキストファイルを指定して、映像に合成する。
  • ブラウザ
  • OBS組み込みブラウザでURL先の内容を表示する。
  • リソースを多く消費するため、メディアソース等で代替可能なものにわざわざ使わない。
  • メディアソース
  • 映像、音声ファイルを指定し、再生する。
  • 対応する拡張子のファイルがD&Dされたとき、自動で追加される。
  • 複数の映像、音声ファイルを連続して再生することも可能。
  • 映像キャプチャデバイス
  • キャプチャボードやWebカメラの映像を取得する。
  • 画像
  • 画像を指定し、表示する。
  • 対応する拡張子のファイルがD&Dされたとき、自動で追加される。
  • 画像スライドショー
  • 複数の画像または画像の入ったディレクトリを指定し、スライドショーとして表示する。
  • 画面キャプチャ
  • 個別のウィンドウではなく、デスクトップ全体のキャプチャを行う。
  • 複数のアプリケーションに跨がるなど画面全体を録画する必要がある時のみ使用する。
  • 仮想デスクトップは非対応(ウィンドウキャプチャ等を使用)。
  • 色ソース
  • パレットまたはHTMLカラーコードで単色の背景ソースを追加する。
  • 音声入力キャプチャ
  • Windows上での"録音デバイス"、ミキサー(設定 -> 音声)の"マイク音声デバイス"に該当する音声デバイスをキャプチャする。
  • 音声出力キャプチャ
  • Windows上での"再生デバイス"、ミキサー(設定 -> 音声)の"デスクトップ音声デバイス"に該当する音声デバイスをキャプチャする。
  • RME TotalMixやVoiceMeeter Bananaのようなソフトを使ってループバックする必要がない。
  • グループ化
  • ソースを束ねて一括でレイアウトを移動したり、フィルタを適用したり、纏めて表示/非表示を切り替える。
  • ウィンドウキャプチャ #

    項目 説明
    ウィンドウ 任意
  • キャプチャしたいアプリケーションを起動した状態で、該当するものを選択。
  • フルスクリーンゲーム等の画面をフックする必要がある場合はゲームキャプチャを使用する。
  • キャプチャ方法 自動
  • 特に必要がなければ自動を選択する。
  • 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等)の環境で正常にキャプチャされず真っ暗の場合に有効にする。
  • 最小化したウィンドウが映らない #
    • ウィンドウは最小化すると動作せず、静止画がキャプチャされる。
      キャプチャしたいウィンドウは最小化せず、開いたままにしておきましょう。
    フルスクリーンウィンドウが映らない #
    • ゲームキャプチャを使う
    • そもそもフルスクリーンウィンドウはアクティブでないと動作しない
    • UWPアプリの場合、ダウンロードとインストールでインストーラ版を選ぶか、手動インストール向けの設定を行う
    • Vulkanベースのゲームの場合は、OBS 25.0~を使用する
    フルスクリーンでプレイすると他のウィンドウが映らない #
    Chrome系ブラウザ・VSCodeなどが映らない #

    Chrome系のソフトウェアはレンダリングにANGLEを使用しているため、従来のキャプチャ方法ではウィンドウの内容を取得できず、真っ暗でマウスポインタのみ映る、という残念な状態になっていたが、
    ウィンドウキャプチャがデフォルトで対応したので、Windows 10 1903以降に更新して、OBS 25.0以降に更新すればよい。

    映らないからといってブラウザのハードウェアアクセラレーションを無効化するのはやめよう。

    Chrome #
    1. Choose ANGLE graphics backend chrome://flags#use-angleOpenGLに設定する。
    2. ウィンドウキャプチャでChromeのウィンドウを選択する。
    VSCode #

    起動時に使用するタスクバーやデスクトップのショートカットのリンク先に、--use-angle=glを加える。
    これはChrome系のソフトウェアなら基本的に動作する。

    "C:\Users\ユーザ名\AppData\Local\Programs\Microsoft VS Code\Code.exe" --use-angle=gl
    

    タスクバーで右クリック操作を繰り返すことでショートカットのプロパティにアクセスできるよ

    ゲームキャプチャ #

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

    フルスクリーン下に隠れたウィンドウや最小化されたウィンドウの表示内容はOBSに反映されない。
    フルスクリーンを使用していない別のモニタ上またはWindows10の仮想デスクトップ上にウィンドウを置く。

    Ctrl + Win + D 新規仮想デスクトップを追加
    Ctrl + Win + <- -> 仮想デスクトップ間を移動
    Ctrl + Win + F4 仮想デスクトップを削除
    同じ名前のウィンドウを個別に認識させる #

    同じアプリケーション・ゲームをウィンドウまたはゲームキャプチャする際、ウィンドウタイトルや実行可能ファイルが同じため、任意のウィンドウをキャプチャすることが難しい、または録画中に任意のウィンドウから勝手に切り替わってしまうという問題がある。

    方法1 ホットキーで選択 #

    OBSの"ゲームキャプチャ"ソースの機能に"ホットキーで全面のウィンドウをキャプチャ"という機能がある。
    この方法を取るのが一般的である。

    1. ソースウィンドウに"ゲームキャプチャ"を追加
    2. モード"ホットキーで全面のウィンドウをキャプチャ"を選択
    3. 設定->ホットキー->ゲームキャプチャ(ソース名)->全面のウィンドウをキャプチャ/キャプチャを無効化にキーを設定

    ただし、この方法ではゲームキャプチャ1つ1つに別のキーを割り当てる必要があり、配信・録画開始時にそれらを行うのが非常に面倒である。

    方法2 MainWindowTitleを変更する #

    ホットキーで選択するのではなく、プログラムでウィンドウタイトルを連番等に変えてしまうという方法。
    Minecraftでシュルカー無限をする際に、複数アカウントからの視点を撮りたいというニッチな需要に応えるため、PowerShellでちょちょっと書いた。
    どちらもjavawプロセスのうち、指定した実行ファイルパスの場合のみウィンドウタイトルを変更する仕様。

    ゲームキャプチャ
    項目
    モード 特定のウィンドウをキャプチャ
    ウィンドウ (例) [javaw.exe]: Minecraft 1.13.2_1
    ウィンドウの一致優先順位 ウィンドウのタイトルに一致する必要があります
    #190106
    <#
    仕様:
    ・Minecraftバージョンの表記の保持に対応
    ・連番(同時起動数の想定)はの1桁(1-9)まで
    ・連番は起動時刻順
    2つ同時起動した後に連番を振り、2番目を終了して、新たに1つ起動した場合の例:
    Exist: Minecraft 1.13.2_1
    Rename: Minecraft 1.12.2_3
    #>
    
    #Minecraft用のjavaw.exeのパスを設定
    $JavawPath = "C:\openjdk-11.0.2\bin\javaw.exe"
    #SetWindowTextを使用
    $settxt = add-type -name settxt -passThru -memberDefinition @'
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern bool SetWindowText(IntPtr hwnd, String lpString);
    '@
    #カウントリセット
    $WindowCount = 0
    #javawをStartTime順でソート
    $JavawProcess = Get-Process javaw | Sort-Object StartTime
    #ForEach-Object
    $JavawProcess | %{
        #Pathが$JavawPathと一致する場合のみ実行
        if ($_.Path -eq $JavawPath)
        {
            #"MainWindowTitle_連番"にする為の条件分岐など
            #正規表現
            if ($_.MainWindowTitle -match "Minecraft.*_\d{1}$")
            {
                #前回実行時に番号が振られたウィンドウの場合は番号を変数に格納
                [int]$WindowCount = ($_.MainWindowTitle -split "_")[1]
                Write-Output "Exist: $($_.MainWindowTitle)"
            } else
            {
                #前回実行時に番号が振られたウィンドウの番号から連番を始めなければならない場合
                #連番を初めて振る場合
                #カウントアップ
                $WindowCount++
                #setWindowTextでMainWindowHandleに対し文字列を設定($nullへリダイレクト)
                $settxt::setWindowText($_.MainWindowHandle, "$($_.MainWindowTitle)_$WindowCount") >$null
                Write-Output "Rename: $($_.MainWindowTitle)_$WindowCount"
            }
        }
    }
    

    テキスト(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; }
    
  • Discordのオーバーレイを表示する
  • YouTubeのコメントを表示する
  • 配信に友人視点の映像を載せる
  • 表示されていないときにソースをシャットダウン 有効
  • ブラウザソースはリソース喰らいなので、出来れば有効。
  • シーンがアクティブになったときブラウザの表示を更新 任意
  • ソースを非表示から表示に戻した時にリロードする。
  • 現在のページを再読込
  • %APPDATA%\obs-studio\plugin_config\obs-browser\Cache の現在のページのキャッシュをフラッシュする。
  • Discordのオーバーレイを表示する #
    OBS

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

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

    OBS
    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を入力し、幅と高さをキャンバス解像度に合わせる。

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

    メディアソース #

    項目 説明
    ローカルファイル 有効
  • 基本的に有効。ローカルファイルのみ対応。
  • mp4, ts, mov, flv, mkv, avi, mp3, ogg, aac, wav, gif, webmに対応。
  • # 同じコーデックのファイルであれば、txtに記述された複数のメディアをffmpegのconcatで連続して再生できる。
    # 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 demuxerを使用可能。
    現在利用可能なフォーマット(ビルドに依存)(空欄で自動選択):
    aa、applehttp、apng、asf、concat、flv(RTMP)、gif、image2、mov、mp4、3gp、QuickTime、mpegts、mpjpeg
  • 繰り返し 任意
  • 有効時、無限にループ再生する。
  • ソースがアクティブになったとき再生を再開する 任意
  • 有効時、ソースを再表示すると最初から再生される。
  • 無効時はミュートのような挙動になる。
  • 可能な場合ハードウェアデコードを使用 有効
  • ffmpeg同梱のffplayと同様、全ての動画がハードウェアデコードに対応している訳ではない模様(ALL-I等)。
  • 再生終了時にソースを非表示にする 任意
  • 有効時、再生が終わったら動画を非表示にします。
  • 無効時、再生後は最後のフレームの静止画になります。
  • アクティブでないときにファイルを閉じる 任意
  • 有効時、ソースが非表示状態であればファイルを編集可能。ただし、再表示に若干のタイムラグが生じる場合があります。
  • 速度(パーセント) 任意
  • 100で等倍速。
  • YUV色範囲 自動
  • 正しくないcolor rangeを指定すると変な色になります(Limited RangeをFull Rangeとして扱うと明るく白っぽく、FullをLimitedで扱うと暗く黒っぽくなる)。
  • OBSだけでBGMを再生・曲名を表示 #

    メディアソースにはffmpegのconcatが組み込まれていることは解説したが、それを利用して、曲名が書かれた映像を流せば、BGMは勿論、工夫すれば曲名もOBS単体で流せる。

    OBS単体でBGMを流すことには理由がある。
    メディアソースはOBS内の仮想音声デバイスとして機能するため、自分が聴きたくない場合、編集時にデスクトップ音声と一緒になっていては困る場合等に有効だ。

    曲名とBGMのaviを一括生成し、OBSのメディアソースに対応したinput.txtを出力するPowerShellスクリプトを書いた。

    1. ffmpegをインストール
    2. 下記スクリプトを拡張子.ps1で保存。
      日本語環境において、Windows PowerShellの場合はShift-JIS(ANSI)、PowerShell Coreの場合はUTF-8で保存。
    3. 設定を行う
      • Input: BGM素材が詰まってるディレクトリ(フォルダ)を指定します。
      • Output: Audio:BGM、Video:BGMのファイル名なaviファイルの出力先を指定します。
      • Input、Output両方とも指定した場合: Outputの中にOBSに登録するinput.txtが出力されます。
      • Inputのみ指定した場合: Inputの中にinput.txtが出力されます。
      • input.txt内に記述されるBGMの再生順は、このスクリプトを実行する度にランダムです。aviの並びを再度シャッフルしたい場合は、InputにOutputのパス(aviディレクトリ)を書き、Outputを例にならって#コメントして下さい。
      • Resolution、FontSize、FontFileは任意に設定して下さい。
      • FontFileのパスのフォーマットは、通常のWindowsの表記と異なるため注意して下さい。
      $Settings =
      @{
          #Input,Output指定: Output\input.txt Inputのみ指定: Input\input.txt
          #BGM素材入力ディレクトリ
          Input = "C:\Users\sbn\Music\audiolibrary"
          #Input = "C:\Users\sbn\Music\minecraft\sounds\music"
          #Input = "C:\Rec\audiolibrary"
      
          #avi出力ディレクトリ
          Output = "C:\Rec\audiolibrary"
          #Output = "C:\Rec\minecraft"
      
          #解像度
          Resolution = "640x40"
      
          #フォントサイズ
          FontSize = 32
      
          #フォントファイル
          FontFile = 'C\://WINDOWS/Fonts/consola.ttf'
      }
      
    4. powershell(5.1、6.1.1で動作確認)でスクリプトを実行
      Win - R -> powershellでWindows PowerShellを起動。
      #絶対パスの場合
      C:\DTV\pwsh\AudioMediaSource.ps1
      
      #相対パスの場合
      .\AudioMediaSource.ps1
      
      #外部から実行する場合
      powershell .\AudioMediaSource.ps1
      pwsh .\AudioMediaSource.ps1
      
    OBSで動画編集する #

    こいつ何言ってるんだ、と思うかもしれないが先日も私はFFmpegで動画編集したし、
    一つ上の項を実践された方はもう既にOBS、FFmpegで動画編集している(???)。

    メディアソースにはffmpegのconcatが組み込まれていると言ったが、これにはもう少し機能が含まれている。

    以下のようなテキストファイルを動画ファイルと同じディレクトリに置いて、それをメディアソースに追加すると動画編集(カット・連結)が始まる。
    同じコーデック・解像度・フレームレート・色空間でないと正しく動作しない(FFmpegで再エンコードなしで動画編集出来る条件と同じ)。

    #これ忘れない
    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
    
                              |<--- Play --->|
    +-'TWZZ6601.MOV'----------+--------------+-------
    0                    inpoint 20    outpoint 29
    

    ソースが条件に合わなかったり、更に凝ったことをしたい人はffmpegのfilter_complexで頑張ってください。
    複数解像度の動画に、それぞれのソースによってフィルタ処理を変えられるので、編集ソフトの簡易的な部分ならffmpegだけで出来るよ。
    例によってGUIが無いので、史上最も軽い動画編集ソフトだよ![要出典]

    カラーバー・カウンターを表示する #

    OBSのメディアソースはほぼFFmpegですが、ffmpegには元々SMPTEカラーバーやテストソースを表示する機能があるので、それをメディアソースで指定すればそのまま使えました。

    項目 説明
    メディアソース
    ローカルファイル 無効
  • ffmpeg demuxerを使用可能
  • 入力 smptehdbars OBS
    testsrc OBS
    testsrc2 OBS
    color=Green 使用可能な値はドキュメントOBS
    フォーマット lavfi Libavfilter
    全画面に綺麗に拡大する
    ソースの右クリックメニュー -> フィルタ -> スケーリング/アスペクト比
  • ニアレストネイバー補間で一切滲ませることなく拡大する。
  • 解像度が分かっていれば、1920x1080等を指定しても良い。
    OBS
  • スケールフィルタ ポイント
    解像度 基本(キャンバス)解像度
    testsrcからカウンターをつくる
    ソースの右クリックメニュー -> フィルタ -> クロップ/パッド
  • 不要な部分をクロップで取り除き、カラーキーで背景を抜く。
  • フィルタのプレビューウィンドウでは綺麗に処理されていないように見えるが、スケールフィルタが"無効化"であれば問題ない。
    OBS
  • 相対的 有効
    128
    94
    36
    94
    ソースの右クリックメニュー -> フィルタ -> カラーキー
    色キーの種類
    ソースの右クリックメニュー -> フィルタ -> カラーキー
    色キーの種類
    ソースの右クリックメニュー -> フィルタ -> カラーキー
    色キーの種類 カスタム
    キーの色 #ffff00(#ffffff00)
    ソースの右クリックメニュー -> フィルタ -> カラーキー
    色キーの種類
    ソースの右クリックメニュー -> フィルタ -> カラーキー
    色キーの種類 カスタム
    キーの色 #000000(#ff000000)

    映像キャプチャデバイス #

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

    画像 #

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

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

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

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

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

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

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

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

    変換をリセット #

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

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

    既定の状態

    OBS

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

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

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

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

    OBS

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

    OBS

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

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

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

    OBS
    画面に合わせる #

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

    OBS
    画面中央に置く #

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

    OBS

    フィルタ #

    OBSには豊富なフィルタが用意されています。23.0~多くのフィルタが追加されました。
    複数のフィルタを重ね掛けすることもできます。

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

    Davinci Resolve等から出力できる3D LUT.cubeが25.0で対応した。

    OBS OBS

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

    OBSのルートディレクトリ内の\data\obs-plugins\obs-filters\LUTs\original.png

    OBS

    LUTを適用したいシーンのスクリーンショットと合成

    OBS

    GIMPやDavinci Resolveでカラーグレーディング

    OBS

    合成したLUTの部分のみを切り出し、OBSのApply LUTフィルタに登録

    OBS
    スケーリング/アスペクト比 #
    スケールフィルタ
  • スケールアルゴリズムを選択します。
  • ドット絵や図など滲んではいけないもの、YouTubeでの配信映像の再エンコード品質の改善を行いたい場合は"ポイント"を使用します。
  • 小さなソースを大きく拡大する場合はバイキュービック又はランチョスを選択します。
  • DSRでオーバーサンプリングされたゲームなど、キャンバス解像度より大きなソースを小さく縮小する場合はエリアを選択します。
  • 解像度
  • "基本(キャンバス)解像度"を使用すると、異なるキャンバスサイズを持ったプロファイルで同じシーンを共有できます。
  • ソースがキャンバスの縦横比(16:9)でなく伸びてしまう場合、ソースの右クリックメニュー -> 変換を使います。
  • 音声/映像フィルタ #
    項目 説明
    VST 2.x プラグイン
  • オーディオインターフェース等のVSTプラグインが対応していれば使用できます。
  • エキスパンダー
  • 音声のダイナミックレンジを大きくします。
  • ゲイン
  • 音量を大きくできます。
  • 基本的にオーディオインターフェース側で適切な音量になるように調整しましょう。
  • コンプレッサー
  • 音声のダイナミックレンジを小さくします。
  • オーディオインターフェイスにこの機能がない場合使用してください。
  • ノイズゲート
  • 音量が閾値を超えた場合ゲートを開放することで、環境音やノイズフロアが常に録音される状態を防ぎます。
  • 閾値を超えている時(喋っている間など)は環境音含め全ての音が入ります。
  • オーディオインターフェイスにこの機能がない場合使用してください。
  • ノイズ抑制
  • 音声を加工してノイズを目立たなくします。
  • 音質は劣化します。高品質な録音への近道は、良いオーディオインターフェイスを使用することです。
  • リミッター
  • 大きな音を強く抑制します。
  • 映像の遅延 (非同期)
  • 映像と音声の両方を含むソースの映像のみを遅延させます。
  • 主に"映像キャプチャデバイス"ソースで使用します。
  • 極性を反転する
  • 音の位相を反転します。
  • オーディオインターフェイスにこの機能がない場合使用してください。
  • VST #

    OBSはVST 2.x プラグインに対応しています。

    • *.vst
    • *.dll
    • *.so
    • *.o

    上記の拡張子のファイルを、下記の場所から探します。
    ここに配置することで、インストーラのないVSTも使用できます。

    Mac

    /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/VST2
    C:/Program Files/Common Files/VSTPlugins/
    C:/Program Files/VSTPlugins/
    
    VST・OBSが32bitの場合
    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

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

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

    フィルタ #

    #音声/映像フィルタと共通。

    オーディオの詳細プロパティ #

    項目 説明
    名称
  • 表示名。デフォルトでは###音声が表示される。
  • 音量(%)
  • 音量を調節する。
  • モノラルにダウンミックス
  • オーディオインターフェイスに接続したLチャンネルのみのマイクの音声等をモノラルとして扱うことで、片方からしか聞こえない状態を回避できる。
  • オーディオインターフェイスにこの機能がない場合使用してください。
  • バランス
  • 左右の音量バランスを調整する。パン。
  • 同期オフセット
  • 音声の遅延を設定する。
  • キャプチャデバイス等で音ズレを起こす場合に有効。
  • 音声モニタリング
  • 設定->詳細設定で設定した音声モニタリングデバイスへ音を返す設定。
  • あくまでもOBS上で適用したフィルタの確認用であり、配信や録画時に使用すべきものではない。
  • これは遅延がある為、自分の声をヘッドホン等からモニターしたい場合は、オーディオインターフェースの機能を利用する。
  • トラック
  • 配信時は1トラックのみを使用するため、マイク音声、デスクトップ音声含め使用するデバイス全て1のみチェックする。
  • 録画時はマイク音声とデスクトップ音声を1と2に分けるなど、柔軟に設定可能。###出力でチェックしたトラック数分ストリーム数が確保されていることが前提。もし足りなければそのトラックは録音されない。
  • 統計 #

    OBS

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

    表示->ドックで必ずチェックしておきましょう(OBS 23.0~)。

    項目 説明
    レンダリングラグが原因で逃したフレーム
  • この値が増えていく場合、ソースのレンダリングが間に合っていません。
  • 少々PCのスペックが不足しているかもしれません。
  • 原因となっているソースを削除するか、ソースを減らします。
  • シーン切り替え等で一瞬増える程度は問題ありません。
  • OBSを管理者として実行すると改善する場合があります。
  • エンコードのラグが原因で逃したフレーム
  • 設定->出力->配信を参照し、x264でないハードウェアエンコーダを選択したり、プリセットを軽量なものに変更します。
  • それでも間に合わない場合はマシンスペックが不足しています。
  • ドロップフレーム(ネットワーク)
  • 上り回線速度(fast.com -> 詳細を表示)にビットレートが収まっていないので、設定->出力->配信を参照し見合ったビットレートに合わせてください。
  • 1080p 30fpsの配信には最低限2桁Mbpsが必要、くらいの目安でしょう。
  • 映像品質をできるだけ落とさずビットレートを下げるには、ゲームの描画とエンコードの品質を上げ、フレームレートを30fps等に落とすのが最適です。解像度の変更は負荷と品質の観点から非推奨です。
  • ネットワーク設定の最適化も有効な場合があります。設定->詳細設定のネットワークの項目を参照。
  • シーントランジション #

    OBS

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

    コントロール #

    OBS
    項目 説明
    配信開始
  • 設定->出力->配信の設定でエンコードを開始します。
  • 録画開始
  • 設定->出力->録画の設定でエンコードを開始します。
  • 録画停止ボタンで停止し、処理が完了するまで必ず待ってください。Xボタンや終了ボタンで強制終了すると、基本的に録画ファイルが破損します。
  • スタジオモード
  • デフォルトではレイアウトの変更、ソースの追加等の作業の様子が配信に映ってしまいます。このモードが有効の場合、内容を決めてから実際の配信映像に適用することができます。
  • 誤爆防止にも有効です。
  • 設定
  • ファイル->設定と同じ。
  • 終了
  • 終了
  • プロファイル #

    プロファイルを分けることで、異なる配信先やキャンバスサイズ・フレームレート、エンコード設定を切り替えられます。
    配信・録画中に切り替えることはできません。

    ファイル -> 設定

    一般 #

    言語: 日本語

    項目 説明
    一般 言語 日本語
  • 基本的に通常、高は非推奨。
  • 配信 #

    項目 説明
    サービス YouTube/YouTube Gaming
  • 配信プラットフォームの選択。
  • サーバー Primary YouTube ingest server
    ストリームキー(リンク)
  • ストリーム名/キーを貼り付ける。
  • ##YouTube側の設定を参照。
  • 出力 #

    項目 説明
    出力モード 詳細
  • ここの設定が、配信や録画の品質やパフォーマンスに最も影響する為、高度な設定項目が使用できるモードにします。
  • 音声トラック (配信用プロファイルの場合) 1
  • 配信は基本的に映像1つ、音声1つまでです。
  • 配信時は複数の映像や音声をMixすることになります。
  • (録画用プロファイルの場合) 1~任意
  • 録画時は音声ストリーム数を増やすことができるので、マイク音声とデスクトップ音声を分ける事ができます。
  • それらのルーティングはオーディオの詳細プロパティで設定します。
  • 動画ファイルに1つの映像ストリームと複数の音声ストリームが含まれた状態で出力されます。
  • 配信 #

    "配信開始"押下で選ばれるエンコード設定です。

    品質、パフォーマンスの観点から上から順に使えるものを選択して下さい。
    Macの場合は"アップル VT H264 ハードウェア~"、Linuxの場合はOBS 23.0から公式対応した"VAAPI"等を選ぶと良いでしょう。

    x264 #

    デフォルトではソフトウェアエンコードのx264になっています。
    ソフトウェアエンコーダはハードウェアエンコーダに比べ設定項目が豊富ですが、配信や録画のようなリアルタイム処理においてハードウェアエンコードに負荷・品質共に勝ることは基本的に無いので、特殊な用途でない限り選ぶ必要はありません。

    参考: 同程度の品質になるようエンコードした場合、x264で実時間の5倍かかるところ、h264_nvencでは1/5未満で終わります。

    NVIDIA NVENC H.264 (new) #

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

    項目 説明
    エンコーダ NVIDIA NVENC H.264 (new)
  • OBS 23.0からの最適化が含まれているnewを選択する。
  • レート制御 CBR
  • 安定性重視ではCBR推奨だが、私個人としてはVBRを推したい。CQPはビットレート変動が非常に大きくライブストリーミングには不向き。
  • サービス終了しちゃったぴえん~~Mixer FTLの場合は必ずCBR~~
  • ビットレート
  • YouTube 1080p: 10000-12000 Kbps
  • YouTube 1440p: 15000-18000 Kbps
  • YouTube 4K: 28000-34000 Kbps
  • Twitch, Mixer: 7000 Kbps
  • 解像度、フレームレート毎に異なるため、YouTubeの推奨値を参考に調節するとよいが、NVEnc H.264 VBRで試した結果、このビットレートが適切(VMAFスコア96-97)だった。解像度別の適切なビットレート設定
  • ゲーム配信等で動きが多い場合は値を大きく、逆に動きの少ない静止画や絵描き配信等は値が小さくても良い。
  • ビットレートが回線のキャパを超えると統計の"ドロップフレーム(ネットワーク)"の値が増える。
  • 最大ビットレート ビットレート+2000~4000Kbps
  • VBRの場合有効。4Mbps以上大きくしてもあまり効果がない上にビットレートが予測できなくなるのでこの程度に留めておこう。
  • キーフレーム間隔(秒) 2
  • ライブストリーミングの場合、キーフレーム(完全な画像のフレーム)をある程度の頻度で含ませる必要がある。
  • NVEnc H.264に限って言えば実は4秒が効率が良いので、画質を攻める人にオススメ。
  • プリセット Quality
    Low-Latency Quality
    Low-Latency
  • ビデオカードのスペックに余剰があれども、Max Qualityはリアルタイム処理に難があり、配信を不安定にするため、必ずQuality(medium)を選択する。特にMixer FTL等のレイテンシにシビアの場合は配信すらできなくなる。
  • もし処理が間に合わず統計の"エンコードのラグが原因で逃したフレーム"の値が増えるようであれば、Quality同様に品質・負荷・ビットレートの効率が良いLow-Latency Quality(llhq)かLow-Latency(ll)を選ぶ。解像度別の適切なビットレート設定
  • Profile high
  • 対応していない機能があるため、baselineやmainは不可。ビットレート当たりの品質も確実に低下する。
  • Look-ahead 無効
  • "最大Bフレーム"の範囲内で先読みしてBフレーム数を可変的に決める。
  • 無効時は常に"最大Bフレーム"。
  • 動きの少ないコンテンツに効果的。動きが激しい場合はビットレートを無駄遣いする為、品質が低下する。
  • 負荷が大きくドロップする場合はオフ。
  • 心理視覚チューニング 有効
  • 有効時は、ビットレートの使用方法が大幅に最適化され、特に動きの激しいシーンで視覚品質が向上する。
  • GPU 0
  • GPUを複数挿している場合、それを選択できます。ただし、別GPUにフレームをコピーする過程でメリットが失われる為、NVIDIAにより非推奨。
  • 最大Bフレーム 2
  • ビットレートが限られる環境下では、キーフレームの差分の更に差分であるBフレームは品質保持に有効。
  • 動きが少なく、ブロックノイズや纏わりつくようなアーティファクトが出なければ3に増やしても良いが、NVEnc H.264では2が最も効率がよく、04は非効率。
  • YouTube Liveの低遅延や超低遅延、Mixer FTLでは0にすると安定する。
  • 上記の設定を行った際の映像品質(参考):

    (GTX1650無印を除く)Turing世代では、Pascal世代と比べ品質が向上しているため、配信や録画用途の方は型落ちを選ぶべきではありません。

    NVEnc対応リスト

    https://developer.nvidia.com/video-encode-decode-gpu-support-matrix

    OBS 23.0からNVIDIAと共同で開発された最適化されたNVEncが利用できます。
    Turing以降だけでなく、Pascal以前にも有効とのことなので、既存ユーザは今すぐアップデートしましょう。

    https://www.nvidia.com/en-us/geforce/news/geforce-rtx-streaming/

    https://www.geforce.com/whats-new/guides/broadcasting-guide

    OBS公式TwitterやNVIDIAによると、配信専用に別GPUを使用してもメリットが無いため推奨されないとのこと。
    遊びたいゲームがある程度余裕を持ってプレイできるスペックを選ぶと良いでしょう。

    https://twitter.com/OBSProject/status/1093974361588019200

    NVEncが選べない #

    廉価GPU・古い世代の場合、使えない・一部機能が制限されている可能性があるため、
    以下のNVIDIA公式ドキュメントの対応表を確認する。

    https://developer.nvidia.com/video-encode-decode-gpu-support-matrix

    • 古いGPUに関してはFor a complete list, click on the buttons below to open the complete tablesから見る。

    • Max # of concurrent sessionsにNVIDIAのセッション数(同時エンコード可能な数)が書いてある。
      3本以上を同時に処理する特殊な用途ならQuadroが欲しくなってくる。
      同時配信では、3つ以上の解像度が必要なければ、#正しい同時配信の方法で十分。

    • HEVC B Frame supportは動画品質に効いてくるので、もしGPUを新調する場合はこれが使えるものを選んでおくと良い。

    • GeForce GTX 1650Turing GPU with Volta NVENCと注釈が入ってるように新しいNVEncが使用できないため、これを選ぶならPascal世代を選んだ方がお得。

    配信用にグラボを選ぶなら1650 Super~ということがわかる。

    NVEncで配信録画開始時に失敗する #

    配信開始しようとすると、以下のような素っ気ないエラーが返ってくる。

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

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

    FFmpegカスタム出力の場合は録画中に不明なエラーが発生しましたしか表示されないかもしれない。

    この原因として、文字通りの場合もあるが、
    NVEncセッション数制限がNVIDIA GeForceには設けられているため、同時にエンコード出来るのは2つまで。
    他のアプリケーションがそれを使用している時に配信・録画開始しようとして失敗する場合がある。

    裏でエンコードや画面共有等をしていなくとも、GeForce ExperienceのShadowPlayやWindowsのゲームバー(Game DVR)によってセッション数が専有される場合がある。

    Windowsの設定->ゲーム->ゲームバーを無効。
    GeForce ExperienceでShadowPlayを無効。

    ログの見方はメニューバーのヘルプに書いてあるよ。

    H.264/AVC Encoder (AMD Advanced Media Framework) #

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

    項目 説明
    エンコーダ H.264/AVC Encoder (AMD Advanced Media Framework)
  • AMDのGPUを使用しているにも関わらず選択できない場合は、デバイスマネージャ等でドライバを更新してください。
  • プリセット
  • AMFはハードウェアエンコーダには珍しいほど多数のパラメータが用意されているため、"Twitch配信"や"YouTube配信"のプリセットを選ぶのが無難です。
  • 録画向けのプリセットは実際に録画向けで、配信向けのプリセットを選択しないと配信は安定しません。
  • 品質プリセット 品質
  • 品質を優先したエンコードを行う設定です。
  • 統計の"エンコードのラグが原因で逃したフレーム"の値が増えるようであれば、"バランス"や"速度"を選択します。
  • プロファイル High NVEnc H.264を参照
    レート制御方式 可変ビットレート(遅延節約)(VBRLAT)
  • 固定ビットレートでも良いですが、ビットレートをより効率的に使用する為に、振れ幅の小さい可変ビットレートを使用します。
  • VBRの中でも、配信で重要なレイテンシを意識したレートコントロールです。
  • プレパスモード 無効
  • VBR(CBR)で使用できる、事前に処理を行ってGOP内のビットレート分布を改善するモードです。
  • 負荷が大きい点、古い世代のGPUでは大きな効果が得られない点に注意してください。
  • 目標ビットレート NVEnc H.264を参照
    最大ビットレート
    最小QP 18
  • ビットレート目標値でレートコントロールした上で、量子化量(Quantization Parameter)の上限下限を設けて無駄なビットレート消費や映像の破綻を防ぐ。※検証の余地あり、値を弄らなくても良い
  • 最大QP 25
    キーフレーム間隔 2.00
  • NVEnc H.264を参照
  • 0.50のようにより動きに強いClosed GOPを指定することもできる。
  • 表示モード 詳細設定
  • "基本"では設定できない項目があるが、正直"基本"で十分です。
  • QuickSync H.264 #

    Intel製iGPU(CPUの内蔵グラフィック)搭載の、Quick Sync Video(QSV)が使えるモデルで有効な機能です。Intelの公式サイトで確認できます。

    項目 説明
    エンコーダ QuickSync H.264
  • プルダウンメニューでQSVが選べない場合、BIOSでiGPUを有効にする必要があります。
  • NVEncが使える場合は配信用途でQSVを有効にする必要はありません。
  • ターゲットの使用法 quality
  • パフォーマンスに余剰がある限りできるだけ品質優先。統計の"エンコードのラグが原因で逃したフレーム"の値が増えるようであればbalanced等に下げても良い。
  • プロファイル NVEnc H.264を参照
    キーフレーム間隔(秒)
    非同期深度 4
  • 既定値。パフォーマンスに関する設定。
  • レート制御 CBR
  • CBR推奨、回線に余裕があればVBRでも良い。CQPやLA_ICQはライブには不向き。
  • ビットレート NVEnc H.264を参照
    最大ビットレート
    アップル VT H264 ハードウェアエンコーダ #

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

    項目 説明
    エンコーダ アップル VT H264 ハードウェアエンコーダ
    ビットレート NVEnc H.264を参照
    限界ビットレート 有効
  • これを有効にしないと、ビットレートが大きく変動し、配信が安定しない・途切れてしまうようです。
  • 最大ビットレート 6500
  • "限界ビットレート"が有効の場合表示される。配信用途においてビットレートを制限する目的なので大きくし過ぎないこと。
  • 最大ビットレート ウィンドウ(秒) 1.00
  • 既定値
  • キーフレーム間隔(秒) NVEnc H.264を参照
    プロファイル
    B フレームを使用する
    配信が止まる・途切れる・カクカクする #
    1. 前提として、x264を使用していないことを設定->出力->配信で確認する
    2. 主にNVEncの設定を参考に、値を変更する
    3. 統計を表示して配信してみる

    録画 #

    "録画開始"押下で選ばれるエンコード設定です。

    因みにYouTubeの推奨値。あくまでもアップロード用の最終出力の推奨値であり、編集前のソースとして使う場合はこの値は推奨されない。
    https://support.google.com/youtube/answer/1722171

    項目 説明
    種別 カスタム出力 (FFmpeg)
  • OBS組み込みではなく、FFmpegを使用したエンコードを行う。
  • 設定可能な項目が大幅に増える。
  • FFmpegはいいぞ。
  • FFmpegの出力の種類
    ファイルパスまたはURL
    ファイルに出力 フォルダを参照又は直接ディレクトリのパスを記述。基本的に録画機能。
    URLに出力 rtmp URLを記述するとRTMP配信が可能。配信向けの設定値は正しい同時配信の方法を参照。
    スペースなしのファイル名を生成 有効
  • ファイル名のスペースは極力避けたい。
  • 詳細設定でスペースをアンダースコアに置き換えても良い。
  • コンテナフォーマット mpegts
    mkv
    mp4
  • 通常はmp4を選択するが、mpegtsでは録画中に再生やエンコードが可能になり、OBSがクラッシュして録画が強制終了しても、動画ファイルが壊れることはない(mp4ではmoov atomが破損し再生・編集不可)のがメリット。一般的にはデジタル放送やライブストリームに使用される形式。
  • 編集ソフトに投げる前に、下記のようにFFmpegで無劣化コンテナ変換(再エンコなし)を行う必要がある。
    ffmpeg -i input.ts -c copy out.mp4
    
  • 音声エンコーダにflacを使用する場合、mp4(要マルチプレクサーの設定)よりmkvが良い。
  • マルチプレクサーの設定(ある場合)
  • 基本的に何も指定しない。
  • movflags=frag_keyframe+empty_moov
  • コンテナフォーマットがmp4でも、強制終了時に動画ファイルが破損しなくなるFragmented MP4を使用する。コンテナフォーマットをmpegtsに設定したときのffmpegでのts->mp4変換が面倒な方にオススメ。
  • Twitter等のSNSにそのまま投稿できなかったり、Premiere Pro等の編集ソフトが非対応・対応が甘い場合があるので注意。
  • strict=-2
  • 実験的な機能を有効にする。
  • コンテナフォーマットmp4に音声コーデックflacの組み合わせは規格外なので必要。
  • color_range=tv color_primaries=bt709 color_trc=bt709 colorspace=bt709
  • 色空間を明示的に指定し、メタデータに記述する。
  • movflags=frag_keyframe+empty_moov strict=-2 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に直接投稿する場合向けの設定
  • 映像ビットレート 100000 Kbps
  • あればある程良いが、ディテールが潰れない程度にビットレートが割り当てられてば十分。実際のところストレージの容量・速度と相談。
  • 固定量子化量・CQP・constqpモードや固定品質・cqモードを使用する場合は0 Kbpsに設定して無視させる。
  • キーフレーム間隔(フレーム) 15
  • ここでは秒ではなくフレーム数であることに注意。
  • 編集、YouTubeへのアップロードに適したclosed gop(フレームレートの半分)。よって、30fpsなら15、60fpsなら30。
  • 出力をリスケールする 無効
  • ここではリスケール(リサイズ)しない。
  • 映像エンコーダ
    映像エンコーダ設定(ある場合)
    hevc_nvenc
    h264_nvenc
    h264_qsv
    utvideo
    dnxhd
    x264
    すべてのコーデックを表示(潜在的に互換性がない場合でも) 有効
  • mpegtsを選択した場合、チェックしないとプルダウンメニューに表示されない。
  • 音声ビットレート 320
    音声トラック オーディオの詳細プロパティに対応したトラックを有効にする。#出力の音声に関する項を参照。
    音声エンコーダ aac
  • 基本的に不可逆圧縮のaacで十分。実際のところ、マイクやAIFの品質の方が音質への影響は大きい。
  • flac
  • 劣化無く音声を記録できる、可逆圧縮のflacもオススメ。
  • コンテナフォーマットがmp4の場合、マルチプレクサーの設定も行う必要がある。
  • #YouTubeの劣悪エンコード事情への対処法#動画音声の再エンコ品質にもあるように、最初から最後までflacで貫き通すと、YouTube側でより良く音声がエンコードされる。
  • 音声エンコーダ設定(ある場合) aac_coder=twoloop 音声エンコーダにFFmpeg標準のAACエンコーダを使用する場合。

    映画&ビデオはデフォルトではMPEG-2 TSに非対応のため、Microsoft Storeから拡張機能をインストールする必要があります。

    https://www.microsoft.com/ja-jp/p/mpeg-2-video-extention/9n95q1zzpmh4

    mp4にflacのような、規格外のフォーマットを扱う場合、MPC-BEをオススメします。

    https://sourceforge.net/projects/mpcbe/

    hevc_nvenc #

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

    項目 説明
    映像エンコーダ hevc_nvenc
  • NVIDIA製GPUを使用している場合、最も推奨。
  • H.264より高品質で圧縮率が高い。
  • ローカル保存用としても、YouTubeへのアップロードにも適している。
  • 4K60や8KはH.264の場合規格外となる。
  • 再生負荷は大きい。GPUによってはデコード・エンコードに非対応。
  • 映像エンコーダ設定(ある場合)
  • profileはmain(8bit)。highはなく、10bitのmain10はOBSが非対応なので指定する意味がない。
  • presetはp4(medium,slow)かp3(≒llhq,ll)が品質と負荷とサイズのバランスが良い。
  • profile=main preset=medium rc=vbr_hq maxrate=200M bf=0
  • rc(レートコントロールプリセット)はvbr_hq。編集ソース用として適し、比較的録画負荷は低い。ただしレートコントロールに無駄が大きいので、そのままアップロードするのは非推奨。
  • cbrよりcbr_hqが優れるように、vbrより高品質(Pascal以前では逆転するという情報もある、手元のRTX 2080では明らかにvbr_hqに分があった)。
  • profile=main preset=medium rc=constqp init_qpI=0 init_qpP=10 bf=0
  • constqp。無編集かエンコードせずに編集する向けの引数。負荷が大きい場合は↑のvbr_hqを使用する。
  • ビットレートではなく、CQやQPでレート制御を行う場合、映像ビットレートは0Kbpsにして無視してもらう必要がある。
  • preset=p7 profile=main 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
  • hevc_nvencエンコード500本ノックにより生まれたhevc_nvencさいつよ設定をOBSで使用する。SVT-AV1並みのVMAF・ファイルサイズで10倍の処理速度(Intel Core i7-8700, NVIDIA GeForce RTX 2080比)。
  • 特に4Kリアルタイムエンコードでpreset=p7を使用するとRTX2080では間に合わなかった[出典不要]のでRTX3090が必要[要出典]。preset=p4に妥協すると良い。multipass=0も良いだろう。
  • 組み込まれたFFmpegのバージョンが古いので、preset=p1-p7 dpb_size=4 multipass=2は無視され、b_ref_mode=0でないと動作しないFailed to open video codec: Operation not permitted最新のFFmpegを組み込みOBSをビルドすると引数が全て有効になる。引数の設定に成功しているかはメニューバー->ヘルプ->ログファイル->現在のログを表示で確認できる。
  • 映画&ビデオはデフォルトではHEVCに非対応のため、Microsoft Storeから拡張機能をインストールする必要がある。

    無料、ハードウェアデコード版(これで十分)
    https://www.microsoft.com/ja-jp/p/hevc-video-extension/9n4wgh0z6vhq

    有料、ソフトウェアデコードにも対応版
    https://www.microsoft.com/ja-jp/p/hevc-video-extension/9nmzlz57r3t7

    h264_nvenc #
    項目 説明
    映像エンコーダ h264_nvenc
  • NVIDIA製GPUを使用している場合で、HEVC編集に難があるか、ビットレートを潤沢に割り当てられる場合こちらを推奨。
  • HEVCと比べ品質は劣るものの互換性は高い。
  • 編集ソフトで扱う際に負荷が小さい。
  • 旧世代のGPUでもデコード・エンコードに対応。
  • 映像エンコーダ設定(ある場合) profile=high preset=medium rc=vbr_hq bf=0 maxrate=200M rc-lookahead=1
  • profileはhigh。
  • presetはmedium(Quality)かllhq(Low-Latency Quality)が品質と負荷とサイズのバランスが良い。
  • rc(レートコントロールプリセット)はvbr_hq。編集前ソースとして適し、cbr_hq同様無印より高品質。
  • 編集前ソースなので、bf(B-Frame最大数)は使用しない。
  • 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で使用する。
  • 特に4Kリアルタイムエンコードでpreset=p7を使用するとRTX2080では間に合わなかった[出典不要]のでRTX3090が必要[要出典]。preset=p4に妥協すると良い。
  • 組み込まれたFFmpegのバージョンが古いので、preset=p1-p7 dpb_size=4 multipass=2は無視され、b_ref_mode=0でないと動作しないFailed to open video codec: Operation not permitted最新のFFmpegを組み込みOBSをビルドすると引数が全て有効になる。引数の設定に成功しているかはメニューバー->ヘルプ->ログファイル->現在のログを表示で確認できる。
  • 配信向けの設定値は正しい同時配信の方法を参照。

    h264_qsv #
    項目 説明
    映像エンコーダ h264_qsv
  • NVEncが利用できず、QSVが使用できる場合に推奨。
  • FFmpegカスタム出力で使用するには、QSVが組み込まれたFFmpegでOBSをビルドする必要がある。標準モードでは設定できる内容が少ないが、ソフトウェアエンコードを使用するよりは良い。
  • hevc_qsvは品質、速度面で一切優位性が無いので使用しない。次期Intel CPUに期待。
  • 映像エンコーダ設定(ある場合) profile=high preset=veryslow maxrate=100M bf=0 b_strategy=1 look_ahead=1 look_ahead_depth=60
  • profileはhigh。
  • presetはveryslow。
    編集ソースとして適し、cbr_hq同様無印より高品質。
  • 編集前ソースなので、bf(B-Frame最大数)は使用しない。
  • lookahead=1はHaswell以降対応、非対応のCPUではlookahead:0
  • utvideo #

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

    項目 説明
    コンテナフォーマット 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は盛大にドロップした。

    項目 説明
    コンテナフォーマット 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 #
    項目 説明
    映像エンコーダ 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な引数。
    かなり重たい。
  • 負荷を掛けずに同時配信する方法 #

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

    一般的に知られている方法は、OBSを多重起動したり、OBSの配信から1つ、録画(FFmpegカスタム出力)から1つという方法ですが、
    これは2つエンコード(及びデコード)が走るので極めて無駄であり、NVIDIA GeForceのNVEncセッション数(2)を使い切ってしまうのもあり、お勧めできません。
    (私の環境ではFFmpegカスタム出力からの配信はドロップまみれで失敗しているのもある)

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

    1. まずはOBSの設定
      配信設定の概要は、FFmpegカスタム出力の詳細はを参照。
    FFmpegカスタム出力
    項目
    種別 カスタム出力 (FFmpeg)
    ファイルパスまたはURL rtmp://localhost:5555
    コンテナフォーマット flv
    映像ビットレート 6000 Kbps
    キーフレーム間隔(フレーム) 30fps: 15
    60fps: 30
    映像エンコーダ h264_nvenc
    映像エンコーダ設定(ある場合) profile=high preset=slow rc=vbr_hq maxrate=7M bf=2 rc-lookahead=32
    音声ビットレート 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 音声ビットレート 128
  • ライブ配信用のプロファイルでは、トラック1のみ設定してあれば良い。
  • YouTubeの推奨値は128kbps
  • 320
  • 録画用プロファイルでは、出来る限り高ビットレートで録音する。
  • 名称 任意
  • ストリームのメタデータに明示する事ができる。
  • 複数音声ストリームを使用する場合に便利。
  • トラック2
  • 録画用のプロファイルでは、設定 -> 音声で使用するトラック数分設定する。
  • 例: マイク音声、デスクトップ音声の2つ
  • 音声 #

    設定 -> 音声

    項目 説明
    サンプリングレート 48kHz
  • YouTubeの推奨値は44.1kHzだが、#YouTubeの劣悪エンコード事情への対処法にある通り、実際には48kHzの方が都合が良い。
  • オーディオインターフェース側のサンプルレートも合わせたほうが良い。
  • チャンネル ステレオ
  • 大抵のプラットフォームはステレオ。特殊な用途でない限り弄らない。
  • デスクトップ音声デバイス スピーカー
    SPDIF
    ライン
  • Windows上の"再生デバイス"に該当する。
  • スピーカーやヘッドホン、オーディオインターフェイスの出力デバイス名を選択する。
  • AIFのループバック機能を使用する場合はデスクトップ音声がマイク音声に返される。その場合こちらを有効にする必要はないが、ボイスチャットや分けて編集したい場合はそれを使用せずOBSの機能を使おう。
  • Windows Update、AIFの抜き差し、サンプルレートの変更等でDeviceIDが変更されると、"デバイスが接続されていないまたは利用不可"になります。再設定が必要です。
  • マイク音声デバイス マイク
    ライン
    Analog Input
  • Windows上の"録音デバイス"に該当する。
  • マイク、ウェブカメラ、オーディオインターフェイスの録音デバイス名を選択する。
  • 複数デバイスにそれぞれループバックを設定できるAIF(RME TotalMix等を使用して)の場合、再生デバイスをこちらに登録することもできる。マイク、Discord、Minecraft、BGMをそれぞれ別のデバイスで再生することで、アプリケーション毎に音声を分けて録音できる。
  • Windows Update、AIFの抜き差し、サンプルレートの変更等でDeviceIDが変更されると、"デバイスが接続されていないまたは利用不可"になります。再設定が必要です。
  • アプリケーション毎に音声を分けて録音する #

    VoiceMeeterでも一応可能だが、TotalMix Fxが使用できるRMEのオーディオインターフェースが楽で高品質。
    アプリケーション毎に別のデバイスから音声を出力させるよう設定し、その全ての音をモニターしたり、それらの中で任意の音声デバイスをそれぞれ別のストリームに録音できる。

    OBS
    • 1つのAIFに複数の音声デバイスがある
    • 個々の音声デバイスで「ループバック」を設定可能
    • 個々の音声デバイスは、OBSやDiscordなど、あらゆるアプリケーションで「別の音声デバイスとして認識される」
    • 音声デバイスすべて・または一部の音声自由に選び、同じスピーカーとして自分で聞ける

    要するに、

    • マイクとデスクトップ音声を分けるのが通常だが、デスクトップ音声が複数あるので、通話とゲームの音声を分けられる
    • ライブ配信の音声をモニターしても、配信に載せないことが可能
    • ボイチェンの出力を1つのAIFでルーティングできる
    • 聞いているBGMを配信に載せない、配信のBGMを聞かないことが可能

    そんな夢のデバイスが世にはあります。

    AD/DA・マイクプリ・クロックは言わずもがな(AG03の音質に満足できない!という方にもオススメ)、その品質を抜きにしても、少なくともWindows上で配信・録画用途で使用する場合、同価格帯のUniversal Audio Apollo Twin MkII等とは比べ物にならないアドバンテージがあると言えるでしょう。

    ただ私も(紆余曲折を経て)愛用しているBabyface Pro FSは、Dynamics(Expander/Gate)機能が省かれている点が少々残念。
    OBSやDiscordに最低限の機能はあるのでそれを承知で購入したが、やはり少々不便な時もある。
    対応の有無は日本支部公式のPDFを参照。

    https://synthax.jp/pdf/RME_TotalMix-FX-2017.pdf

    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を導入する #
    OBS

    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
    2560x1440
    1920x1080
    1280x720
  • OBSの映像ソースを配置するキャンバスの解像度。
  • 解像度の変更は負荷と品質に悪影響があるので、基本的に出力解像度に合わせる(ドットバイドット)。
  • 16:9のモニタが推奨される。配信、録画用途では16:10や21:9の解像度は不具合の元なのでオススメしない。
  • 出力(スケーリング)解像度
  • 配信、録画の出力解像度。
  • 解像度の変更は負荷と品質に悪影響があるので、基本的にディスプレイまたはメインのソース(ゲーム等)の解像度に合わせる(ドットバイドット)。
  • 配信プラットフォームが対応している限り、ビットレートや負荷軽減の為のダウンサンプリングは推奨されない。
  • 縮小フィルタ バイキュービック
    ランチョス
  • リサイズアルゴリズムの選択。
  • bicubicまたはlanczosを選んでおけば良い。bicubicの方が負荷は小さく、lanczosの方が一般的に高品質。
  • FPS共通値 30
    60
  • 動画投稿SNSにアップロード、ライブ配信には30または60fpsを選択する。29.97や59.94fpsは基本的に使用しない。
  • ビットレートが潤沢に割り当てられていない場合、下手に60fpsにするよりも30fpsの方が視覚的な品質は向上する。
  • 映画風のテイストにしたい場合、プラットフォームが対応していれば24fpsもあり。
  • FPS分数値 30fps: 30/1
    60fps: 60/1
  • 基本的にこちらを使う必要はない。FPS共通値で選べないようなフレームレートを選びたい場合はこちらで指定する。
  • 1/1fps、1/6fps、1/15fps等も使える。これを使ったハックを応用で紹介している。
  • 29.97fpsは30000/1001fpsに該当する。
  • ホットキー #

    ミュート、ミュート解除にDiscordのミュートのキーを割り当てておくと便利だよ!
    録画開始・終了に割り当てるのは良いが、配信は誤爆防止の為にここで設定するようなキーの組み合わせを使う一般的なキーボードやマクロには割り当てるべきではない(Elgato Stream Deckの場合は仕組みが違うので例外)。

    詳細設定 #

    項目 説明
    一般 プロセスの優先度 通常
  • 基本的に通常、高は非推奨。
  • 映像 カラーフォーマット NV12
  • ハードウェアエンコーダに使用されるYCbCr 4:2:0のピクセルフォーマット。YouTubeの推奨値でもあり、他のプラットフォームでも基本的にこちらを使用する。
  • 必要であれば、I422やI444を使用しても良い。
  • RGBを使用したい場合はUtVideoを使用する。
  • YUV色空間 709
  • 基本的にRec.709を使用します。
  • Rec.2020には非対応です。
  • YUV色範囲 一部
  • 一部はリミテッドレンジ・TVスケール。全部はフルレンジ・PCスケール。
  • RGB Full環境でも、フルレンジは基本的に使用しません。
  • 音声 音声モニタリングデバイス 既定
  • オーディオの詳細プロパティで音声モニタリングを設定した場合の出力先。基本的に使用しない。
  • 録画 ファイル名書式設定 %CCYY-%MM-%DD_%hh-%mm-%ss
  • 既定値ではISO 8601に寄せてあり、実際には2020-02-20_20-02-22.tsにようになる。
  • ファイル名にハイフンは兎も角、スペースが入るのは好ましくない。
  • ネットワーク IP選択 既定
  • 複数のネットワークアダプタがある場合、任意のデバイスを選択できる。
  • 輻輳を管理するためにビットレートを動的に変更する(ベータ版) 無効
  • RTMP配信でネットワークドロップが発生した場合に配信のビットレートを数分間制限し、数分後ネットワークに問題がなければビットレートを元に戻す機能。
  • Numpad 0–6キーで制限中のビットレート上限を変更できる。0(制限なし)、1000–6000Kbps。
  • ネットワークの最適化を有効にする
    新しいネットワークコードを使用する
    有効
  • ノンブロッキングソケットではなく、イベントベースのAPIをストリーミングに使用します。フレームドロップや切断に役立つ場合がある。
  • TCPページングを有効にする
    低遅延モード
    無効
  • ネットワークバッファを可能な限り高速に維持し、その占有率を可能な限り低く保つことで、同じPCで同時に実行されている他のネットワークプログラム(ゲームなど)への影響を減らすことができる。
  • 安定した回線でない場合、フレームドロップの原因になる場合がある。
  • YouTubeの低遅延モードとは無関係。
  • ソースの表示/非表示のキーとスタジオモードと一緒に使う場合、トランジションに同じキーを割り当てれば可能だが、あまり自由度が無いので敢えてスタジオモードを使わないという選択肢もある。
    ソースの右クリックメニュー -> 変換と組み合わせれば、スタジオモードと遜色なく操作できます。

    YouTube側の設定 #

    配信時はOBSで映像・音声のソース、エンコードの設定を行い、YouTube等の設定でタイトルや概要、公開設定や遅延等のプラットフォーム側のモード選択を行います。

    配信プラットフォーム側の設定画面に記載されているRTMP URLに対してストリーミングすることで、YouTube側で設定されたタイトル等が適用され、視聴者側に反映されます。

    ライブダッシュボード #

    ※この項目は古いです

    配信・コメントのプレビュー、YouTube側の設定を行う
    Live Dashboard - YouTube

    基本情報 #

    タイトル、概要欄はお好みで。
    #Minecraft #Apex #Fortnite のように入れるとタイトルの場合はタイトル文字列内に、概要欄の場合はタイトル上にタグを表示できる。
    カテゴリは"ゲーム"を選択し、該当するものを選んでおくと良い。
    プライバシーは取り敢えず誤爆防止に"非公開"(又は限定公開)で。配信設定が終わったら"公開"にしてライブしてみよう。

    ストリームオプション #

    DVRを有効にする: 視聴者が再生時に巻き戻せるか否か。お好みで。
    完了時にアーカイブを限定公開にする: 非公開ライブのアーカイブは既定で非公開、限定公開・公開も同様に引き継ぐが、公開でライブ後も既定で限定公開にすることも可能。
    ストリームの最適化: 画質を優先する場合や4Kの場合は通常の遅延。品質を犠牲にコメントとの会話を優先するなら低遅延や超低遅延。

    エンコーダーの設定 #

    ストリーム名/キーをOBSで使用する。サーバURLは基本不要(FFmpegカスタム出力等で使用する)。

    ライブ配信を開始 #

    YouTubeの新しいライブ配信UIでは、以前とは違い配信ソフトで配信開始した後、こちらで配信を開始すると実際に配信が始まる仕様になっています。
    少々面倒になったが、不具合や誤爆等による放送事故を防ぎやすいという意味でも良いアップデートでしょう。

    1. YouTubeのトップページから、ライブ配信を開始にアクセスし、エンコーダ配信タブを選択します。
      管理タブでは、ライブ予約枠や正しく終了できていないライブの削除を行えます。
      ライブ配信を開始

    2. 既定値から全て設定し直す場合は"新しいライブ配信"、
      前回のライブの設定を流用する場合は、流用元を選び"コピーして作成"を選択します。

    ライブ配信を開始
    1. タイトルや説明を記述してください。
      説明欄に#Minecraftのようにハッシュタグを追加すると、タイトル上に表示されます(3つまで)。
      説明欄の改行は正しく表示されないので、テキストエディタで編集してコピペするといいでしょう。
      はじめての場合は公開ではなく、限定公開でテストしましょう。非公開はログインが必要になるので、例えばコメントをOBSで表示することは出来ません。
      また、どの公開設定でも著作権に触れるものは容赦なく削除されます。クラウドストレージのような使い方は出来ません。
      後でスケジュール設定を有効にすると、ライブ配信枠の予約ができます(公開の場合はこの時点でチャンネル登録者に表示され、例えばZapierの連携では通知が飛びます)。無効にすれば、今すぐに配信するモードになります。
    ライブ配信を開始
    1. ストリームキーをOBSの設定->配信を参考に設定します。
      タイトルやカテゴリ等は後からでも鉛筆アイコンから修正できます。
      "設定"をクリックして次へ
    ライブ配信を開始
    1. ライブ配信の設定を行います。
      設定は1つの枠に1つまでで、配信開始後にそれを変更することはできません。
      DVRを有効にすると、視聴者は放送中でも巻戻しが出来ます。
      配信が4Kの場合、画質をより良く場合(YouTube側のエンコードの設定が変わります)は通常の遅延、コメントとのタイムラグを小さくしたい場合は低遅延や超低遅延を選択します。
    ライブ配信を開始
    1. OBSで配信開始すると、"ライブ配信を開始"が選べるようになります。"ライブ配信を開始"を押下すると、その時点でYouTubeが配信を開始します。視聴者に公開されるのはここからです。
      少し遅延があるので、準備している時の映像や音声が流れないよう、プレビューを観ながら余裕を持って開始しましょう。
    ライブ配信を開始
    1. 配信が開始されると、新しいライブダッシュボードへ飛ばされます。
      この画面はライブ予約または配信中であれば管理タブからもアクセスできます。
      配信を終了する場合は、右上の"ライブ配信を終了"を押下してから、OBSで配信終了します。そうすることで、視聴者側で「クルクル」せずスマートに配信を終了できます。
    ライブ配信を開始

    応用 #

    配信・録画品質を保つ為に気を付けること #

    OBS側を煮詰めても、上流であるプレイ画面や操作画面等の映像、マイクや楽器等の音声ソースが汚ければ、それ以上の品質は出ません。
    映像は余裕のあるスペックのマシンでゲームを綺麗に描画し、音声は良いプリアンプとADを載せたAIFを使用しましょう。
    そして最後に、出来る限り綺麗なエンコードが可能なTuring世代のNVIDIA製GPUを選びましょう。
    次の項で私のメインPCと周辺機器から録画・配信に関連する項目をリストしておきます。

    OBSに画質を求めるのは間違っていません。

    配信・録画向けPC構成 #

    配信・録画には映すソース(ゲーム等のアプリケーション)に必要なリソース+αの処理能力が必要です。
    ただし盲目的にCPU、GPUの強化を推奨しているものは、選ぶパーツや不適切なエンコード設定によってはまるで無意味な場合もあります。
    正しくOBS側の設定を行う前提で、リアルタイムエンコードのパフォーマンスと品質において優れ、その中でより効率的な組み合わせを選択すると、より快適な配信・録画環境を構築できます。

    カテゴリ 私の環境(例) 理由
    CPU Intel Core i7 8700
  • Intelならh264_qsv LA-ICQに対応したHaswell以降。QSVが使えると、NVEncが足りなくなったときに便利です。
  • AMDの場合、ネイティブAVX-256に対応し、IntelCPUとの差が縮まったZen2世代(3XXX番台)を選ぶ。
  • コア数が大きいのは構いませんが、そのメニーコアを使い切れるかはx264では絶望的、x265でも限界があります。
  • dGPU NVIDIA Geforce RTX 2080
  • Turing世代のNVEncが使用できるNVIDIA製のグラフィックボード(GTX 1650 Super~)を推奨。
  • Radeonがこれに勝るならエンコード引数を教えてほしい。買います。
  • DRAM 32GB
  • OBS以外でカツカツにならない程度あれば良いでしょう。
  • 8GBではブラウザ開いて終わりなので16GB~あった方が良いでしょう。
  • 4K8Kのソフトウェアエンコードをするなら割と食べるので注意。
  • SSD Sandisk Extreme Pro NVMe 1TB
  • システムドライブがHDDな環境は流石に無いと思いますが、万が一にもSSDでないなら即効換装しましょう。
  • 現在のメインストリームは500GB~1TB程度。128GBや256GBを選ぶと同じ製品であっても性能が落ちるのでオススメしません。
  • SATAでも十分ですが、やはり動画を扱うならNVMeにしておくと、QoLが向上します。ただし、M.2端子でもPCIeではなくSATAのものが存在するので注意。また、TLCからQLCに妥協してまでNVMeにする必要はありません。
  • SSDはよく見かける"CrystalDiskMark 1GiBのシーケンシャルの値"は参考にならず、CrystalDiskMark7の現実性能か、HD Tune Pro辺りのベンチを見ると良いでしょう。PCIe4.0である必要はありません。
  • おすすめのメーカーはSandisk・WD、Intel、Samsung辺り。
  • AIF RME Babyface Pro FS
  • オーディオインターフェースは重要。もし予算があるなら、RME TotalMixが使えるものにしておくと、Voicemeeterで頑張る手間も減り、録音・再生品質も向上できる、実はコスパが良かったりします。
  • Babyface Pro FSかFireface UCXをオススメします
  • Mic SPL(Hong Kong)Limited XCM6035 + RODE VXLR+ + CANARE EC03
  • これはWM-61A相当品と言われているXMC6035というECMカプセル(50円)を用いた自作マイクを、無理矢理AIFに対応させる、という構成なので、あまりオススメはしません。ただし、割に良い音は出ます。
  • 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
    

    配信映像の再エンコ品質 #

    同様に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に対応しないようです。

    • 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
    

    エンコード無しで数百倍速のタイムラプスをつくる #

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

    録画時の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

    30fpsや60fps等の等倍速の動画として使えるものでも、後からキーフレームのみ使用することで簡単に早送りを生成することが可能。

    1fpsや1/6fps等のタイムラプス専用の動画も、全フレームを使用する場合とキーフレームのみ使用する場合の2通りの倍速が再エンコード無しで作成可能。

    因みに、全フレームがキーフレーム(ALL-I)の場合、"全フレームを使用"="キーフレームのみ使用"となる。
    ビタミンC1個分のレモンがビタミンC1個分なのと同様である。

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

    1. 設定->映像でFPS分数値を選択、分子と分母を指定。
    2. 設定->出力->録画でキーフレーム間隔を設定。
    3. 録画
    4. 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
    

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

    OBSのビルド #

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

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

    いち早く新機能にアクセスしたい場合や、拡張機能を盛り込んでビルドする時にも有効だ。

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

    1. 必要な依存関係をダウンロードする

    2. リポジトリのダウンロード
      WSLのgit等を利用してリポジトリをクローンする。
      GitHubのWebページのDownload Zipではsubmodulesが足りないので下記手順が必須。

    git clone --recursive https://github.com/obsproject/obs-studio.git
    
    1. CMakeでCEFをビルド
      cmake-gui.exeは操作が分かりづらいので、一行コマンドで覚えられるcmale.exeを使うとよい。
      • -Sには1.でダウンロード・展開したCEFのルートディレクトリを指定
      • -Bにはcmakeの出力先を指定
    cmake.exe -S "C:\Users\sbn\Downloads\cef_binary_75.1.14+gc81164e+chromium-75.0.3770.100_windows64" -B "C:\Users\sbn\Downloads\cef_binary_75.1.14+gc81164e+chromium-75.0.3770.100_windows64\build"
    cmake.exe --build "C:\Users\sbn\Downloads\cef_binary_75.1.14+gc81164e+chromium-75.0.3770.100_windows64\build"
    
    1. MSBuildでbuild\cef.slnをビルド
      必要なのは${CEF_ROOT_DIR}\build\libcef_dll_wrapper\Release\libcef_dll_wrapper.libで、cef.slnをビルドする必要はない。これがないと5.でCould not find the CEF wrapper libraryと怒られ、ブラウザソースが追加されない。
    MSBuild.exe -maxCpuCount -target:build -property:"PlatformToolset=v142;WindowsTargetPlatformVersion=10.0.19041.0;Configuration=Release;Platform=x64" "C:\Users\sbn\Downloads\cef_binary_75.1.14+gc81164e+chromium-75.0.3770.100_windows64\build\libcef_dll_wrapper\libcef_dll_wrapper.vcxproj"
    
    1. CMakeでOBSをビルド
      • -Sには2.でcloneしたリポジトリのルートディレクトリを指定
      • -Bにはcmakeの出力先を指定
      • -DDepsPathには1.でダウンロード・展開したdependencies2017\win64ディレクトリを指定
      • -DQTDIRには1.でダウンロード・展開したQt_5.10.1\msvc2017_64を指定
      • 最新のFFmpegをOBSで使用する場合、-DFFmpegPathにはmedia-autobuild_suiteでFFmpegをビルド後、includeディレクトリを指定
      • -DBUILD_BROWSERでブラウザソースを有効にし、-DCEF_ROOT_DIRに3.4.でビルドが済んでいるCEF Binaryのパスを指定
      • WindowsのCMakeでビルドする際、OBS_VERSIONを指定しないとビルドできない既知の不具合がある。一応、WSLのcmakeを途中まで走らせて取得したバージョンを-DOBS_VERSION_OVERRIDE="26.0.0-rc2-12-gb2d42c06"のように指定すればビルドできる。
    cmake.exe -S "C:\bin\obs-studio" -B "C:\bin\obs-studio\build" -DDepsPath="C:\Users\sbn\Downloads\dependencies2017\win64" -DQTDIR="C:\Users\sbn\Downloads\5.10.1\msvc2017_64" -DFFmpegPath="C:\bin\media-autobuild_suite-master\local64\include" -DCEF_ROOT_DIR="C:\Users\sbn\Downloads\cef_binary_75.1.14+gc81164e+chromium-75.0.3770.100_windows64" -DBUILD_BROWSER=yes -DOBS_VERSION_OVERRIDE="26.0.0-rc2-12-gb2d42c06"
    
    -- 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:\bin\obs-studio\build"
    
      obs-ffmpeg-mux.vcxproj -> C:\bin\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:\bin\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をビルド
      Windows 10 SDKのバージョンWindowsTargetPlatformVersionはWindows10のバージョンによって異なるので、必要に応じて対応したバージョンに書き換えるか、Visual Studio Installerの拡張機能の管理で追加する。
    MSBuild.exe -maxCpuCount -target:build -property:"PlatformToolset=v142;WindowsTargetPlatformVersion=10.0.19041.0;Configuration=Release;Platform=x64" "C:\bin\obs-studio\build\obs-studio.sln"
    

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