OBSに画質を求めるのは間違っているだろうか
TL;DR 見出しにジャンプ
この記事はOSSのOpen Broadcaster Software(OBS Studio)のチュートリアルです。
OBSは配信の品質向上、処理の軽量化に最適なアプリケーションです。たとえ録画用途であってもBandicamやShadowPlay等の他のアプリケーションを選ぶ余地はありません。
日本語の情報が少なく、OBS関連では辿り着けない情報も含めて解説するので、何かに躓いている方や更に配信・録画品質を上げたい方は必見です。
目次・Ctrl
-F
を活用してね!
更新履歴 見出しにジャンプ
日時 | 内容 |
---|---|
2019-04-16 |
|
2019-04-24 |
|
2019-04-28 |
|
2019-05-10 |
|
2019-06-21 |
|
2019-07-09 |
|
2019-10-20 |
|
2019-11-18 |
|
2019-11-19 |
|
2019-11-28 |
|
2020-02-12 |
|
2020-02-17 |
|
2020-03-03 |
|
2020-03-11 |
|
2020-05-03 |
|
2020-06-07 |
|
2020-07-31 |
|
2020-09-13 |
|
2020-09-14 |
|
2020-12-09 |
|
2020-12-10 |
|
2020-12-15 |
|
2020-12-17 |
|
2021-05-01 |
|
2021-06-28 |
|
2022-03-02 |
|
2022-03-31 |
|
2022-09-01 |
|
ダウンロードとインストール 見出しにジャンプ
OBSは開発が盛んなOSSなので、更新はチェックしておくと良い。
下記の公式サイトにインストーラとポータブル版(Zip)のURLがある。
Open Broadcaster Software | OBS
Streamlabs(OBSではない)やN AirなどのForkには本家にはない便利な機能もあるが、バージョンが古かったり録画機能が削除されているので個人的には本家がオススメ。
To those reading this thread today, we are now on great terms with Streamlabs! They moved quickly to update the name of Streamlabs Desktop and have shown their commitment to working together to build for the community.
— OBS (@OBSProject) July 4, 2022
Thank you for your ongoing support!https://t.co/Efq1kYTzGI
因みに"GitHubで見る"をクリックすれば、正式リリース前のRelease Candidate版(リリース候補版)等をいち早く試すこともできる。
ソースコードを入手し、高機能化するために自前ビルドも可能。
非公式ドキュメント(頻繁に更新されています)
Open Broadcaster Software Studio Multiplatform Help Guide [PDF] | OBS Forums
メニューバー 見出しにジャンプ
自動構成ウィザードは、実行中のマシンに合わせて適切に設定してくれる。
らしいが、何れにせよ設定し直す必要があるので勉強も兼ねて"いいえ"を選択。
ファイル 見出しにジャンプ
項目 | 説明 |
---|---|
録画を表示 | |
録画の再多重化 |
録画が最多重化されましたが、ファイルが未完成の可能性があります と表示され失敗する。 |
設定 | |
設定フォルダーを表示 | |
プロファイルフォルダーを表示 | |
常に手前に表示 | |
終了 |
編集 見出しにジャンプ
項目 | 説明 |
---|---|
全画面インターフェイス | |
ドック | |
ツールバー | |
ステータスバー | |
マルチビュー(全画面) | |
マルチビュー(ウィンドウ) |
ツール 見出しにジャンプ
項目 | 説明 |
---|---|
自動構成ウィザード |
|
Decklink Output | |
字幕 (実験的) | |
自動シーンスイッチャー | |
出力タイマー | |
スクリプト | https://obsproject.com/docs/scripting.html |
自動シーンスイッチャー 見出しにジャンプ
ワンオペやシングルディスプレイ環境でのオペレーションを求められる配信では、この自動シーンスイッチャーが大活躍する。
ウィンドウタイトルに一致する文字列や正規表現を書き、それに対応したシーンを選択すると、そのウィンドウがアクティブになった時に任意のシーンに自動で切り替えてくれる。
オーバーレイやコメント欄、ゲーム、その他ウィンドウ、背景など用途別にシーンが適切に分けられていることが前提。
項目 | 値 | 説明 |
---|---|---|
ウィンドウタイトル シーン名 | ^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$ |
||
どのウィンドウにも一致しない場合 | 切り替える: Default | |
アクティブウィンドウタイトルを確認する間隔 | 1000-2500ms | |
シーンスイッチャーは | アクティブ(停止ボタン) |
ヘルプ 見出しにジャンプ
項目 | 説明 |
---|---|
ヘルプポータル | https://obsproject.com/help |
ウェブサイト | https://obsproject.com/ |
Discordサーバーに参加 | https://discordapp.com/invite/obsproject |
ログファイル | |
クラッシュレポート | |
更新を確認 | |
OBS Studioについて | |
ファイルの整合性を確認 |
|
シーンコレクション 見出しにジャンプ
メニューバー -> シーンコレクション
シーンコレクションには、映像・音声ソースを含んだシーン、マイク・デスクトップ音声を扱うミキサーが含まれる。
配信枠や録画別に複数シーンを一括で切り替えられて便利。不必要なシーンを読み込まない状態にできるので、軽量化・安定化に役立つ。
解像度の異なるプロファイルで同一のシーンコレクションを使うことは可能。
シーン 見出しにジャンプ
ソースを纏めたものを、切り替えられる。
+で追加、-で削除。
ソース 見出しにジャンプ
選択したシーン内に映像・音声・テキスト等のソースを追加(+ボタン)する。
また、既に追加したソースの表示・非表示をここで切り替える。
項目 | 説明 |
---|---|
アプリケーション音声キャプチャ | |
ウィンドウキャプチャ | |
ゲームキャプチャ | |
シーン | |
テキスト(GDI+) | |
ブラウザ | |
メディアソース | |
映像キャプチャデバイス | |
画像 | |
画像スライドショー | |
画面キャプチャ |
|
色ソース | |
音声入力キャプチャ |
|
音声出力キャプチャ |
|
グループ化 |
アプリケーション音声キャプチャ 見出しにジャンプ
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を追加) |
|
|
オーディオインターフェースとソフトウェア(仮想WDMを追加) |
|
bozbez/win-capture-audio | OBSの拡張機能(最近のWindowsで使えるAPIを使用して、任意のアプリケーション音声をキャプチャ) |
|
「アプリケーション音声キャプチャ」ソース | OBS 28.0以降の標準機能 |
|
下図は、私が現在使用しているRME Babyface Pro FSのTotalMixが如何なるものかイメージしやすいように、WindowsやOBSの機能と関連付けて、ルーティング状態を示したもの。
音がよくてWDM沢山貰えてWindowsドライバが安定していると言ったら実質RMEくらいしかない。 AG03の音質に不満を覚えてしまった方にもオススメです。
エキスパンダー機能があるとOBS, Discord, ビデオ会議ソフト毎に感度調整しなくて済むから気になっている
ウィンドウキャプチャ 見出しにジャンプ
項目 | 値 | 説明 |
---|---|---|
ウィンドウ | 任意 |
|
キャプチャ方法 | 自動 | |
BitBit(Windows 7 以降) | ||
Windows Graphics Capture(Windows 10 バージョン 1903 以降) | ||
ウィンドウの一致優先順位 | ウィンドウのタイトルに一致する必要があります | |
タイトルに一致、そうでなければ同じ種類のウィンドウを見つけます | ||
タイトルに一致、そうでなければ同じ実行可能ファイルのウィンドウを見つけます | ||
カーソルをキャプチャ | 任意 | |
マルチアダプターの互換性 | 無効 |
ゲームキャプチャ 見出しにジャンプ
ポータブル版を%ProgramFiles%
以外にインストールした環境でUWPアプリをキャプチャするには、bin
, data
, obs-plugins
が含まれるOBS Studioディレクトリのセキュリティ権限にALL APPLICATION PACKAGES
というオブジェクト名を追加して、アクセス許可する必要がある。
項目 | 値 | 説明 |
---|---|---|
モード | フルスクリーンアプリケーションをキャプチャ |
|
特定のウィンドウをキャプチャ |
|
|
ホットキーで前面のウィンドウをキャプチャ |
|
|
ウィンドウ | ||
ウィンドウの一致優先順位 | ||
SLI/Crossfire キャプチャモード(遅い) | 無効 | |
強制的にスケーリングする | 任意 | |
透過を許可 | 任意 | |
キャプチャのフレームレートを制限する | 任意 | |
カーソルをキャプチャ | 任意 | |
アンチチート互換性フックを使用する | 有効 | |
(steamなどの)サードパーティの製のオーバーレイをキャプチャする | 任意 | |
フック速度 | 通常(推奨) | |
RGB10A2 色空間 | sRGB |
Rec. 2020(PQ) を選択し、設定 -> 詳細設定 -> 色空間でRec. 2100 (PQ) を選ぶ。 |
テキスト(GDI+) 見出しにジャンプ
設定項目が説明そのもので言及することが特にないので端折る。
テキストファイルの文字コードはUTF-8の必要がある。メモ帳等で作成したShift-JIS(ANSI)は文字化けするので注意。
ブラウザ 見出しにジャンプ
項目 | 値 | 説明 |
---|---|---|
ローカルファイル | 任意 | |
URL | ||
カスタムフレームレートを使用 | 無効 | |
OBSに音声を再ルーティングする | 任意 | |
カスタムCSS | 任意 | body { background-color: rgba(0, 0, 0, 0); margin: 0px auto; overflow: hidden; }
body { background-color: rgba(0, 0, 0, 0); margin: 0px auto; }
|
表示されていないときにソースをシャットダウン | 有効 | |
シーンがアクティブになったときブラウザの表示を更新 | 任意 | |
現在のページを再読込 | %APPDATA%\obs-studio\plugin_config\obs-browser\Cache の現在のページのキャッシュをフラッシュする。 |
Discordのオーバーレイを表示する 見出しにジャンプ
https://www.youtube.com/watch?v=fuqmGOfiMNg&t=11147s
Discordのデスクトップアプリケーションにはゲーム内にオーバーレイを表示する機能がある。
しかし、それが表示されない環境であったり、表示したくないが配信に載せたい場合に役立つAPIをDiscordが用意してくれている。
|
-
デスクトップ版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を生成できるウェブツールがある。
画像のようなデザインにしたい場合は、以下のCSSを使用します(chatv2のみでは対応できない部分の修正も含まれます)。
配信に友人視点の映像を載せる 見出しにジャンプ
友人に限定公開または公開でライブ配信して貰い、そのURLを"ブラウザ"ソースに取り込めば良い。
ただし、許可なく他人の動画を使用する権利はないことだけ要注意だ。垢BANチキンレースをしたい方はどうぞ。
- 以下の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'); })(); }
- "ブラウザ"ソースを追加する。
- URLを入力し、幅と高さをキャンバス解像度に合わせる。
ブラウザ内の操作は ソースの右クリックメニュー->対話 で行えます。
メディアソース 見出しにジャンプ
OBS単体で動画や音声を流せる便利なソース。アプリケーション音声キャプチャ同様に希少なデスクトップ音声を汚さないのも大きな利点だ。
他にもカラーバーやゲーミング背景、ピー音を生成できたり、BGMを連続再生したり簡易な動画編集ができる。
項目 | 値 | 説明 |
---|---|---|
ローカルファイル | 有効 |
# 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
inpoint やoutpoint を指定するとカット編集された動画が再生される# これ忘れない
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 1 2 ... inpoint 20 outpoint 29
|
無効 | 現在利用可能なフォーマット(ビルドに依存)(空欄で自動選択): aa, applehttp, apng, asf, concat, flv(RTMP), gif, image2, mov, mp4, 3gp, QuickTime, mpegts, mpjpeg... |
|
入力 |
lavfi |
|
smptehdbars=size=3840x2160:rate=1 |
|
|
sine=frequency=1000:sample_rate=48000 |
|
|
colorspectrum=size=2560x1440:rate=60 colorspectrum=size=2560x2:rate=60 |
|
|
testsrc=size=1920x1080:rate=30 |
||
testsrc2=size=1920x1080:rate=30 |
||
color=Green:size=1280x720:rate=1 |
|
|
フォーマット | lavfi |
-f |
繰り返し | 任意 | |
ソースがアクティブになったとき再生を再開する | 任意 | |
可能な場合ハードウェアデコードを使用 | 有効 | |
再生終了時にソースを非表示にする | 任意 | |
アクティブでないときにファイルを閉じる | 有効 | |
速度(パーセント) | 任意 | |
YUV色範囲 | 自動 | |
アルファ値を線形空間に適用する |
|
|
FFmpeg オプション |
-i の前に記述する入力オプション。FFmpegカスタム出力の映像エンコーダ設定と同様にkey=value key=value... 形式で指定する。
|
|
rtsp_transport=tcp rtsp_flags=prefer_tcp |
|
|
framerate=60 |
|
映像キャプチャデバイス 見出しにジャンプ
項目 | 値 | 説明 |
---|---|---|
デバイス | 任意 | |
表示中でない場合非アクティブ化する | 有効 | |
解像度/FPSタイプ | カスタム | |
解像度 | 任意 | |
FPS | 出力FPSに合わせる | |
YUV色空間 | 自動 | |
YUV色範囲 | 自動 | |
音声出力モード | 音声のみをキャプチャ |
Video Capture Devices with HDR support | OBS
BlackMagick DeckLinkはOBS、FFmpegと親和性が高いので個人的にオススメなキャプチャボード。
画像 見出しにジャンプ
項目 | 値 | 説明 |
---|---|---|
表示中でない画像は読み込まない | 有効 |
ソースの右クリックメニュー 見出しにジャンプ
ソースやプレビューウィンドウを選択し右クリックすると表示されるメニューです。
項目 | 説明 |
---|---|
選択したアイテムのグループ化 |
|
コピー |
|
貼り付け(参照) |
|
貼り付け(複製) |
|
フィルタをコピーする/貼り付ける |
|
色の設定 |
|
名前を変更 |
|
削除 |
|
順序 |
|
変換 |
|
ミキサーを非表示 |
|
インターレース解除 |
|
出力サイズ変更(ソースサイズ) |
|
スケールフィルタ |
|
全画面プロジェクター |
|
ウィンドウプロジェクター |
|
対話 |
|
フィルタ |
|
プロパティ |
|
変換 見出しにジャンプ
ソースの拡大/縮小、位置合わせをピクセル単位で行います。
プレビューウィンドウ上で赤い枠を操作し同様の操作を直感的に行えますが、思い通りの位置にならなかったり、適切でないスケーリングによってぼやける場合があるため、こちらを使用することを推奨します。
ぼやけたり滲まないよう、拡大/縮小を行う場合は縦横が2xや1/2になるようにしましょう。スケールフィルタが"ポイント"の場合のみ、一切滲むことなく変換できます。
慣れればスタジオモードを使用しなくても、ソースの位置調整の様子が配信に映らないよう操作できます。
※OBS 25.0から、ソースのロック(鍵マーク)を解除しないと"変換"の大半の操作ができなくなっています。
変換をリセット 見出しにジャンプ
ソースの拡大/縮小、回転や位置合わせの内容全てをリセットし、左上に元の大きさで戻します。
変換の設定を弄る前に、必ず実行しておくと良いでしょう。
変換の編集 見出しにジャンプ
シーン アイテム 変換 | |
---|---|
項目 | 説明 |
位置 | "位置揃え"の角の座標 |
回転 | "位置"を中心に回転 |
大きさ | ソースの大きさ |
位置揃え | "位置"・"回転"の起点を赤枠の点 ■ から選択 |
既定の状態
左上を起点に"位置"で横軸64px・縦軸48pxの余白を設け、"大きさ"で2xした例。
スケールフィルタを"ポイント"に設定し、1/2や2倍の値に拡大縮小すると、滲みを軽減できます。
例: 640x360 -> 1280x720
シーン アイテム 変換 | ||
---|---|---|
項目 | 説明 | |
バウンディングボックスの種類 | 境界なし | バウンディングボックスがない既定の状態 |
境界まで引き伸ばす | ソースの縦横比を無視して、指定した大きさに引き伸ばす | |
境界の内側に合わせる | ソースの縦横比を維持して、幅・高さのいずれも指定した大きさからはみ出さないように拡大縮小する | |
境界の外側に合わせる | ソースの縦横比を維持して、幅・高さの片方だけは指定した大きさからはみ出さないように拡大縮小する | |
境界の幅に合わせる | ソースの縦横比を維持して、幅が常に指定した値に合うように拡大縮小する | |
境界の高さに合わせる | ソースの縦横比を維持して、高さが常に指定した値に合うように拡大縮小する | |
最大サイズのみ | "大きさ"の値を維持して、余白の大きさを指定する | |
バウンディングボックスの配置 | ||
バウンディングボックスのサイズ |
右下に配置したいので、"位置揃え"を右下、"位置"はキャンバスサイズに合わせて1920,1080。
※右上なら1920,0、左下なら0,1080
1280x720のソースに対し、1440x810のバウンディングボックスで余白をつくる。
4K2K 3:2のソースの縦横比を維持して、左右に黒帯を追加する例。
画面に合わせると同じ。
4K2K 3:2のソースの縦横比を維持して、上下をクロップする例。
シーン アイテム 変換 | |
---|---|
項目 | 説明 |
クロップ | ソースの余計な部分を上下左右から相対位置で切り取る |
バウンディングボックスで余白を作っている場合、サイズの調整が必要になる。
画面に合わせる 見出しにジャンプ
画面の大きさに合わせて拡大/縮小します。
拡大/縮小のアルゴリズムは下記の"スケールフィルタ"に従います。
後述の"スケールフィルタ"が"ポイント"の場合のみ、一切滲むことなく変換できます。
画面中央に置く 見出しにジャンプ
ソースの縦横比・大きさを保持して、キャンバスの中央に配置します。
フィルタ 見出しにジャンプ
複数のフィルタを重ね掛けできます
エフェクトフィルタ 見出しにジャンプ
項目 | 説明 |
---|---|
LUTを適用 | |
NVIDIAバックグラウンド除去 |
NVIDIA Studio Driver 462.46, Game Ready Driver 465.89, NVIDIA RTX Enterprise Driver 462.59 以上、Video Effects SDKが必要 |
イメージ マスク/ブレンド | |
カラーキー | |
クロップ/パッド | |
クロマキー | |
シャープ | |
スクロール | |
スケーリング/アスペクト比 | |
レンダリング遅延 | |
色補正 |
LUTを適用 見出しにジャンプ
LUTを使うと、単にエフェクトフィルタの色補正で彩度や明度を弄るより格段に優れた色調整が可能。
OBS 25.0でDavinci Resolveで作成できる3D LUT.cube
に対応した。
— しばにゃん (@shibanyan_1) August 29, 2020
PhotoshopやGIMPを駆使してOBS用のLUTを作成するレガシーな手順:
- OBSのルートディレクトリ内の
\data\obs-plugins\obs-filters\LUTs\original.png
をLUTを適用したいシーンのスクリーンショットと合成
- GIMPやDavinci Resolveでカラーグレーディング
- 合成したLUTの部分のみを切り出し、OBSのApply LUTフィルタに登録
スケーリング/アスペクト比 見出しにジャンプ
スケールフィルタ | |
解像度 |
音声フィルタ 見出しにジャンプ
推奨フィルタ (適用順) | ||
---|---|---|
項目 | 説明 | |
ノイズゲート Noise Gate |
|
|
閉鎖閾値 Close Threshold |
0.00 dB に、閉鎖閾値を最小-96.00 dB にし、開放閾値を適切に声が入るまで小さくしてから、閉鎖閾値を大きくする。
|
|
開放閾値 Open Threshold |
||
動作開始時間 Attack Time |
25 ms では、開放閾値に余裕がなく語頭にアクセントがないと子音が掠れてしまう場合がある。5 ms がオススメだが、実際に聞いてブチブチ言わないか確認が必要。 |
|
保持時間 Hold Time |
200 ms で問題ない。 |
|
解除時間 Release Time |
150 ms では語尾が不自然に切れる場合があるので、SNRが大きい環境なら1000 ms (1秒)に設定するとよい。 |
|
ノイズ抑制 Noise Suppression |
|
|
方式 |
|
|
Suppression Level |
|
|
Suppression Intensity |
|
|
リミッター Limiter |
|
|
閾値 Threshold |
|
|
Attack |
|
|
リリースタイム Release |
|
|
コンプレッサー Compressor エキスパンダー Expander |
Compressor | Groove Agent SE | steinberg.help |
|
プリセット Presets |
|
|
比率 Ratio |
10.00:1 、つまりThresholdより大きい音はAttackを経て1/10に減衰される。 |
|
閾値 Threshold |
|
|
アタックタイム Attack |
1000ms 程度にすると語尾が切れなくてよいかもしれない。 |
|
リリースタイム Release |
||
出力ゲイン Output Gain |
|
|
サイドチェーン/ダッキングソース Sidechain/Ducking Source |
|
|
Detection |
|
|
ゲイン Gain |
|
|
映像の遅延 (非同期) Video Delay (Async) |
|
|
極性を反転する Invert Polarity |
|
|
VST 2.x プラグイン | VST 2.x Plug-in |
|
キャンバス解像度が変わってもレイアウトが崩れない相対的なソースをつくる 見出しにジャンプ
キャンバス解像度がプロファイルの切り替えによって変更されると、折角つくったレイアウトも崩れてしまう。
上記にあるように、キャンバス解像度と出力解像度は揃えるのが好ましい。
よって、共通のシーンコレクションを異なる解像度のプロファイルで使用し、配信と録画を異なる解像度で行いつつ同じシーンコレクションを使用することを諦めている方も多いはず。
実はソースに対して変換・選択したアイテムのグループ化・スケールフィルタの組み合わせによって相対レイアウトを実現できる。
- 変換のバウンディングボックスでキャンバス解像度の縦横比に合わせる
項目 | 値 | 解説 |
---|---|---|
バウンディングボックスの種類 | 境界の内側に合わせる |
|
最大サイズのみ |
|
|
バウンディングボックスの配置 | 中央 | |
バウンディングボックスのサイズ | 1280x720 1920x1080 2560x1440 3840x2160 |
|
- 画面端に表示するコメント欄等のオーバーレイ表示
前述のように、オーバーレイそれぞれが16:9になるようにバウンディングボックスで管理してもよいが、オーバーレイものは解像度がまちまちなので直観的ではない。
ダミーの16:9の色ソースを置いて(非表示にし)、2.や3.を行ってからグループ内のソースの位置を調整するとよい。
-
1つあるいは複数のソースを選択し、選択したアイテムのグループ化する
このとき、それぞれのソースの最終的なサイズ(バウンディングボックスのサイズ)が同じでないと、一番大きなソースに合わせてレイアウトが崩れてしまう。
グループを分けるか、1.の時点でリサイズを行って解像度を揃える。 -
グループ全体にスケールフィルタでキャンバス解像度を適用する
キャンバス解像度の異なるプロファイルを切り替えてみましょう。あら不思議、全くレイアウトが変わりません。
音声ミキサー 見出しにジャンプ
設定->音声で設定したオーディオソースが表示される。
歯車又は右クリックでオーディオルーティング等の各種設定項目が表示される。
項目 | 説明 |
---|---|
すべて再表示/非表示 | 音声ソースの表示/非表示を切り替える |
名前を変更 | 表示名を変更できる |
フィルタをコピーする/貼り付ける | "フィルタ"で設定した項目をコピー&ペースト出来る |
垂直レイアウト | 既定では横だが、縦のレベルメータ表示に変えることができる。多くの音声デバイスを使用する人にオススメ。 |
フィルタ | オーディオフィルタを使用できる。下記参照。 |
プロパティ | ここでもデバイスの選択を行える。 |
オーディオの詳細プロパティ | オーディオルーティングやパンの設定が出来る。下記参照。 |
フィルタ 見出しにジャンプ
#音声フィルタを参照。
オーディオの詳細プロパティ 見出しにジャンプ
項目 | 説明 |
---|---|
名称 | |
音量(%) | |
モノラルにダウンミックス | |
バランス | |
同期オフセット | |
音声モニタリング | |
トラック |
Advanced Recording Guide With Multi Track Audio · obsproject/obs-studio Wiki |
シーントランジション 見出しにジャンプ
シーン切り替え時に様々なトランジションを適用できる。
コントロール 見出しにジャンプ
項目 | 説明 | |
---|---|---|
配信開始 |
|
|
録画開始 |
|
|
⏸(一時停止) |
|
|
スタジオモード |
|
|
リプレイバッファ開始 |
|
|
仮想カメラ開始 |
\data\obs-plugins\win-dshow\virtualcam-install.bat で有効化 |
|
⚙(歯車) | 出力の種類 |
|
出力の選択 |
|
|
設定 | ||
終了 |
統計 見出しにジャンプ
ここでは何が原因で配信がカクついているのかの原因の特定を行える。
OBSが重い、配信がカクつく、それらは全てここの値に現れる。統計を表示しパフォーマンスをモニターすることが快適な配信への近道なので、表示 -> ドックで必ず追加しておきましょう。
レンダリングラグが原因で逃したフレーム 見出しにジャンプ
- シーン切り替え時にカウントが増える程度なら問題ない
- GPU使用率が張り付いてカクつくなら、ゲーム側の画質設定を妥協するかOBSを管理者で起動する
エンコードのラグが原因で逃したフレーム 見出しにジャンプ
-
x264などのソフトウェアエンコーダを使っていてCPU使用率が高く、カクつく
ハードウェアエンコーダを使おう -
ラップトップをバッテリー駆動させていてカクつく
ACアダプタに繋ごう -
設定がGPUのスペックに見合っていない
- エンコーダの設定
各エンコーダの解説をよく読んで、品質プリセットや主観品質向上・先読み系のパラメータを妥協してみよう - 最適化(texture-based encoding)
古い実装やFFmpegへフォールバックしていないか設定, ログファイルを確認- AMD HWのAMF/FFmpegオプション
- NVIDIA NVEncのGPU数
- 設定 -> 詳細設定のカラーフォーマット
- 解像度
UHDやWQHDは、FHDやHDに落としてみよう - 色域
HDRは高負荷なので、SDRに妥協しよう - フレームレート
60fpsから30fpsに落そう
- エンコーダの設定
-
PCを新調する(GPU選びのポイント, 2枚刺しは無意味?)
ドロップフレーム(ネットワーク) 見出しにジャンプ
ネットワークが原因のドロップは、高性能なPCに買い替えれば済むような単純なものではなく、環境によってはどうにもならない。
この値が増えるとき、上り回線の速度にビットレートが収まっていないので、各プラットフォームの推奨値やビットレートの解説を参照し、環境に見合ったビットレートに設定する。
-
まず配信プラットフォームのせいにしない
YouTubeやTwitchが障害を起こしていることは稀で、殆どの場合配信者・視聴者側の環境に問題がある。この表現は好きではないが「おま環」。
Downdetectorは特定サービスでの障害発生を表すものではない。
Google Workspace ステータス ダッシュボード
Twitch Status
NTT東日本(フレッツ)/工事故障情報
NTT西日本(フレッツ)/工事・故障情報
工事・障害情報(transix)
サポート情報 | 日本ネットワークイネイブラー株式会社(v6プラス)
OCN バーチャルコネクトサービスの工事・故障情報一覧 | NTT Com お客さまサポート
障害・メンテナンス情報 | インターネット・固定電話 | ソフトバンク
アルテリア・ネットワークス株式会社 | 障害情報
障害情報 | お客さまサポート | コミュファ光
Sony Network Communications 障害・メンテナンス情報 -
できれば有線で繋ぐ
ネットワークドロップが発生しないならWi-Fiでも構わないが、性質上常に一定の遅延・帯域で通信できる保証はないため、配信には向かない。 -
LANケーブルの問題?
稀によくあるが、LANケーブルが現在契約中の回線品質を下回っている場合がある。既に回線状況がよい方が無頓着だった場合に限り改善を期待できる。
断線が疑わしいLANケーブル、4つしか結線されていない(100Mbpsリンク)Cat5, 5eもどきなケーブルは、Cat5e-Cat6AのできればきしめんではないUTPケーブルに交換しよう。
家電量販店にある自称Cat7ケーブルはまだ消費者庁に目を付けられないないようだが、機能用接地のないSTPケーブルは逆にノイズを拾うアンテナとなり、通信不良の要因となるのでお勧めしない。
JEITA 情報配線システム標準化専門委員会 「LAN配線の疑問にお答えします」(2018年)
結局、STPはダメなの? UTPでいいの? LANケーブルの専門家に聞く【イニシャルB】 - INTERNET Watch -
スピードテストは参考程度に、速度ではなく遅延をみる
ベストエフォート回線では多かれ少なかれ回線速度は変動し、1-2桁Mbpsの環境ではその傾向が顕著になる。
5Mbpsでてるから5000Kbpsで配信できることはなく、TCPのオーバーヘッドも含めると実効スループットがスピードテストの半分なんてザラだ。
中には設備投資を怠り、ゴールデンタイムでパケロス・帯域制限からの輻輳制御発生によりRTT・スループットが大きく低下して、ゲームも配信もままならないISPもあると聞く。
FFXIV回線遅延やパケットロスの確認と情報提供について | FINAL FANTASY XIV, The Lodestone- サービス情報サイト(NTT東日本) -> フレッツ光 通信速度測定
- フレッツ速度測定サイト(NTT西日本)
インターネットではなく、NGN閉域網の速度計測を行うことで、輻輳の原因がISPなのかフレッツ網・ラストワンマイルかを切り分けできる。
フレッツ系の回線でサービス情報サイトへの接続設定が必要。 - iNoniusスピードテスト
おすすめ - Speedtest
サーバ/地域によっては参考にならない - fast.com -> 詳細を表示
輻輳に有利な複数コネクションかつIPv6の結果を表示するため、単一コネクションで多くの場合IPv4を使う配信の参考にはならない。
参考になるとすれば単位がmsのRTT(いわゆるping値)。例えば、設備投資を怠っているISPや小規模なISP、東京・大阪と距離がある地域、集合住宅のVDSL配線方式では値が大きくなり、配信に不利。
News & Views コラム:オンラインゲームとインターネットの遅延 – JPNIC Blog
-
ビットレートは上り速度 - 20%も使えないと思ったほうがよい
ネットワークに関するヒント - YouTube Help
は20%の余剰ネットワーク帯域を推奨しているが、日本のインターネット環境を鑑みると半分は見積もったほうがよいと思う。
"自動構成ウィザードを表示する"を有効にしてプロファイルを新規作成すると、私の推奨値よりは低めになるが、回線に見合ったビットレートを知ることができる。 -
VBRを使い、最大ビットレートを制限する
H.264のCBRはネットワーク帯域を無駄遣いするため、VBRを使うと幾分かマシな品質で配信できる場合がある。 -
フレッツ系ならIPv4 over IPv6が使えるようにする
フレッツのPPPoEはNNI/NTEが輻輳しがちで、IPv4アドレス枯渇の流れから設備投資はIPv4アドレス共有に集中しており、使える契約・Wi-Fiルータに刷新しておくと配信が安定する。
IPv4 over IPv6トンネルはPPPoEに比べて負荷が高く、VoIPやWebRTC, QUICといった単純なスループットでなくNAPT性能を必要とする用途が増えてきていることや、Wi-Fi 6等の高負荷な処理も一任される状況なので、ある程度のクラスのルータを購入すべき。
家庭用NAPT箱でお勧めはAterm。
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ウィンドウを非表示にする | 有効 | ||
出力 | 配信を開始するときに確認ダイアログを表示する | 有効 | |
配信を停止するときに確認ダイアログを表示する | 有効 | ||
録画を停止するときに確認ダイアログを表示する | 有効 | ||
配信時に自動的に録画 | 任意 |
|
|
配信時に自動的にリプレイバッファを開始 | 任意 |
|
|
プロジェクター | 終了時にプロジェクターを保存する | 有効 | |
スタジオモード | ダブルクリックしたときにシーンに遷移 | 有効 | |
縦長/垂直レイアウトを有効にする | 任意 | ||
プレビュー/番組ラベルを表示する | 無効 |
配信 見出しにジャンプ
配信プラットフォームを選択する。
項目 | 値 | 説明 |
---|---|---|
サービス | YouTube - RTMPS |
ライブ管理画面を使って YouTube でライブ配信する方法 - YouTube RTMPS を使用して配信を暗号化する - YouTube ヘルプ HLS 配信を設定する - YouTube ヘルプ |
YouTube - HLS | ||
カスタム |
rtmp://a.rtmp.youtube.com/live2 rtmps://a.rtmps.youtube.com/live2 RTMPS を使用して配信を暗号化する - YouTube ヘルプ Twitch Streamers - Twitch Ingest Recommendation |
|
サーバー | Primary YouTube ingest server |
|
ストリームキー(リンク) |
|
|
配信サービスの推奨設定事項を無視する | 有効 |
|
出力 見出しにジャンプ
配信 見出しにジャンプ
配信開始で選ばれるエンコード設定。
品質、パフォーマンスの観点から上から順に使えるものを選択する。
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 |
|
出力をリスケールする | 無効 | |
エンコーダ | NVIDIA NVENC H.264 (new) |
Windows 8や10の古いバージョンを使っていて、要件を満たしておらずNVEnc(new)が選べない場合もある。 |
レート制御 | VBR |
Choose live encoder settings, bitrates, and resolutions - YouTube Help 配信の推奨事項 - Twitch ビットレート = 最大ビットレート を目指してレートコントロールするVBR(可変ビットレート, YouTubeストリームキーのことではない)。低いビットレート配分で済むシーンではネットワーク帯域を無駄遣いし、高いビットレートが必要なときVBVに沿ってわざわざ品質を落とすので、個人的にはVBRを推したい。 |
ビットレート |
8000-12000 Kbps 12000-18000 Kbps 24000-34000 Kbps 6000 Kbps |
|
最大ビットレート | ビットレート + 2000, 4000 Kbps |
Twitch Streamers - Twitch Video Encoding/Bitrates/And Stuff H.264の性質上、配信プラットフォーム側で多少のビットレートスパイクは許容されるから、VBRでも最大ビットレートを控えめに設定すれば何ら問題ない。 |
キーフレーム間隔(秒) | 2 s |
|
プリセット | Quality Low-Latency Quality Low-Latency |
|
Profile | high |
|
Look-ahead | 無効 |
|
心理視覚チューニング | 有効 |
出力開始に失敗しました あるいはNVENC コーデックを開けませんでした と配信開始・録画開始に失敗するとき、無効。OBS Log Analyzerやログファイルを確認しつつ改善しない場合、
|
GPU | 0 |
|
最大Bフレーム | 2 |
3 に増やしても良いが、NVEnc H.264では2 が最も効率がよく、0 や4 は非効率。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 を選ばないと表示されない |
|
NVIDIA NVENC H.264を参照 |
|
プロファイル | main10 |
P010 (YCbCr 4:2:0 10-bit Rec. 709)を選んではじめて10bit出力される
I444 (YCbCr 4:4:4 8/10-bit Rec. 709)はRExtなので注意。 |
|
NVIDIA NVENC H.264を参照 | 0 |
AMD HW H.264 見出しにジャンプ
AMD製APUやRadeonなどのdGPUで使用できるハードウェアエンコーダ。
アニメ調な絵が得意なNVEncに対して、AMD Advanced Media Framework(AMF)は実写のディテールを保った品質が特徴で、配信でH.264を使用する分には十分な品質だった。
項目 | 値 | 説明 |
---|---|---|
エンコーダ | AMD HW H.264 | |
レート制御 | NVIDIA NVENC H.264を参照 | |
ビットレート | ||
キーフレーム間隔 (0=自動) | ||
プリセット | Quality |
Balanced やSpeed を選択する。 |
プロファイル | NVIDIA NVENC H.264を参照 | |
最大Bフレーム B Frames |
2 s |
AMD Re-introduces the B-frame! - Code Calamity |
AMF/FFmpegオプション |
key=value key=value... 形式で指定する。
AMF/AMF_Video_Encode_API.pdf at master · GPUOpen-LibrariesAndSDKs/AMF |
|
BPicturesPattern=3 |
|
|
PeakBitrate=12000000
|
12M = 12000K = 12000000bits 相当。AMF_VIDEO_ENCODER_PEAK_BITRATE はビットレートの1.5倍に固定されているためである。 |
|
RateControlPreanalysisEnable=true または HevcRateControlPreAnalysisEnable=true |
RateControlPreanalysisEnable=false , EnableVBAQ=false にする。AMF_VIDEO_ENCODER_RATE_CONTROL_PREANALYSIS_ENABLE と名前が似ているEnablePreAnalysis=false (AMF_VIDEO_ENCODER_PRE_ANALYSIS_ENABLE )は古い先読み実装で、使わない |
|
EnableVBAQ=true または vbaq=1 |
vbaq=1 FFmpegオプション形式で記述すると、何らかの原因で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 |
AMD HW H.265 (HEVC) 見出しにジャンプ
項目 | 値 | 説明 |
---|---|---|
エンコーダ | AMD HW H.265 (HEVC) |
YouTube - HLS を選ばないと表示されない |
|
NVIDIA NVENC H.264を参照 | |
|
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 |
QSV H.264 エンコーダ では 10ビット エンコードを実行できません と怒られる場合は、設定 -> 詳細設定でカラーフォーマットにNV12を選択する |
ターゲットの使用法 | medium |
|
プロファイル | NVIDIA NVENC H.264を参照 | |
キーフレーム間隔(0=自動) | ||
レート制御 | LA_VBR |
|
ビットレート | NVIDIA NVENC H.264を参照 | |
最大ビットレート | ||
遅延 | low |
async_depth , 先読み深度look_ahead_depth を設定する。先読みはレート制御でLA_CBR, LA_VBR, LA_ICQを選んだときに有効。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を参照 | |
主観的なビデオ強化 | 有効 |
|
アップル VT H264 ハードウェアエンコーダ 見出しにジャンプ
MacOSではこちらを選ぶしかないようです。
項目 | 値 | 説明 |
---|---|---|
エンコーダ | アップル VT H264 ハードウェアエンコーダ |
選択したカラーフォーマットは Apple VT H.264 エンコーダ ではサポートされていません と怒られる場合は、設定 -> 詳細設定でカラーフォーマットにNV12を選択する |
ビットレート | NVIDIA NVENC H.264を参照 | |
ビットレート制限 | 有効 | |
最大ビットレート | ||
最大ビットレート ウィンドウ(秒) | 1.50 |
1.00 とCBRに近いレート制御となる。ビットレートあたりの品質が低下する。 |
キーフレーム間隔 (0=自動) | NVIDIA NVENC H.264を参照 | |
プロファイル | ||
B フレームを使用する |
録画 見出しにジャンプ
録画開始で選ばれるエンコード設定。
カスタム出力 (FFmpeg)でURLに出力すれば配信になる。
因みにYouTubeの推奨値。あくまでもアップロード用の最終出力の推奨値であり、編集前のソースとして使う場合はこの値は推奨されない。
アップロードする動画におすすめのエンコード設定 - YouTube ヘルプ
項目 | 値 | 説明 | |
---|---|---|---|
出力モード | 詳細 | ||
種別 | 標準 |
|
|
種別 | カスタム出力 (FFmpeg) |
|
|
FFmpegの出力の種類 ファイルパスまたはURL |
ファイルに出力 | ||
URLに出力 |
https://a.upload.youtube.com/http_upload_hls?cid=STREAMKEY&copy=0&file=playlist.m3u8 |
||
スペースなしのファイル名を生成 | 有効 | ||
コンテナフォーマット | mpegts mkv(matroska) mp4 |
mpegts は録画中にデコード(再生)やエンコードが可能になり、OBSがクラッシュしても動画が破損しない。一般的にはデジタル放送やライブストリームに使用される形式。MPEG-2 ビデオ拡張機能 - Microsoft Store Apps mpegts に対応していないため、編集前に録画の最多重化が必要。 |
|
マルチプレクサーの設定(ある場合) | |||
strict=-2 |
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 |
|
||
movflags=frag_keyframe+empty_moov |
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 |
hls_time=4 までが推奨されるが、6や8にした方が安定した。STREAMKEY はYouTubeのストリームキーに置き換える。 |
||
映像ビットレート | 0 Kbps | ||
キーフレーム間隔(フレーム) | 15-60 | ||
出力をリスケールする | 無効 | ||
映像エンコーダ 映像エンコーダ設定(ある場合) |
hevc_nvenc | ||
h264_nvenc | |||
h264_qsv |
|
||
utvideo | |||
dnxhd | |||
x264 | |||
SVT-AV1 | |||
AOM AV1 | |||
すべてのコーデックを表示(潜在的に互換性がない場合でも) | 有効 | ||
音声ビットレート | 320 | ||
音声トラック | オーディオの詳細プロパティに対応したトラックを有効にする。#出力の音声に関する項を参照。 | ||
音声エンコーダ | aac |
| |
libfdk_aac |
|
||
flac |
|
||
pcm_s16le pcm_s24le pcm_s32le |
|
||
音声エンコーダ設定(ある場合) | aac_coder=twoloop |
hevc_nvenc 見出しにジャンプ
この設定を使用して録画すれば、ShadowPlayの1/10のファイルサイズで同等以上の品質を得られるでしょう。
項目 | 値 | 説明 |
---|---|---|
種別 | カスタム出力 (FFmpeg) | |
映像ビットレート | 0 Kbps | 0 Kbps にして無視してもらう。 |
映像エンコーダ | hevc_nvenc |
|
映像エンコーダ設定(ある場合) | 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 |
init_qpI=21 init_qpP=21 init_qpB=23 の品質が十分/不十分で、ファイルサイズが大きいと感じたら、上記で組み合わせを幾らか列挙しているので参考にされたし。
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 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=2 Bフレームは世代毎にサポートされている値を使うか、編集に差し支える場合はbf=0 に設定する。 |
preset=lossless tune=lossless profile=main |
|
h264_nvenc 見出しにジャンプ
項目 | 値 | 説明 |
---|---|---|
種別 | カスタム出力 (FFmpeg) | |
映像ビットレート | 0 Kbps | hevc_nvencを参照 |
映像エンコーダ | h264_nvenc |
|
映像エンコーダ設定(ある場合) | 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 |
rc=vbr cq=23 配信では、レート制御にVBRのビットレート指定モードを使用したが、録画にはVBR CQモード(固定品質)が適している。値を大きくするとファイルサイズが小さくなる代わりに品質が落ちる。 |
配信向けの設定値は負荷を掛けずに同時配信する方法を参照。
h264_qsv 見出しにジャンプ
項目 | 値 | 説明 |
---|---|---|
種別 | カスタム出力 (FFmpeg) | |
映像ビットレート | 0 Kbps | hevc_nvencを参照 |
映像エンコーダ | h264_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 |
dnxhd 見出しにジャンプ
Premiere ProやDavinci Resolveなど幅広い編集ソフトで使用できる扱いやすい中間コーデック。編集前ソースとして最適。
録画負荷はまあまあ。Core i7 8700では4K30 DNxHR SQは可能で、60fpsは盛大にドロップした。
項目 | 値 | 説明 |
---|---|---|
種別 | カスタム出力 (FFmpeg) | |
コンテナフォーマット | mov mxf |
|
映像ビットレート | 0 Kbps |
|
キーフレーム間隔(フレーム) | 1 | |
映像エンコーダ | dnxhd | |
映像エンコーダ設定(ある場合) | profile=dnxhr_444(yuv444p10le) profile=dnxhr_hq(yuv422p) profile=dnxhr_sq(yuv422p) profile=dnxhr_lb(yuv422p) |
|
音声ビットレート | 2304 Kbps | |
音声エンコーダ | pcm_s24le |
以下の表は
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 | |
映像エンコーダ設定(ある場合) | 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 |
かなり重たい。 |
SVT-AV1 見出しにジャンプ
--enable-libsvtav1
ffmpeg -h encoder=libsvtav1
AOM AV1 見出しにジャンプ
--enable-libaom
ffmpeg -h encoder=libaom-av1
ストリームエンコーダを使用 見出しにジャンプ
ストリームエンコーダを使用すると、負荷が増やさずに配信と同時に録画できる。
品質劣化を気にして配信プラットフォーム側のアーカイブ機能に任せず、配信と同時に手元に録画したいが、同時エンコードはしたくない人向け。
配信中のリプレイにも使える。
項目 | 値 | 説明 |
---|---|---|
種別 | 標準 |
|
録画フォーマット | mkv |
|
音声トラック | 音声ミキサーと設定 -> 音声に登録されている分チェックする |
|
エンコーダ | (ストリームエンコーダを使用) |
|
負荷を掛けずに同時配信する方法 見出しにジャンプ
現在OBSは同時配信を正式にサポートはしていません。
様々な方法がありますが、より効率的な方法を解説します。
一般的に知られている方法は、OBSを多重起動したり、OBSの配信から1つ、録画(FFmpegカスタム出力)から1つという方法ですが、
これは2つエンコード(及びデコード)が走るのは極めて無駄であり、GeForceの限られたNVEncセッション数(3)を浪費するため、お勧めできません。NVENCエラー: 同時セッションが多すぎます
開発の盛んな同時配信プラグインもあるようです:
OBS複数サイト同時配信プラグイン(ソースコード付き) - 雷鳴の日記
sorayuki/obs-multi-rtmp: OBS ≧ 26.1用複数サイト同時配信プラグイン
今回解説するのは、FFmpegカスタム出力でエンコードしローカルポートへ出力、その出力をffmpegに入力してエンコードせず複数出力するという手法です。
これなら上り回線が許す限り、2つ3つと同時配信が可能になります。
- まずは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 |
- コマンドプロンプト(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は同時配信を認めていない
- OBSで
録画開始
を押下。FFmpegカスタム出力を使うので配信開始
じゃないよ! - ffmpegが何らかのストリームを受け取ってるような表示になったら成功。
- OBSで
録画停止
を押下すると、勝手にffmpegの処理も止まります。
音声 見出しにジャンプ
項目 | 値 | 説明 | |
---|---|---|---|
トラック1 | 音声ビットレート | 320 |
配信の推奨事項 Twitch ライブ エンコーダの設定、ビットレート、解像度を選択する - YouTube ヘルプ |
名称 | 任意 | ||
トラック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エンコーダ
iTunesを入れる必要がない環境でもAppleのAACエンコーダを使うために、旧バージョンのiTunesのインストーラからAppleApplicationSupportのインストーラだけを取り出してインストールする方法もある。
OBS-Studio: Enable CoreAudio AAC encoder (Windows) | OBS Forums
Troubleshooting issues with iTunes for Wi… - Apple Community
- Appleのコミュニティフォーラムから旧バージョンの
iTunes 12.9.1.4 for Windows (64-bit)
インストーラをダウンロード
https://itunes.apple.com の previous versions of iTunes でもよい iTunes64Setup.exe
は実行しない- 7-Zip等を利用して
iTunes64Setup.exe
を展開しAppleApplicationSupport64.msi
を取り出す。
7z x iTunes64Setup.exe
AppleApplicationSupport64.msi
を実行してApple AACエンコーダをインストール
OBSはiTunesを入れると音質が劇的に向上する - 科学無謬論 - Medium
根津ちずも🧀さんはTwitterを使っています 「OBSの音質わるいっぽい問題、どうやら元から導入されてるFFmpeg AACエンコーダが原因っぽくて... / Twitter
リプレイバッファ 見出しにジャンプ
リプレイバッファを実行しながらゲームをプレイしておけば、名場面の後に保存を押すことで、ストレージ容量を気にせず動画を残せる。
バックグラウンドでエンコードが常に実行され、保存する秒数分システムメモリ上に直近の動画が置かれる仕組みなので、あくまでも名場面だけをストレージに残す目的で、負荷軽減の機能ではない。
ShadowPlay インスタントリプレイ | OBS Studio リプレイバッファ | |
---|---|---|
負荷 | 小さい | 小さくも大きくもできる |
ファイルサイズあたりの品質 | あまりよくない | よくできる |
リプレイのキャッシュ先 | ストレージ(SSD, HDD) -> 高耐久なSSDが必要。CrystalDiskInfoで寿命を確認した方がよい。 |
システムメモリ(RAM) -> システムメモリに空きが必要というほど使わない |
遡れる時間 | 20分 | システムメモリ次第(基本的に劣る) |
HDR | 対応 | 未対応 |
配信中にリプレイを流す 見出しにジャンプ
- ストリームエンコーダを使用して、負荷ゼロで配信と同時に録画するの設定を行った上で、配信中にリプレイバッファを動かしても負荷は増えない。
- 録画やリプレイの保存ファイル名は、日付を含めず固定でき、上書き可能。
設定 -> 詳細設定 -> 録画- ファイル名書式設定:
Replay
等の半角英数 - ファイルが存在する場合は上書き: 有効
- 自動的にmp4に再多重化: (配信は1トラック目に音声が入っていると想定して)無効
- リプレイバッファのファイル名の接頭辞: (空欄)
- ファイル名書式設定:
- メディアソースでは動画を再生できる。
これらを駆使すれば、負荷を増やさず配信を遡ってリプレイを配信に載せられる。
リプレイ専用のシーンをつくると尚よい。
音声 見出しにジャンプ
設定 -> 音声
項目 | 値 | 説明 | |
---|---|---|---|
一般 | サンプリングレート | 48kHz |
|
チャンネル | ステレオ | ||
グローバル音声デバイス | デスクトップ音声デバイス | スピーカー SPDIF ライン 等 |
|
マイク音声デバイス | マイク ライン Analog Input 等 |
[デバイスが接続されていないまたは利用不可] になり再設定が必要。 |
|
メーター | ピークメーターの種類 | 真のピーク (CPU使用率高い) |
|
詳細設定 | モニタリングデバイス |
モニター あるいはモニターと出力 を選んだ際の、OBSを通した(ミックスした)後の音声の確認目的で使うデスクトップ音声デバイスを選択する。 |
|
Windowsの音量を自動で下げる機能を無効にする | 有効 |
|
|
低遅延音声バッファリングモード (DeckLink/NDI 出力用) | ステレオ |
OBSを起動すると他の音量が小さくなる 見出しにジャンプ
-
タスクバー右のスピーカーアイコンの右クリックメニュー -> サウンド -> Windowsが通信アクティビティを検出したとき: 何もしない に設定する
-
設定 -> 音声の"Windowsの音量を自動で下げる機能を無効にする"を有効にする
音が出ない 見出しにジャンプ
初期設定が間違っている場合 見出しにジャンプ
- オーディオの詳細プロパティのトラックが正しくチェックされているか
- 設定->出力の音声トラックが必要分チェックされているか
- FFmpegカスタム出力を使用している場合、設定->出力->録画の音声トラックが必要分チェックされているか
前回は大丈夫だったのに音が突然入らなくなった 見出しにジャンプ
Windowsにおいて、以下の場合にDeviceIDが変更され、OBSの設定と食い違ってしまう場合があります。
- Windows Updateやクリーンインストール
- オーディオインターフェースのドライバの更新
- (WASAPIやASIOを使用するなどして)サンプルレートが変更された
サンプルレートが変更されただけの場合は、サンプルレートを元に戻すだけでOBSに音が入るかもしれませんが、その他の場合は設定->音声の再設定が必要になります。
マイクの音が左からしか聞こえない 見出しにジャンプ
PC直差しの場合は恐らく起こらないが、AIF(オーディオインターフェース)等でモノラルマイクの音声を扱う際、AIFのコンソールかOBS側でL側の音声をLR両方に出すように設定する必要がある。
AIFによっては鎖のアイコンやらステレオ/モノラルトグルやらで設定できると思う。
AIFだけではLのみにしか流せない場合、OBS側で以下のように設定する。
オーディオの詳細プロパティでマイクの"モノラルにダウンミックス"または"モノラル"のチェックボックスを有効にする。
音が返ってくる 見出しにジャンプ
- Windows サウンドのプロパティで"このデバイスを聴く"にチェックが入っていないか
- ブラウザ等で自分の配信をプレビューしている場合、ミュートされているか
- オーディオインターフェースや仮想オーディオデバイスで間違ったルーティングになっていないか
マイクのノイズを消したい 見出しにジャンプ
OBSのフィルタを使う 見出しにジャンプ
Discordで言うところの入力感度と同じ、オーディオインターフェースにあるようなノイズゲートを使用できる。
音量が閾値を超えると、ゲートが開放され音が入る。
音声フィルタを参照。
RTX Voiceを導入する 見出しにジャンプ
NVIDIA GeForce RTXシリーズで利用できる異次元のノイズ除去仮想オーディオデバイス。
一般的なノイズ除去とはまるで違う。机バンバンしてもポテチ食ってもバレない。
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) |
|
出力(スケーリング)解像度 |
Live streaming latency - YouTube Help |
|
縮小フィルタ | バイリニア 面積(エリア) バイキュービック ランチョス |
|
FPS共通値 | 30 60 |
|
FPS分数値 | 30fps: 30/1 60fps: 60/1 |
|
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等の等倍速の動画として使えるものでも、後からキーフレームのみ使用することで簡単に早送りを生成することが可能。
では実際にやってみよう。
- 設定 -> 映像でFPS分数値を選択、分子と分母を指定。
- 設定 -> 出力 -> 録画でキーフレーム間隔を設定。
録画時の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 |
- 録画
- 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を使うので、キーバインドを消費しなくてよい。
詳細設定 見出しにジャンプ
項目 | 値 | 説明 | |
---|---|---|---|
一般 | プロセスの優先度 | 通常 |
OBS Studio 24.0.3 GPU Priority Fix Testing | OBS Forums
|
映像 | カラーフォーマット Color Format |
NV12 |
NV12 以外を選択すると、NVEncやAMFで最適化が利用できず、エンコードのラグが原因で逃したフレームが増える可能性がある。[jim-nvenc] nv12/p010 not active, falling back to ffmpeg |
I422 |
|
||
P010 |
OBSは Rec. 2100 で 8ビット 出力をサポートしていません OBS does not support 8-bit output of Rec. 2100. : HDR配信ではP010 を選択するNV12 , P010 以外を選択すると、NVEncやAMFで最適化が利用できず、エンコードのラグが原因で逃したフレームが増える可能性がある。 |
||
RGB |
|
||
色空間 Color Space |
sRGB |
Add RFC: sRGB Color Space setting by jpark37 · Pull Request #7 · obsproject/rfcs |
|
Rec. 709 |
P010 と組み合わせて10bit配信も可能。 |
||
Rec. 601 |
|
||
Rec. 2100 (PQ) |
警告: Rec. 2100はより精度の高いフォーマットを使用する必要があります : NVIDIA NVENC HEVCなどHEVC, AV1エンコーダを使うStream HDR video on YouTube - YouTube Help |
||
Rec. 2100 (HLG) | |||
色範囲 Color Range |
一部 |
|
|
SDR ホワイトレベル | 300 nits |
Windows HDR (とキャプチャ問題について) の解説 |
|
HDR 公称ピークレベル HDR Nominal Peak Level |
1000 nits |
MovieLabs Best Practices for Mapping BT.2100 PQ to HLG Using maxRGB 400 -10000 cd/m2 |
|
音声 | 音声モニタリングデバイス | 既定 | |
録画 | ファイル名書式設定 | %CCYY-%MM-%DD_%hh-%mm-%ss | 2020-02-20_20-02-22.ts にようになる。 |
ネットワーク | IP選択 Bind to IP |
既定 |
既定 からIPv6アドレスが付与されたネットワークインターフェースに変更する。2001:db8:b0ba:10ee... のようなグローバルIPv6アドレスや一時IPv6アドレスを選ぶ。リンクローカルアドレスfe80... ではない。ipconfig /all
ただし、長時間のネットワーク切断やPCのNICの初期化、または通信事業者側の工事などで予告なく変更される場合がある。 配信開始時に 無効なIPアドレスにバインドしようとした可能性があります が出るので、この設定を見直せばよい。 |
輻輳を管理するためにビットレートを動的に変更する(ベータ版) | 無効 | ||
|
有効 |
|
|
|
無効 |
|
OBSが使用するスレッド数を制限する 見出しにジャンプ
Ryzen 9やThreadripper等のメニーコア環境で、論理コアを半分ずつOBSとゲームに割り当てたり、プロセスがCCXを跨がないようにする設定。
既に起動しているプロセスにしか効果がないので注意。
- タスクマネージャー
taskmgr.exe
の詳細タブでobs64.exe
や任意のゲームプロセスで右クリック -> 関係の設定から変更する方法
- Windows PowerShell
powershell.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の再エンコ品質改善 | ||
---|---|---|
#動画映像の再エンコ品質 | #配信映像の再エンコ品質 | #動画音声の再エンコ品質 |
動画映像の再エンコ品質 見出しにジャンプ
一応「アップコンバート」や「フレーム補間」をするわけだが、決して滑らかにする目的ではないことに注意。
そのため、ただ編集ソフトで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) | |
レート制御 | VBR | |
ビットレート | 15000 | |
最大ビットレート | 20000 | |
ファイル -> 設定 -> 映像 | ||
基本(キャンバス)解像度 | 3840x2160 | |
出力(スケーリング)解像度 | 3840x2160 | |
FPS共通値 | 30 | |
ソースの右クリックメニュー -> フィルタ -> スケーリング/アスペクト比 | ||
スケールフィルタ | ポイント | |
解像度 | 基本(キャンバス)解像度 |
動画音声の再エンコ品質 見出しにジャンプ
ほぼこちらの方の内容です。
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で対応 が、
あー自分でコンパイルしなきゃダメだなこれ pic.twitter.com/fcxIWmwShl
— しばにゃん@home (@shibanyan_1) September 10, 2020
(最新のFFmpegを組み込んで)自ビルドしたOBSでは動作するようになる。
最新のFFmpegじゃないと動作しないNVEnc最強設定、OBSに組み込んでビルドしたら例外が消えて動いてるっぽい(p7はクラッシュするけどw)https://t.co/w4H4WYAViI pic.twitter.com/KHFl2dpbLo
— しばにゃん@home (@shibanyan_1) September 12, 2020
いち早く新機能にアクセスしたい場合や、FFmpegカスタム出力でfdk-aacを使用して高音質に録画したい場合、拡張機能を盛り込んでビルドする時にも有効だ。
下記はOBS公式Wikiの手順を参考にしつつ、コピペできるようCLIでWindows用バイナリをビルドする手順になっている。
WSLやGit、MSBuildの環境構築手順は他に情報が山ほどあるので割愛する。
Build Instructions For Windows · obsproject/obs-studio Wiki
-
必要な依存関係をダウンロード・インストールする
- Visual Studio 2022 Community
WindowsにプリインストールされているC:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
では不十分で、"C++ によるデスクトップ開発"が必要。
MSBuildを使うので環境変数Pathを通しておくとよい。 - Development packages of FFmpeg, x264, cURL, and mbedTLS. Pre-built Windows dependencies for Visual Studio 2022
依存関係はよく更新されるので、リビルド時は更新が必要かも - our build of Qt 6.3.1 from the obs-deps repo releases
またはDownload Qt Open SourceからQt Online Installerをダウンロードしてインストール。
Qtアカウントを持っていない場合は https://login.qt.io/register で作成する。インストーラの実行にはVerificationも必要。
Custom installationを選択し、Select Componentsで↑に記載されたQtバージョンのMSVC 2019 64-bit
のみ選択すればよい(2GB未満)。 - CEF Wrapper version 103 (5060)
またはCEF Automated Builds -> Show All Builds -> Show more builds で"CEF source"のリンクがhttps://bitbucket.org/chromiumembedded/cef/get/5060.tar.bz2
になっている最も新しいバージョンをデベロッパーツール等を用いて探す。 - CMake
インストーラ版推奨、Zip版の場合は環境変数Pathを通しておくとよい。 - WSL で Git の使用を開始する | Microsoft Docs
- Visual Studio 2022 Community
-
リポジトリのダウンロード
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
- 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"
- 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"
ビルドに成功しました。
と出ていれば警告を吐いていても問題ない。
- 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
- ネイティブLinux環境でWindows向けFFmpegをクロスビルドできるrdp/ffmpeg-windows-build-helpersなら
-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を指定する。
- 依存関係を更新した場合は
-DCOPIED_DEPENDENCIES=false
- その他オプションBuilding OBS Studio · obsproject/obs-studio Wiki
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
- 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"
ビルドに成功しました。
と出ていれば例外を吐いていても問題ない。
obs-studio\build\rundirRelease\bin\64bit\obs64.exe
を起動
avcodec-58.dllが見つからないため、コードの実行を続行できません。
と怒られる場合は、media-autobuild_suite\local64\bin-video\*.dll
をこの場所にコピーする