LoginSignup
14
12

More than 5 years have passed since last update.

Streaming Serverを利用したライブストリーミング

Last updated at Posted at 2017-08-15

やりたいこと

監視カメラなどの映像をスマートフォンで確認する場合、カメラのIPアドレスを指定したり、WebRTCを利用したりしてP2Pで直接メディアストリームを受信する方法が利用できます。ただ、カメラ映像を複数ユーザーが同時視聴したい場合、ネットワークやカメラのスペック上難しい場合がありサーバーで経由する必要があります。

今回はStreaming ServerをAWS上に立ててサーバー経由でのライブストリーミングを試作し、遅延時間を実測してみたいと思います。

Streaming Server

以下にStreaming Serverの比較が掲載されている。
https://en.wikipedia.org/wiki/Comparison_of_streaming_media_systems

今回は対応プロトコルが多いWowza Streaming Engineを利用して試作を行う。
https://www.wowza.com/

スクリーンショット 2017-08-15 10.34.08.png

Wowza Streaming Engineの立ち上げ

Wowzaのページで試用版のライセンスを購入します。アカウントの作成が必要です。
https://www.wowza.com/free-trial

登録が完了すると以下のようなメールでライセンスキーが発行されます。
スクリーンショット 2017-08-15 9.44.08.png

Market Placeで"Wowza"と入力して検索。
https://aws.amazon.com/marketplace

試用ライセンスを利用するので、2段目の"Bring Your License”を選択します。
スクリーンショット 2017-08-15 9.49.56.png

セットアップウィザードを進めて、デフォルトでインスタンスを起動。デフォルトではWowzaで推奨の"m3.large"が選択されます。
スクリーンショット 2017-08-15 9.59.43.png

Wowza Streaming Engineの設定

http://[EC2のPublic DNS]:8088/enginmanagerで設定画面に接続可能です。

スクリーンショット 2017-08-15 10.33.17.png

初期IDは"wowza"、パスワードは起動したインスタンスのID(i-xxxxxx)となります。

スクリーンショット 2017-08-15 10.35.07.png

ログイン直後にSouce Authenticationの設定が求められると思います。これは、カメラが映像をStreaming Engineに送信するための認証設定で後に必要となります。設定した情報は、Sever -> Source Authenticationで確認できます。

スクリーンショット 2017-08-15 11.04.06.png

Applicationを選択し、Liveを選択します。今回はiPhoneをカメラとして利用しますので、GoCoderを選択し、Host Server / Host Portの情報を確認しておきます。

スクリーンショット 2017-08-15 11.31.32.png

スクリーンショット 2017-08-15 11.38.51.png

GoCoderの設定

iPhoneもしくはAndroidでGoCoderアプリケーションをインストールします。アプリケーション起動後にWowza Streaming Engineの以下の3項目の設定を入力して下さい。

  • Host - 先ほど確認したサーバーのIPアドレスとポートナンバー
  • Application - liveとストリーム名を選択
  • Source Authentication - 先ほど設定したユーザ名とパスワード

上記の設定完了後に赤丸を押して配信を開始して下さい。

動作確認

まずRTMPのストリームが1本入っていることを確認します。

スクリーンショット 2017-08-15 12.04.16.png

右上のTest Playersを選択し、About HLSを選択するとURLが表示されるので、URLでブラウザで確認します。そうするとライブ映像の確認ができました。

スクリーンショット 2017-08-15 12.17.30.png

遅延時間の計測

両方向のネットワークがLTEであることもありますが、Camera ==RTMP==> Wowza Streaming Engine ==HLS==> Web Browserの経路ではほぼ40秒の遅延があることがわかりました。

HLSの場合もともと通信の安定性を考慮したプロトコルで低遅延のプロトコルではありません。10秒ごとのチャンクに切られて、遅延が15秒から45秒という仕様通りの挙動が確認できました。

HLS以外のプロトコルを選択することで遅延は減らせられそうです。以下のWowzaのページにも詳細が記述されています。RTMPもしくはWebRTCを選択するということになりそうです。

14
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
12