Arch LinuxでYouTube Liveにゲーム配信（Nintendo Switch）

# TL;DR
- Arch Linuxでゲームライブ配信をする際の知見を共有します．
- ドライバ不要のキャプチャボードを利用してNintendo Switchの画面をYouTube Liveに配信します．
- 配信ソフトはOBS Studioを利用します．
- OBSに関するバージョン依存の情報が含まれています．投稿日時が古い場合は注意してください．

# 準備するもの
* Arch Linux （他のLinuxディストリビューションでも可能です）
* HSV321（キャプチャボード）
* OBS Studio 

## キャプチャボード選定

Linuxでの動作を確認している方が多数いるため以下の製品を選択しました．
キャプチャボード周りに全く詳しくないので怪しい中華製にしか見えませんが，OS依存がなくドライバ不要でありHDMIパススルー対応機器です．Linuxで動作するものであれば何でもよいでしょう．

[Mirabox HSV321](https://www.amazon.co.jp/gp/product/B081PVPQ4P/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)

## 配信ソフト

OSは普段使いのArch Linuxです．
配信周りは当然Windowsのほうが便利なツールが揃っていますが，Linuxでも一応配信ツールがリポジトリに用意されています．

今回は知名度の高い[OBS Studio](https://github.com/obsproject/obs-studio)を利用します．Arch LinuxのCommunityリポジトリに限らず，Ubuntuや他の主要ディストリビューションでもインストール可能です．

一方で，Linux版のOBS Studioの現バージョン（24.x）ではブラウザプラグインが導入されておらず，配信画面上にコメントやサブスクライブの通知などを表示できません．
過去のバージョン（23.x）ならばプラグイン（[obs-linuxbrowser](https://github.com/bazukas/obs-linuxbrowser)）をディレクトリに配置するだけで導入できるそうなのですが，24.x系では正常動作しないようです．

Issueなどを見ていると開発版の25.x系にプラグインを含めてビルドすれば動作するようなので，AURの[開発版](https://aur.archlinux.org/packages/obs-studio-git)をビルドしてインストールします．下記AURヘルパーの`yay`でのインストール例です．

```
yay -S obs-studio-git
```

AURの開発版にはobs-linuxbrowserが含まれていますね．
![2020-03-15_234016_077037547.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405311/aff41679-664a-e847-d65b-e7f670fe09a3.png)


> 逆にブラウザ機能が不要だという方は24.x系でよいと思います．GitHubに[インストール手順](https://github.com/obsproject/obs-studio/wiki/install-instructions#linux)があるので，ご自身のOSに合わせてインストールしてください．Arch Linuxだとpacmanでそのままインストールできます．`sudo pacman -S obs-studio`

## 配信の初期設定

起動すると，大きく表示されるプレビュー画面の下に**ソース**の設定項目があります．右クリックから追加を選択し，**映像キャプチャデバイス**を選択，デバイス欄を**MiraBox Video Capture**に設定します．

![2020-03-15_234216_748646881.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405311/6dda04a6-ba59-a4ed-8ab2-bae26afcb5d6.png)


キャプチャの基本設定は以上です．
マイクからの音声入力などが必要であれば，同様にソースから音声入力設定をしてください．こちらはLinux側の音声設定に依存すると思うので説明は省きます．

ツールバーから設定を開くと詳細設定が可能です．
ライブ配信の場合は配信タブからYouTube Liveを選択してストリームキーを入力します．
ストリームキーはYouTube Liveの配信画面から取得できます．この記事を見て真似しようと思った方は諸々揃える前にYouTube Liveのアカウントを有効化しておきましょう．利用できるまでに24時間程度掛かります．

以上の設定が終われば，配信開始ボタンを押して配信が可能です．
OBS側の配信と，YouTube Live側の配信の両方で配信開始する必要があります．OBS Studioでは配信と同時に録画をしたり，録画のみで動作させることもできます．YouTube Live側でも配信はアーカイブされるので，あとで細かい編集等をしない限り配信と同時に録画する必要はないかもしれません．

## コメントや通知の表示

OBSの拡張版とされる[Stream Labs](https://streamlabs.com/)には標準でライブ配信中のコメント表示などに対応していますが，こちらのソフトウェアはWindows版しか存在しません．一方で，Stream Labsはウィジェット機能としてコメント表示などを提供してくれているので，OBS Studioではこちらを参照します．

ここで上記でわざわざ開発版をビルドしてまで使いたかったブラウザ機能を活用します．
Stream Labsのアカウントを作成し，ログインしたあとAlert Boxのページを開きます．以下のようにURLが提供されているので，このURLをOBS Studioのブラウザソースに貼り付けます．ブラウザソースは先程のキャプチャボード選択と同様に**ソース**から**ブラウザ**を選択して設定します．

Stream Labsから通知のテストができます．Widget URLの下にある**Test Subscriber**を選択すると，配信画面上に通知が表示されるのを確認できます．同様の操作でコメント欄などを追加できます．

![2020-03-15_235118_826823078.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405311/26f795a5-9932-5579-2081-5fa3452a777f.png)

![2020-03-16_003910_047993461.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405311/d734cc4c-6b51-b304-ae13-4ebf5ef776c5.png)

またアカウント作成等が面倒くさいという方は，YouTube Liveのコメント欄をポップアップさせたあとのURLを貼り付けてCSSをいじれば配信画面にコメント表示させることができます．

## コメントの読み上げ

別途用意する必要がありますが，読み上げで有名な棒読みちゃんはLinuxでは動作しません．[YouTubeLiveコメント読み上げさん](https://bouyomisan.regonn.tokyo/)というサービスもあるようですが，しばらく配信していると謎のエラーで読み上げてくれなくなりました（APIの取得制限？）．YouTube Live APIを自分で叩いて，何かしらのソフトウェアに読み上げてもらうのが早そうですね．そのうち気が向いたら自作を検討します．

# 参考
- [obsproject/obs-studio](https://github.com/obsproject/obs-studio)
- [bazukas/obs-linuxbrowser](https://github.com/bazukas/obs-linuxbrowser)
- [browser not loading in obs 24.0.x · Issue #118 · bazukas/obs-linuxbrowser](https://github.com/bazukas/obs-linuxbrowser/issues/118)
- [Install Instructions · obsproject/obs-studio Wiki](https://github.com/obsproject/obs-studio/wiki/install-instructions#linux)
- [AUR (en) - obs-studio-git](https://aur.archlinux.org/packages/obs-studio-git)
- [HSV321 - Amazon](https://www.amazon.co.jp/gp/product/B081PVPQ4P/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)
- [Stream Labs](https://streamlabs.com/)
- [OBS Studioの詳しい使い方・設定方法](https://vip-jikkyo.net/how-to-use-obs-studio#i-25)
- [YouTubeLiveコメント読み上げさん](https://bouyomisan.regonn.tokyo/)