MacBook Pro (Retina, 13-inch, Early 2015)からOBS Studioでライブ配信する際の最適パラメータを探求してみた

ライブ配信エンコーダであるOBS StudioをMacBook Pro (Retina, 13-inch, Early 2015)で利用する際に突き当たった問題と、解決のための試行と解決できたパラメータ情報をまとめてみました。
2019.02.07

はじめに

清水です。AWS Media Servicesを使って、これまでに何回か弊社で主催している勉強会などを社内外に向けて配信しています。これは例えば以下のエントリなどでまとめています。

ライスベガスで配信するなどの特例(?)を除き *1基本的には配信用としてMacBook Pro (Retina, 13-inch, Early 2015)を用意し、インストールしてあるOBS Studioを使って配信することが多いです。カメラ/マイクはMacBook ProにUSBカメラ、USBマイクをそれぞれ接続します。これは配信する際に、なるべく特別な機材を使わずに社内にある機材でやってみよう、という考えがありました。

最近ではこの構成での配信設定なども定番化しており安定した配信ができているのですが、そこに至るまでにはいくつかの失敗や設定調整がありました。本エントリではこの失敗の記録と、最適パラメータの探求を個人的備忘録がてらまとめてみたいと思います。

なお内容をざっくりまとめると下記となります。

  • 解像度1920x1080、ビットレート5Mbpsの場合はCPUが高負荷の状況が続き、配信が安定しなかった
  • ハードウェアエンコーダについては相性の問題か、15分以上の使用に耐えられなかった
  • 解像度1280x720、ビットレート3MbpsならCPU負荷もそれほど高くなく、安定した配信ができた

前提条件

前提となる機材などは以下となります。

  • 配信ノートブック
    • MacBook Pro (Retina, 13-inch, Early 2015)
      • macOS High Sierra 10.13.6
      • プロセッサ 3.1 GHz Intel Core i7
      • メモリ 16 GB 1867 MHz DDR3
      • グラフィックス Intel Iris Graphics 6100 1536 MB
      • その他スペック詳細はこちらから
  • 配信ソフトウェア
  • カメラ/マイク
    • いずれもUSBで接続
    • USBカメラは下記などを使用
      • Logicool HD Pro Webcam C920
      • 基本的にはオンラインミーティングに使用するWebカメラ
    • USBマイクは以下などを使用
      • Jabra Speak 410
      • 場合によってはUSBカメラに付属のマイクを使用
USBカメラ、Logicool Webcam C920。タブレット用の三脚?と組み合わせての使用例。 USBマイク、Jabra Speak 410

失敗例1: Full HD(1080p)解像度で配信

まずは失敗例その1です。これははじめてMacBook Pro + OBS Studioで配信したときの設定なのですが、以下のような設定としました。

  • 配信解像度 1920x1080
  • 基本(キャンパス)解像度、出力(スケーリング)解像度ともに
  • ビットレート 5Mbps

OBS Studioの詳細な設定は特に行わず、映像ビットレートと解像度を設定したのみでした。この設定で配信を行った結果ですが、CPU使用率が70%前後で高い状態が続き、映像に青みが出たり、映像の瞬断、ドロップフレームなどが発生しました。具体的には以下のエントリにもまとめています。配信ソフトウェア側としては多くの課題が残りました。

MacBook Proならそこそこのスペックがあると思い、Full HD解像度でも特に(特段設定しなくて)問題ないのでは? と考えていたのですが、甘かったですね…。

失敗例2: ハードウェアエンコードの利用

続いて失敗例その2となります。失敗例1の原因をCPU使用率が高い状態が続いたこと仮定、しかし可能ならば解像度、ビットレートを落とさずに、OBS Studio側の設定変更で対応できないかと設定項目を確認していきました。目に止まったのがハードウェアエンコードの設定項目です。設定 > 出力 で出力モードを「基本」から「詳細」にし、「エンコーダ」の項目に設定項目が確認できます。(デフォルトはx264です。)

これまでがソフトウェアエンコーダであったとすれば、ハードウェアエンコーダに変更することでCPU使用率を減らすことが期待できます。実際、デフォルトの「x264」から「アップル VT H264 ハードウェアエンコーダ」に変更して少し配信テストをしてみたところ、CPU使用率が20%前後と非常に快適な状況で配信が行えました。

しかし、いざ配信本番を迎えてみて15分ほどたったところで、映像が途絶え音声だけになり、終いには音声も聞こえなくなる、という状況となりました。そのときOBS Studio側の状況は以下のように、ドロップフレームが頻発、また右下のネットワーク状況が不安定となっていました。

この現象を確認した当初、有線LANではなくWi−Fiで通信を行っていたため、ネットワーク不調がWi-Fiに原因にあることも考えたのですが、のちに検証してみるとネットワーク不調と判断できるのはOBS Studioのみで他のアプリケーションの通信は問題なく行えました。(OBS Studioだけ通信ができない。その他のアプリケーションでは通信ができる。)そのためハードウェアエンコーダをこの設定で使用した場合の不具合、もしくは相性のようなものなのでは、と考え、このハードウェアエンコード設定は使用しないこととしました。(もしかしたら他の設定を調整することでこの現象が解決され、ハードウェアエンコーダを安定的に使用できる可能性もあるかもしれませんが…)

成功例: 解像度とビットレートを落としてみる

ハードウェアエンコードが失敗してしまったので、これは解像度、ビットレートを落とすしかないと考えました。先ほどの「エンコーダ」の項目は失敗してしまった「アップル VT H264 ハードウェアエンコーダ」からデフォルトの「x264」に戻します。またFull HD 1920x1080はあきらめ、解像度を一段落とした1280x720としました。ビットレートについても解像度を鑑みて3Mbpsとしました。

  • 配信解像度 1280x720
  • 基本(キャンパス)解像度、出力(スケーリング)解像度ともに
  • ビットレート 3Mbps

そしてもう一つ、OBS Studioの設定 > 出力の出力モード「基本」で確認できる項目で「高度なエンコーダの設定を有効にする」のチェックボックスをOnにすると出現する項目の1つ、エンコーダプリセットの値を「superfast」としました。これはCPU使用率に関わるパラメータで、画質を取るかCPU使用率を取るかの選択ができます。最もCPU使用率が低いとされるultrafastにすると画質が少し下がってしまったため、supefastを選択しています。(これ以上画質を上げると今度はCPU使用率が高くなってしまいました。)

現段階での最適なパラメータ

ということで成功例にもあります通り、こちらの配信解像度 1280x720、ビットレート3Mbps、エンコーダプリセットsuperfastが現段階で私が考える最適なパラメータとなります。こちらのパラメータ、例えばUSBカメラを2つ使用して以下のような合成(背景に画像ファイルを配置して、2つのUSBカメラ映像をそれぞれ表示)をしたり、ライブ配信中にOBS Studioのシーン切り替えをたまにするぐらいの負荷を加えても十分に耐えられる構成でした。そのため最近ではほとんどこちらを定番設定として利用しています。

最適なパラメータのメモ

ここでは本当に個人的な備忘録ですが、現段階で使用している最適パラメータの設定スクリーンショットを掲載しておきます。 *2

まとめ

ライブ配信エンコーダであるOBS StudioをMacBook Pro (Retina, 13-inch, Early 2015)で利用する際に突き当たった問題と、解決のための試行と解決できたパラメータ情報をまとめてみました。結局は配信用のPCに合わせて適切にビットレート、解像度は設定しないといけない、ということにはなるのですが。(その中でもなるべく高画質で配信できれば、とは思います…)

このような設定が大変だな、と思える場合はLiveShellなどのライブ配信機器や、AWS Elemental Live *3をはじめとしたライブエンコーダアプライアンスなどを検討するのも良いかと思います。

脚注

  1. ラスベガスでの配信ではMacBook Proを2台持ち運ぶのが辛かったので、作業用のMacBook ProでOBS Studioによる配信も兼務させていました。MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports)ではありましたが。
  2. OBS Studioの機能でプロファイルとしてインポート/エクスポートもできますが、記録としてスクショを取ってみました。
  3. AWS Media Servicesの1つであるAWS Elemental MediaLiveとは別の製品になります。