Agora SDK(Unity)で画面共有をする
UnityのAgora SDKで画面共有をします。Windows, Android, iOSの間でそれぞれ画面共有できるところまでやります。 なお、現状iOSではiPhone Xで動作確認していて、iPad Proでは動いていません。iOSの画面共有機能に50MBのメモリ使用制限があり、おそらくですがiPad Proの解像度で画面共有しようとするとそれが超過しているようです。対策は調査中。 改めて試してみると、何も変えなくてもiPad Pro(2020 12inch)でできました。なぜ?なにかXCode上での作業ミスってたかな…
agoraは一か月あたり10000分までは無料で使えるようです。
Agoraのアカウント作成
自分はgithubアカウント連携でAgoraのアカウント作りました。
Video SDKダウンロード
以下のリンクからUnityのVideo SDKをダウンロードします。自分はVersion4.0.0でやりました。
SDKs Download | Agora Documentation
Unityプロジェクトの設定
SDKのインポート
Unityプロジェクトを作成して上でダウンロードしたunitypackageをインポートします。
自分はUnity2021.3.11f1でやりました。
これが出たら一番左を選択。
AppIdとTokenの設定
次にインポートしたアセットからAssets/Agora-RTC-Plugin/API-Example/AppIdInput/AppIdInput.assetを編集します。
ここでまずChannel Nameを適当に決めておきます。
次にここにアクセスしてProject ManagementからCreateでプロジェクトを作ります。
Project NameとUse Caseは適当に、Authenticationですが、下のTesting modeを選んでもTokenは必要になるようです。とりあえず上のSeccured modeを選択しておきます。
作成したプロジェクトの編集ページに入り、中ほどのFeaturesからGenerate temp RTC Tokenのページに入ります。
上で決めたChannel Nameを入力して下の「Generate」をクリック。
Unityに戻って、このApp IDとTemp TokenをAppIdInput.assetにコピペしてアクセス権限の設定は終了です。ちなみにこの方法で作成したTokenは24時間しか使えないので注意してください。
シーン設定
Unityプロジェクト内のAssets/Agora-RTC-Plugin/API-Example/Examples/Advanced/ScreenShare/ScreenShareScene.unityを開きます。
現状のままビルドしても動作しますが、見づらくなるのでスクリプトに少し細工をします。
Assets/Agora-RTC-Plugin/API-Example/Examples/Advanced/ScreenShare/ScreenShare.csを開いて、339行目あたりに
go.GetComponent<RectTransform>().sizeDelta = new Vector2(20, 20);
と追加します。シェアリングで共有される画面のサイズ設定をここで行っています。
ビルド
Android, windowsはUnityからビルドして起動すればすぐ動作を確認できます。(Unity Editor上では動作しません)
iOS用のビルド
iOSではXCodeに手を入れるなどして、少し手順が複雑です。
Unityでビルドする前にProjectSettings/OtherSettingsのCamera Usage DescriptionとMicrophone Usage Descriptionに適当な値を記入して、Targe minimum iOS Versionは12.0以上にしておきます。
XCodeでの作業
次にXCodeで書き出したプロジェクトを開きます。最初にプロジェクトのProvisioning Fileを作成します。
次に画面共有用のExtensionを作成します。
↓の画面では「Activate」を選択。
Deployment Infoで対象のiOSのバージョンが12以上になっていることを確認してください。Unity-iPhone Targetにおけるこの数字も同じ値になるようにしてください。
次にFrameworkを追加します。
下のAdd Filesを選択。
Frameworks/Agora-RTC-Plugin/Agora-Unity-RTC-SDK/Plugins/iOS/以下のすべてを選択してOpenをクリック
それからInfoタブを開いてNSExtensionPrincipalClassの値をAgoraReplayKitHandlerにします。
あとはビルドしてデバイスにインストールすればOKです。
iOS上での操作方法
アプリの画面上で「Start Sharing」を押した後、iOS側では「画面収録」から先ほど作った画面共有用のExtensionを実行する必要があります。
実行
左からAndroid, iPhone, Windowsです。Windowsは画面小さすぎてわかりませんがiTunesの画面が出てます。