前置き
OBSスタジオで、twitchとニコニコ生放送の両方に同時配信する場合、
「配信」はtwitch、
「録画」は「カスタム出力(FFMPEG)」の「URLへ送信」でニコニコ生放送
とするのですが、CPUを使いたくない場合、GPUエンコードを使います。
外付けGeForceとintel内蔵グラフィックを持ったCPUを使用している場合、マザーボードの方で外部グラフィックカード使用時でもintel内蔵グラフィックカードを有効にしておくと、NVENCもQuickSyncも使用可能な状態になります。
これで、どちらのハードウェアエンコード支援機能も使えるようになるわけですが、今のOBSバージョンでは、録画のカスタム出力ではQuickSyncが使えないので配信側でQickSync、録画側でnvencを使用します。
(GeforceのNVENCは2つ同時にエンコードできるのですが、設定によっては1つだけなので、intel内蔵グラフィックス機能のQuickSyncを併用します)
具体的な設定例
「配信」側の設定例
「QuickSync H.264」を指定
「キーフレーム間隔」は1~3秒
「遅延」は「ultra-low」とかの方が良いかも?
「録画」側の設定例
「カスタム出力」「URLに出力」「h264_nvenc」
「キーフレーム間隔」は60フレーム(30fpsで2秒に相当)
「映像エンコーダ設定」に「rc=cbr cbr=true preset=llhq」
「ファイルパスまたはURL」は https://vip-jikkyo.net/stream-to-nicolive-with-obs#connection あたりを参考に
「rc=cbr cbr=true」はCBR(固定ビットレート)指定です。
「rc=cbr」だけでも「cbr=true」だけでもダメなようです。
「preset=llhq」は低遅延ハイクオリティ設定です。ちゃんと機能しているかは分かりませんが、指定しない時よりは心持ち遅延が少ないように思いました。
ちなみにURL指定はニコニコ生放送を開始したら放送画面の下の方にでる「URL」と「ストリームキー」を/(スラッシュ)でつないで入力すればOKです。
何故、「映像エンコーダ設定」に「rc=cbr cbr=true preset=llhq」を設定するのか
これを指定しないと色々問題が起きるためです。
録画・カスタム出力・URLへ出力でh264_nvencを使用しているとき、
キーフレーム間隔「60」フレームを指定した場合、
数分置きに映像が止まったり動いたりというような動作不良を起こします。
「libx264(既定のエンコーダ)」ではこの問題は起きないのですが、
こちらはCPUを使用するので重くなってしまいます。
h264_nvencでもキーフレーム間隔「0」にすれば定期的に映像が停止する現象は起きなくなるのですが、キーフレーム間隔「0」だと非常に画質が低くなります。この画質は他のオプションをどう指定しても改善しません。
この問題を解消するにはh264_nvencをCBRエンコード設定で使用すれば良いという事みたいです。
その指定が「rc=cbr cbr=true preset=llhq」です。これを指定するとキーフレーム間隔が60(0以外)でも映像が止まることなく綺麗にビットレート指定どおりの画質で配信可能になりました。
ばっちり綺麗&スムーズ&軽い
以上、忘備録でした。
謝辞:
参考にさせて頂きました
5chのOBSスレで知った「カスタム出力 (FFmpeg)」の映像エンコーダ設定(パラメータ)良い感じ。
— すたいる (@style1925) 2019年3月2日
何も設定していない初期だとビットレートが設定値超えてしまうけど、設定すると安定する。
同時配信で使用してる人はパラメータ設定した方が良いかもな。