勉強会を支える技術: Twitterでライブ配信する方法

[YYPHP]というPHPerが週に一回集まって、PHPやPHPまわりについて雑談するイベントがありますが、そこではYouTube LiveとTwitterライブ配信を使って、イベントの雑談をラジオ的に配信しています。

本稿では、そうした**プログラミング関連**の勉強会を支えるTwitterライブ配信のしかたを解説します。

[YYPHP]: http://yyphp.connpass.com

ちなみに、YYPHPの過去のライブ配信を見てみたい方は[YouTubeの動画一覧](https://www.youtube.com/playlist?list=PLpOeTEye3Bg6PodrLHHC72jWMJYZz8VbG)を御覧ください。

## Twitter配信のメリット

YouTube Liveはチャンネル登録者には通知が行くのでリピーターの視聴は得やすいですが、新規視聴者にはYouTube単体ではリーチしないので、飛び込み視聴者はなかなか獲得しにくいです。

一方、Twitterのライブ配信は、Twitterアプリ上で見れる、タイムラインの最上部に出てきて目に付きやすい、配信開始と同時にツイートされる、RTなどで拡散されやすい、などエンジニアが多いSNS上で配信→PR→拡散が完結するため、視聴者が増えやすい感じがあります。

_Twitterアプリ(iOS)でライブ配信がクローズアップされる様子_

![IMG_7492.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/a211bcfe-806e-200f-9d2c-c6ea83971503.png)

_Twitterライブ配信開始時に投稿されるツイートの例_

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">YYPHP 82回の生配信開始しました！ <a href="https://t.co/vhdMom7wqE">https://t.co/vhdMom7wqE</a></p>&mdash; suin❄️PHPでオブジェクト指向 (@suin) <a href="https://twitter.com/suin/status/1121724026726957056?ref_src=twsrc%5Etfw">2019年4月26日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>



## Twitterライブ配信のしくみ

Twitter自体にはライブ配信の機能がありませんが、Twitter社が買収したライブ配信アプリ「Periscope」と組み合わせることで、ライブ配信をTwitter上に展開することができます。

```
配信者
  |
  | 配信する
  v
Periscope <---[連携]---> Twitter
                            ^
                            |
                            | 視聴する
                          視聴者
```

Periscopeのライブ配信は無料で行えます。

## Perisocpeのアカウントを作り、配信に必要な情報を揃える

1. https://www.pscp.tv を開く。
2. Create AccountからTwitter認証でPeriscopeのアカウントを作る。
3. ログインしたら、[Producerページ](https://www.pscp.tv/account/producer)を開き、「Create New Source」ボタンを押す→「Normal Source」を選択。
4. 「Server URL」と「Stream Name/Stream Key」を控える。<img width="1254" alt="Producer.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/78a5e3ab-aaa7-4def-8cf5-535e660e48ff.png">
5. 「Low Latency」にチェックを入れておく。


## OBSでの配信設定

### ストリーム配信する場合(通常の配信方法)

Twitterライブ配信(Periscope配信)をメインにする場合です。YouTube Liveなど他メディアをメイン配信、Twitterライブ配信をサブ配信にする場合は、「レコーディングを使って配信する場合」を読んでください。

#### Streamの設定

1. OBSの「Settings」→「Stream」を開き、「Service」は「Twitter / Periscope」を選択、「Server」は「Asia/Pasific: Japan」、「Stream Key」には上の手順で控えた「Stream Name/Stream Key」を入力する。<img width="1030" alt="Settings_and_OBS_Studio_23_1_0__mac__-_Profile__Twitter-Periscope_-_Scenes__YYPHP_Collection_and_Producer_and_「YYPHPを支える技術__Twitterでライブ配信する方法」を編集_-_Qiita_and__Users_suin_Dropbox.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/9a55b2c6-7ea7-2e9e-525e-6f02d26b5c50.png">

#### Outputの設定

1. 「Output」を開き、Perisocpe推奨の値にする。(※推奨値はPeriscopeアプリに表示される「Recommended Settings」を参照。「Low Latency」が有効なときとそうでないときで推奨値が異なります。)
    * Video Bitrate: 800
    * Encoder: Software(x264) … もしくは、H.264/AVCにエンコードできる同等のツール
    * Audio Bitrate: 96
      <img width="980" alt="Cursor_and_Settings.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/0eac7bfe-977c-6143-526d-d41d79f565ca.png">


#### Auidoの設定

1. 「Audio」を開き、Perisocpe推奨の値にする。
    * Sample Rate: 44.1khz

#### Videoの設定

1. 「Video」を開き、Periscope推奨の値にする。
    * Base (Canvas) Resolution: 960x540
    * Output (Scaled) Resolution: 同上
    * Common FPS Values: 30
      <img width="974" alt="Screenshot_2019_04_29_14_13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/9493c329-ef91-6b0d-41a1-5b886e05e1d4.png">


### レコーディングを使って配信する場合

この方法は、ストリーミング配信にYouTube Liveなど他メディアがすでに割り当てられていて、Twitterライブ配信を2本目の配信チャネルとして追加したい場合の設定です。

OBSは1つしかストリーミング配信先を設定できませんが、動画のレコーディング先をファイルではなくURLにすると、なんと実質2本目の配信チャネルを追加することができます。裏技的なやつですね。

#### Outputの設定

1. OBSの「Output」を開き、「Output Mode」を「Advanced」に切り替え、「Recording」タブを開く。
2. 出力先をPeriscopeのURLにする:
    * FFmpeg Output Type: Output to URL
    * File path or URL: 上の手順で控えた「Server URL」と「Stream Name/Stream Key」を続けて書く: 例: `rtmp://jp.pscp.tv:80/x/4why63f7nfda`
2. Periscopeの推奨設定に合わせる:
    * Video Bitrate: 2500 (合ってるか自信ない)
    * Keyframe interval (frames): 90 (合ってるか自信ない)
    * Rescale Output: 960x540
    * Audio Bitrate: 96

## 配信開始方法

OBSの「Start Streaming」を押して配信開始の準備に入ります。**Periscopeは、OBSの「Start Streaming」を押しただけでは配信されません！ あくまで準備です。**

#### レコーディングで配信を開始する上での注意点

ストリーム配信ではOBSの「Start Streaming」ボタンを押して開始になりますが、レコーディングを使って配信する場合は、「Start Recording」を押します。

例えば、YouTube Liveはストリーム配信で、Twitter配信はレコーディングを使うような設定になっているとき、YouTubeとTwitterに対してマルチ配信する場合は、「Start Streaming」と「Start Recording」をそれぞれ押す必要があります。

### PeriscopeのProducerでプレビューを確認する

PeriscopeのProducerを開きます。Periscopeへの動画配信が問題なく疎通していれば、プレビュー動画が表示されます。

タイトルを入れて、「Go Live」を押すと実際に配信が始まります。

<img width="980" alt="Producer.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889/bbbe8243-3edf-d051-f03e-b263ec174bdf.png">