本文にスキップする
Version: 5.5

プレゼンテーション - 画面共有

プレゼンテーションとは、発表者が他の参加者にスライドなどの資料を見せるために自分の画面を共有することをいいます。ここでは、通話タイプによるプレゼンテーション機能の使い方について説明します。

対応する通話タイプSDKの最低バージョン
1対1通話、グループ通話(カンファレンス)PlanetKit 3.0
Note

PlanetKitは、プレゼンテーション機能でHD解像度を使用しているため、クライアントのネットワーク条件が推奨帯域幅を上回っている場合に最適化されたサービスを提供できます。

1対1通話プレゼンテーション

発表者は、PlanetKitCallstartMyScreenShare()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通話画面共有開始シーケンス図

1対1通話でプレゼンテーションを中止する流れは次のとおりです。

1対1通話画面共有中止シーケンス図

画面共有終了の理由

stopMyScreenShare()を呼び出す際に、アプリケーションの要求事項で定義した理由のうち1つを設定できます。設定の理由はpeerDidStopScreenShareイベントが渡します。この理由の値は整数型であるため、直接理由と値を定義してください。また、プラットフォームに関係なく一貫して使用する必要があります。

理由フィールドを使用しなければ、peerDidStopScreenSharehasReasonフィールドはfalseに設定されます。

グループ通話プレゼンテーション

発表者は、PlanetKitConferencestartMyScreenShare()stopMyScreenShare()を呼び出し、プレゼンテーションを開始/終了するタイミングを決定します。

関連API

グループ通話で画面共有に関連するAPIは次のとおりです。カウンターパートとはグループ通話でプレゼンテーションを見せる参加者のことをいいます。

発表者側のAPI説明カウンターパート側のAPI備考
startMyScreenShare() iOS, macOS発表者が画面共有を開始するscreenShareDidUpdate iOS, macOS
(state=ENABLED)
発表者の画面共有が開始される
--PlanetKitPeerControlstartScreenShare() iOS, macOS画面共有ビューで画面共有ビデオのレンダリングを開始する
stopMyScreenShare() iOS, macOS発表者が画面共有を終了するscreenShareDidUpdate iOS, macOS
(state=DISABLED)
発表者の画面共有が終了される
--PlanetKitPeerControlstopScreenShare() iOS, macOS画面共有ビューで画面共有ビデオのレンダリングを中断する
changeMyScreenShareDestination() iOS, macOS
changeMyScreenShareDestinationToMainRoom() iOS, macOS
画面を共有する対象のサブグループを変更するscreenShareDidUpdate iOS, macOS
(state=ENABLED)
screenShareDidUpdate iOS, macOS
(state=DISABLED)
特定のサブグループへの画面共有が開始/終了される
Note

ピアの画面共有ビューで画面共有ビデオを制御するために、PlanetKitPeerControlのメソッドを使用することができます。画面共有ビデオ制御のためにPlanetKitPeerControlを使用する方法について詳しくは、グループ通話画面共有のサンプルコードを参照してください。

PlanetKitConferenceDelegatescreenShareDidUpdateイベントまたはPlanetKitPeerControlDelegatedidUpdateScreenShareイベントを受け取ってプレゼンテーションが開始されたことが分かったら(state=ENABLED)、カウンターパート側は必ずPlanetKitPeerControlstartScreenShare()を呼び出し、PlanetKitに画面をレンダリングさせる必要があります。

Note

1対1通話とは異なり、プレゼンテーションビデオデータを参加者に自動でストリーミングすることはありません。したがって、グループ通話のカウンターパート側は共有画面ビデオを受信するために、必ずPlanetKitPeerControlstartScreenShare()を呼び出す必要があります。

グループ通話プレゼンテーションの流れ

グループ通話でプレゼンテーションを開始する流れは次のとおりです。

グループ通話画面共有開始シーケンス図

グループ通話でプレゼンテーションを中止する流れは次のとおりです。

グループ通話画面共有中止シーケンス図

グループ通話でプレゼンテーションが開始された後に参加したユーザーの流れは次のとおりです。

グループ通話画面共有開始後に参加したユーザーシーケンス図

サブグループ内のプレゼンテーション

「dataSession」プロパティをtrueに設定してサブグループに加入すると、サブグループ内でプレゼンテーションを使用できます。サブグループ範囲内でプレゼンテーションを開始すると、プレゼンテーションビデオのデータはサブグループメンバーだけに共有されます。

画面共有の対象となるサブグループを変更するには、changeMyScreenShareDestination()またはchangeMyScreenShareDestinationToMainRoom()を使用します。詳しくは、サブグループフロー - 画面共有を参照してください。

Tip

PlanetKit 4.1以上のバージョンから同時に2つの画面を共有してもらう機能を提供します。2つのプレゼンテーションビデオを受信すると、UXが混乱したり、トラフィックが多くなったりする可能性はありますが、サブグループ機能と連携して便利な使い方ができます。

たとえば、最初の発表者が参加者全員に対してプレゼンテーションを実施し、次の発表者がサブグループ範囲内でプレゼンテーションを実施するとします。サブグループのメンバーは、PlanetKitPeerControlstartScreenShare()を調整して、いずれかの画面を受信するか、または両方とも受信するかを選択できます。

グループ通話の互換性

PlanetKit 4.1以上のバージョンから参加者にプレゼンテーションビデオを自動転送しない方法を導入しました。そのため、PlanetKit 4.1以上のバージョンからはscreenShareDidUpdaterequestPeerScreenShare()を追加し、サブグループ範囲内のプレゼンテーション機能をサポートします。

この機能は、サブグループ機能を提供しないWebPlanetKitとPlanetKitの旧バージョンの動作には影響しません。つまり、WebPlanetKitやPlanetKit 4.1未満のバージョンを使用するクライアントには、LINE Planet Cloudがプレゼンテーションのビデオデータを自動でストリーミングします。

デスクトップに関する考慮事項

デスクトップアプリケーションでは、発表者がモニターの全画面表示またはアプリケーションウィンドウを選択できます。したがって、WindowsおよびmacOSのアプリケーションでは、startMyScreenShare()を呼び出す前にどの画面を共有するかを決定する必要があります。使用できる画面リストはPlanetKitが提供します。サンプルコードでその内容が確認できます。

発表者がスライドショーを実行するなど、ビューを変更する時は次のようなAPIを呼び出す必要があります。

OS関連API
macOSPlanetKitScreenchange(device:completion:)
WindowsScreenShareController::StartScreenShareCapture()

関連ドキュメント

関連サンプルコード