Mixer(旧Beam.Pro) にXbox 360、Wii U、Switch の映像をFTL 配信する

昨年...じゃなかった一昨年、「IkaLog でSplatoon が更に楽しくなった話」 でキャプチャ+配信環境を作ったりしたんですが、再再構築したところ前ハマった罠にまたしてもハマったりしたので半年後くらいの自分のためにメモ。

今回の環境

基本的な構成はIkaLog の時とあまり変わっていませんが、OS がWindows 7 Professional (x64) からWindows 10 Professional (x64) Creators Update(1703) になったのと、グラフィックボードがRadeon R9 280X からRadeon RX 480(HIS RX 480 IceQ X² OC 8GB) x2(CFX) になってます。一応これRadeon ReLive 用...なんですがPC でゲームをやるときにCPU とGPU へあまり負荷掛けずにストリーミングできますよ、という機能なので今回は無関係。
ゲーム機の接続は、これまで通り、ゲーム機(Xbox 360/Wii U/Switch) のHDMI 出力をHDMI 分配機に接続、TV と Intensity Pro(HDMI キャプチャユニット) に2分配しています。確かHDMI 切り替え機があったはずなんですが「こんなの使わねー」 って捨ててしまったような気もするのでとりあえず手動で繋ぎ替え。HDMI端子/ケーブルの耐久性も気になるし、つなぎ替えが面倒になってきたらなんか考えます。3入力/2出力みたいなのがあればベストなんだけど。
で、この辺でまたしてもハマった罠2点。今回、映像も音声もHDMI から取っていますが、Intensity Pro の制約で1080i か720p までなので、ゲーム機側の映像出力を「720p」 に固定しています。ただ720p 固定にしていても、AV アンプ経由後の映像は1080p 固定になる罠があり、ゲーム機のHDMI 出力を直接分配しています。
もう一つの罠は、2年前の環境構築時、Wii U でHDMI からの音声がおかしくて、アナログ赤白からの音声入力+音声をステレオにしてしのいだのですが、これ、もっと単純にWii Uで音声出力をステレオにしておけばHDMI でも大丈夫 でした。なお、Xbox 360 / Switch はサラウンドでも特に問題なかったです。うちの環境依存かもしれないですが、音声がどうにもおかしい場合はステレオにすれば回避出来る可能性があります。
あと配信先はTwitch からMixer(旧Beam.pro) に変更しています。設定とかまだ試行錯誤中ではありますが、低遅延(1秒未満) の配信(FTL) が出来るのが良いです。Skype とかでボイチャしながらこちらのプレイ状況を見て貰うときとかに便利。
で、その低遅延の配信のために、OBS Studio with FTL を使ってます。今回はこれの設定が超重要。
こういう環境で、Xbox 360、Wii U、Switch の映像をキャプチャし、Mixer(FTL) 配信出来るようになりました。

前準備

とにもかくにもまずはMixer(旧Beam.pro) のアカウントが必要。Windows 10 Creators Update とXbox One に統合されたので、マイクロソフトアカウントでそのまま登録出来ます。この辺の登録のやり方とか使い方は情報一杯あるはずなので割愛。
で、自分のアカウントページの「MANAGE CHANNNEL」→「BROADCAST」→「STREAM SETUP」 から「Stream Key」 を生成して取得。いつでもサイトから確認出来るし再生成もすぐ出来るのでどこかにメモっておく必要は無いですが、初期設定/再設定時には必須。あともちろん他者と共有してはいけない類の情報(なりすましとかされる) なので取扱注意。

基本設定

OBS FTL の設定はこんな感じに。画像大量注意。どうでもいいけど今回MovableType で画像の取り扱いに難儀したので画像は全部Flickr に上げてみた。もうWordpress に乗り換えてやる...!!
...てのはさておき、配信種別は「Beam FTL Service」、手動で書くことも出来ますがこれで問題ないです。サーバーは「Asia: Tokyo」にしてます。FTL 配信で不具合があるという情報もあるので、なんかおかしいなーって時は「Asia: Hong Kong」 に変えるなどして様子見を。現時点では、Tokyo でも問題なく低遅延配信出来ています。ストリームキーはさっき取得しておいた「Stream Key」 を入れます。
20170604-OBSFTL-settings1
出力モードを「詳細」にして手動で設定します。エンコーダを「x264」(ソフトウェアエンコード) にして、その下の「ストリーミングサービスのエンコーダ設定を適用する」 にチェックを入れておくのが超重要みたい。ビットレートはもう少し切り詰められるかもですが、720p/30fps 配信前提でだいぶ余裕を見て「3500」 にしてます。3000 くらいでもいいかも。キーフレーム間隔以下はそれぞれ推奨値の「1」、「veryfast」、「high」、「zerolatency」 にしてます。録画はしないので録画タブはデフォルト、音声タブは音声ビットレートを「128」にしてます。
20170604-OBSFTL-settings2
サンプリングレートはFTL 配信するために「48khz」 である必要があるみたいですが特に意識せずデフォルト値です。Skype とかDiscord でボイチャしていて、その音声も配信にのせる場合は、デスクトップ音声デバイスにヘッドセットのスピーカー、マイク音声デバイスにヘッドセットのマイクをセットしておくと便利です。設定だけしておいて、不要であれば配信画面で個別にミュートととボリューム調節は出来ます。
20170604-OBSFTL-settings3
基本解像度(Intensity Pro からの入力) と、出力解像度(配信の出力) はどちらも同じ「1280x720」、縮小フィルタは3つある選択肢の真ん中(スケーリングしないのでたぶん意味は無い?)、FPS共通値は「30」(30fps)。ここで60 にするとかえってカクカクになるのでこのくらいで。1280x720、30fps でも結構キレイです。
20170604-OBSFTL-settings4
レンダラーは「Direct 3D 11」、カラーフォーマットは「NV12」、YUV色空間は「709」、YUV色範囲は「全部」 としていますがYUV 2つは違いがよく分からない感じです。特に不具合ないのでこの設定。音声モニタリングデバイスはPC 自体のスピーカー出力を指定しておくと良さげ。音声出力が確認出来たらミュートします(後述)。
20170604-OBSFTL-settings5

配信設定

配信の画面。あまり凝ったことはしないのでシンプルです。まずはソースの「+」 ボタンを押して「Blackmagic デバイス」 を選択。ここの名称はお使いのキャプチャデバイスによって変わるかも。
20170604-OBSFTL-settings6
追加すると出てくるプロパティ。デバイスは「Intensity Pro」、モードは「720p59.94」、ピクセルフォーマットは「8bit YUV」 を選択すると、Xbox 360 と Wii Uの場合は上の黒い画面に映像が出るはず。
20170604-OBSFTL-settings7
Switchの場合は、モードを「720p60」 にしないと映像が出ないので注意。
20170604-OBSFTL-settings8
あとは、メイン画面で映像が出ているか確認。映像のまわりに赤い枠線が出ている場合は、黒い画面一杯に広げておく必要があります。あとミキサーのそれぞれのデバイスで音が出ていればバーが動いているはず。ただしこのままでは音は出ないので、確認したい場合はミキサー右横の歯車をクリック、音声モニタリングの「モニターオフ」 を「モニターと出力」 に変更すれば確認出来ます。マイク経由で配信の音に入る場合があるので、確認出来たらまたモニターオフにしておくこと推奨。
20170604-OBSFTL-settings9
ボイチャの音をのせたくない場合は、「マイク」と「デスクトップ音声」でそれぞれスピーカーアイコンをクリックして赤いアイコンになればミュートできます。もちろん、この状態でもボイチャは継続できますので、シャイな方には必須。
20170604-OBSFTL-settings6
で、ここまで出来たらあとは「配信開始」 押せば即配信が始まります。FTL 配信ではOBS で同時録画は出来ないみたいですが、Mixer 側でmp4 がダウンロード出来る(数日で勝手に消える) ので必要であればそれをダウンロードしておくと安心。自分で確認した限りでは、ローカルに落としたファイルはカクつくこともなく再生出来ました。
というわけであとは適当にAmazon アソシエイトを...という気力も尽きたのでここまで。Intensity Pro も今となっては性能的に微妙な感じですが壊れないしきっちり仕事してくれるので動くうちはこのままかなー。