プレゼンテーション - 画面共有
プレゼンテーションとは、発表者が他の参加者にスライドなどの資料を見せるために自分の画面を共有することをいいます。ここでは、通話タイプによるプレゼンテーション機能の使い方について説明します。
対応する通話タイプ | SDKの最低バージョン |
---|---|
1対1通話、グループ通話(カンファレンス) | PlanetKit 3.0 |
PlanetKitは、プレゼンテーション機能でHD解像度を使用しているため、クライアントのネットワーク条件が推奨帯域幅を上回っている場合に最適化されたサービスを提供できます。
1対1通話プレゼンテーション
発表者は、PlanetKitCall
のstartMyScreenShare()
とstopMyScreenShare()
を呼び出し、プレゼンテーションを開始/終了するタイミングを決定します。
関連API
1対1通話で画面共有に関連するAPIは次のとおりです。カウンターパートとは、プレゼンテーションを見せるピアのことをいいます。
発表者側のAPI | 説明 | カウンターパート側のAPI | 説明 |
---|---|---|---|
startMyScreenShare() iOS, macOS | 発表者が画面共有を開始する | peerDidStartScreenShare iOS, macOS | 発表者の画面共有が開始される |
- | - | addPeerScreenShareView() iOS, macOS | アプリケーションが作成したビューインスタンスを設定する |
stopMyScreenShare() iOS, macOS | 発表者が画面共有を終了する | peerDidStopScreenShare iOS, macOS | 発表者の画面共有が終了される |
- | - | removePeerScreenShareView() iOS, macOS | 解除する前にビューインスタンスを除去する |
カウンターパート側では、peerDidStartScreenShare
イベントを受け取ってプレゼンテーションが開始されたことが分かったら、必ずビューインスタンスを作成してaddPeerScreenShareView()
を呼び出し、PlanetKitに画面をレンダリングさせる必要があります。
プレゼンテーションビデオのデータは、ピアに自動でストリーミングされます。
1対1通話プレゼンテーションの流れ
1対1通話でプレゼンテーションを開始する流れは次のとおりです。
1対1通話でプレゼンテーションを中止する流れは次のとおりです。
画面共有終了の理由
stopMyScreenShare()
を呼び出す際に、アプリケーションの要求事項で定義した理由のうち1つを設定できます。設定の理由はpeerDidStopScreenShare
イベントが渡します。この理由の値は整数型であるため、直接理由と値を定義してください。また、プラットフォームに関係なく一貫して使用する必要があります。
理由フィールドを使用しなければ、peerDidStopScreenShare
のhasReason
フィールドはfalse
に設定されます。
グループ通話プレゼンテーション
発表者は、PlanetKitConference
のstartMyScreenShare()
とstopMyScreenShare()
を呼び出し、プレゼンテーションを開始/終了するタイミングを決定します。
関連API
グループ通話で画面共有に関連するAPIは次のとおりです。カウンターパートとはグループ通話でプレゼンテーションを見せる参加者のことをいいます。
発表者側のAPI | 説明 | カウンターパート側のAPI | 備考 |
---|---|---|---|
startMyScreenShare() iOS, macOS | 発表者が画面共有を開始する | screenShareDidUpdate iOS, macOS(state=ENABLED) | 発表者の画面共有が開始される |
- | - | PlanetKitPeerControl のstartScreenShare() iOS, macOS | 画面共有ビューで画面共有ビデオのレンダリングを開始する |
stopMyScreenShare() iOS, macOS | 発表者が画面共有を終了する | screenShareDidUpdate iOS, macOS(state=DISABLED) | 発表者の画面共有が終了される |
- | - | PlanetKitPeerControl のstopScreenShare() iOS, macOS | 画面共有ビューで画面共有ビデオのレンダリングを中断する |
changeMyScreenShareDestination() iOS, macOSchangeMyScreenShareDestinationToMainRoom() iOS, macOS | 画面を共有する対象のサブグループを変更する | screenShareDidUpdate iOS, macOS(state=ENABLED) screenShareDidUpdate iOS, macOS(state=DISABLED) | 特定のサブグループへの画面共有が開始/終了される |
ピアの画面共有ビューで画面共有ビデオを制御するために、PlanetKitPeerControl
のメソッドを使用することができます。画面共有ビデオ制御のためにPlanetKitPeerControl
を使用する方法について詳しくは、グループ通話画面共有のサンプルコードを参照してください。
PlanetKitConferenceDelegate
のscreenShareDidUpdate
イベントまたはPlanetKitPeerControlDelegate
のdidUpdateScreenShare
イベントを受け取ってプレゼンテーションが開始されたことが分かったら(state=ENABLED)、カウンターパート側は必ずPlanetKitPeerControl
のstartScreenShare()
を呼び出し、PlanetKitに画面をレンダリングさせる必要があります。
1対1通話とは異なり、プレゼンテーションビデオデータを参加者に自動でストリーミングすることはありません。したがって、グループ通話のカウンターパート側は共有画面ビデオを受信するために、必ずPlanetKitPeerControl
のstartScreenShare()
を呼び出す必要があります。
グループ通話プレゼンテーションの流れ
グループ通話でプレゼンテーションを開始する流れは次のとおりです。
グループ通話でプレゼンテーションを中止する流れは次のとおりです。
グループ通話でプレゼンテーションが開始された後に参加したユーザーの流れは次のとおりです。
サブグループ内のプレゼンテーション
「dataSession」プロパティをtrue
に設定してサブグループに加入すると、サブグループ内でプレゼンテーションを使用できます。サブグループ範囲内でプレゼンテーションを開始すると、プレゼンテーションビデオのデータはサブグループメンバーだけに共有されます。
画面共有の対象となるサブグループを変更するには、changeMyScreenShareDestination()
またはchangeMyScreenShareDestinationToMainRoom()
を使用します。詳しくは、サブグループフロー - 画面共有を参照してください。
PlanetKit 4.1以上のバージョンから同時に2つの画面を共有してもらう機能を提供します。2つのプレゼンテーションビデオを受信すると、UXが混乱したり、トラフィックが多くなったりする可能性はありますが、サブグループ機能と連携して便利な使い方ができます。
たとえば、最初の発表者が参加者全員に対してプレゼンテーションを実施し、次の発表者がサブグループ範囲内でプレゼンテーションを実施するとします。サブグループのメンバーは、PlanetKitPeerControl
のstartScreenShare()
を調整して、いずれかの画面を受信するか、または両方とも受信するかを選択できます。
グループ通話の互換性
PlanetKit 4.1以上のバージョンから参加者にプレゼンテーションビデオを自動転送しない方法を導入しました。そのため、PlanetKit 4.1以上のバージョンからはscreenShareDidUpdate
とrequestPeerScreenShare()
を追加し、サブグループ範囲内のプレゼンテーション機能をサポートします。
この機能は、サブグループ機能を提供しないWebPlanetKitとPlanetKitの旧バージョンの動作には影響しません。つまり、WebPlanetKitやPlanetKit 4.1未満のバージョンを使用するクライアントには、LINE Planet Cloudがプレゼンテーションのビデオデータを自動でストリーミングします。
デスクトップに関する考慮事項
デスクトップアプリケーションでは、発表者がモニターの全画面表示またはアプリケーションウィンドウを選択できます。したがって、WindowsおよびmacOSのアプリケーションでは、startMyScreenShare()
を呼び出す前にどの画面を共有するかを決定する必要があります。使用できる画面リストはPlanetKitが提供します。サンプルコードでその内容が確認できます。
発表者がスライドショーを実行するなど、ビューを変更する時は次のようなAPIを呼び出す必要があります。
OS | 関連API |
---|---|
macOS | PlanetKitScreen のchange(device:completion:) |
Windows | ScreenShareController::StartScreenShareCapture() |