Amazon IVSの概要
Amazon IVSはHLS形式での動画配信を簡単に実現できるクラウドサービスです。クライアント側のSDKも提供されており、開発期間やコストを軽減できます。品質面では約3秒ほどの低遅延を実現できます。詳細は公式ドキュメントをご参照ください。
Agoraの概要
Agoraは独自プロトコルでの動画配信を簡単に実現できるPaaSとなっています。最近ではCPaaS(Communications Platform as a Service)と表現される場合もあります。Amazon IVSと同様にクライアント側のSDKを提供し、かつ、豊富なサンプルが公開されていますので開発期間やコストを軽減できます。又、SDKにはライブ配信に必要なAPIが多数用意されており、機能追加も積極的に実施されています。日本国内では30ms〜200msの低遅延を実現しています。
配信技術選定のポイント
配信技術については前述のIVSやAgora以外にもWowzaやAzureなどたくさんのプラットフォームがあります。選定して1つに絞る必要がありますが、開発終盤に実は要件を満たしていないプラットフォームであれば0から作り直しという羽目に陥ります。参考としては、以下のポイントを確認すればよいかと思います。
- 動作環境
- 同時視聴数などの制限事項
- 対応言語(フレームワーク)
- サポート有無
- サンプルコード有無
- トライアル有無
トライアルがあれば最低限のプロトタイプを作成し、要件を満たせているか確認する事をおすすめします。
実装例
IVSもAgoraもSDKを利用すれば簡単に配信と視聴部分が実装できます。以下はAgoraのAndroidアプリの実装例です。数行のコードで実装可能な為、配信以外の機能開発に時間をさくことができます。
配信側
//SDKの初期化
mRtcEngine = RtcEngine.create(context, appid, eventHandler);
//映像・音声の取得と描画
mRtcEngine.setupLocalVideo(videoCanvas);
//映像音声の有効化
mRtcEngine.enableVideo();
//チャネル接続と配信
mRtcEngine.joinChannel(token, channelName, info, uid);
//配信終了
mRtcEngine.leaveChannel();
視聴側
//SDKの初期化
mRtcEngine = RtcEngine.create(context, appid, eventHandler);
//チャンネル接続
mRtcEngine.joinChannel(token, channelName, info, uid);
//他拠点の映像・音声取得
mRtcEngine.setupRemoteVideo(videoCanvas);
//退室
mRtcEngine.leaveChannel();
クロスプラットフォーム開発
ライブ配信サービスを提供する際、「Androidのみ」とか「iOSのみ」というパターンは少ないかと思います。基本的には同時開発する必要があります。AgoraはFlutter、ReactNative、UnityのSDKを提供しているのでさらに開発期間の短縮が可能になります。
録画
録画はサービス展開する上で非常に重要な機能です。エンタメ系のサービスだと見逃し配信、教育系であれば復習用、エンタープライズ系であれば事後確認、面接系であれば複数人でのチェック等活用の幅があります。
IVSでは配信設定の時にS3への保存設定を同時に行います。
Agoraではオンプレミス型の録画SDKと、クラウド型の録画を提供しています。オンプレミス型の場合は、自社のサーバーにアプリを組み込み録画します。クラウド型はAgoraのサーバーで録画プロセスが動き、最終的に自社で用意していただくクラウドストレージに転送されます。S3やAzure、GCP等に保存可能です。
音声技術
ライブ配信技術では映像に注目しがちですが、音声技術も非常に重要です。スマホでは通話用とメディアプレイヤー用の音声システムを持っており、利用用途やシーンによってはチューニングする必要があります。
Agoraは音声についても多くのAPIを提供しています。以下が一部の例になります。
- 利用シーンに合わせた最適化
- 音声美化
- 音声エフェクト
- AIノイズキャンセル
ストレスの無い音声を視聴者に届ける事でユーザー満足度が向上する場合もあります。また、メタバースに有効な空間オーディオ機能もリリースされました。
最後に
この記事ではライブ配信アプリ開発の概要を解説しました。V-CUBEが開催しているセミナーではもう少し詳細な内容や小ネタを紹介していますので是非ご参加ください。