LoginSignup
1
1

More than 3 years have passed since last update.

agora.ioでコラボレーション配信の実装

Last updated at Posted at 2019-03-22

概要

instagram等でコラボ配信(複数拠点からの配信)をよくみかけるようになりました。
agora.ioのSDKを用いたコラボ配信については実績が多数あります。

コラボ配信の技術的問題点

  • コラボ配信において、視聴者は遅延が発生しても問題ありませんが、コラボしている人同士は遅延が発生したら会話が成立しない
  • コラボ配信による効果で視聴者が数千人に増えた場合、インフラの増強が必要になる

agora.ioで出来る事

  • コラボしている人同士の遅延:1s以内の遅延に抑えることができます。複雑なコードを書く必要はなく、配信者としての設定(APIをコール)をするだけです。
  • 視聴者側は10万人まで対応している為、大規模な配信にも対応可能です。又、視聴者側の遅延は2s以内になっており、一般的なHLSよりも低遅延が可能です。

サンプルコード

SDKと共にサンプルコードが含まれています。配信者側で入室、視聴者側で入室という機能が含まれています。

ビルド方法(iOS)

SDKのダウンロード

ダウンロードページからVideoSDK iOSをダウンロードします。
download.png
(サンプルはSDKの参照も含まれた設定になっています。)

プロジェクトのオープン

ダウンロードしたファイルを展開するとSDK本体、ビデオ通話のサンプル、ライブ配信のサンプルに分かれています。
今回はライブ配信のサンプルを利用する為、OpenLive-iOSのプロジェクトをオープンします。
finder.png

APP IDの設定

KeyCenter.swiftにagora.ioのAPP IDを設定します。
(簡易に動作検証をする場合はTokenは空でも大丈夫です)
xcode.png

実機での動作確認

ChannelNameを任意で入力し、入室します。配信側はBroadcasterを選択します。
IMG_1598.PNG

・入室後画面
IMG_1599.PNG

別の拠点も同じChannelNameを入力し、入室します。

・2拠点入室した場合の画面
IMG_1600.PNG

実装の詳細(一部抜粋)

配信者か視聴者かを決めるAPIは以下になります。

LiveRoomViewController.swift
    rtcEngine.setClientRole(clientRole)

ローカル側の映像表示は以下のAPIをコールすることで描画できます。

LiveRoomViewController.swift
    rtcEngine.enableVideo()
    rtcEngine.startPreview()
    rtcEngine.setupLocalVideo(CANVAS)

リモート側の映像表示は以下のAPIをコールすることで描画できます。

LiveRoomViewController.swift
    func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinedOfUid uid: UInt, elapsed: Int) {
        rtcEngine.setupRemoteVideo(CANVAS)
    }

最後に

agora.ioに関するお問い合わせはこちらから
スクリーンショット 0001-08-15 13.41.56.png

1
1
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
1
1