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

音声通話中のビデオ通話の有効化

音声通話中にビデオ通話に切り替えたり、ビデオ通話中にもう一度音声通話に切り替えたりすることができます。これを、ビデオ通話を有効または無効にすると表現します。

ビデオ通話を有効にすることをリクエストする手順と、ピアがリクエストに応答する方法は、通話タイプによって異なります。ここでは、通話タイプによってビデオ通話を有効または無効にする方法について説明します。

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

1対1通話

1対1通話でビデオ通話を有効または無効にするには、PlanetKitCallの次のメソッドを使用します。

メソッド説明関連イベントコールバック
EnableVideo()ビデオ通話を有効にすることをリクエストします。OnVideoEnabledByPeer
DisableVideo()ビデオ通話を無効にすることをリクエストします。ビデオ通話を無効にする理由を提供できます。OnVideoDisabledByPeer

レスポンスタイプ

1対1通話で相手がビデオ通話をリクエストしたとき、ユーザーのレスポンスタイプは、通話設定のプロセスで設定できます。

レスポンスタイプはEResponseOnVideoEnableにて、以下のように定義されています。

  • PAUSE:相手がビデオ通話を有効にすることをリクエストした際に、ユーザーのビデオを一時停止します。
  • SEND:相手がビデオ通話を有効にすることをリクエストした際に、ユーザーのビデオを送信します。

次のようにレスポンスタイプを設定できます。

  • 発信側では、MakeCallParam::SetResponseOnVideoEnable()を使用してレスポンスタイプを設定します。
  • 受信側では、VerifyCallParam::SetResponseOnVideoEnable()を使用してレスポンスタイプを設定します。

ビデオ通話を有効にする

ビデオ通話をリクエストした側は常に自分のカメラストリームを送信しますが、受信者側には2つのシナリオがあります。シナリオはレスポンスタイプの値によって選択されます。

  • シナリオ 1:ビデオストリーミングを送信しながら手動で応答する
    • 受信者のレスポンスタイプがPAUSEの場合です。
    • このシナリオでは、ビデオを一時停止した状態でビデオ通話を開始します。 ビデオ通話のリクエストを受けたユーザー(Client 02)が自分のビデオストリームを送信するタイミングを選択できます。
      1対1通話ビデオ通話を有効にする手動で応答シーケンス図
      外部デバイスが接続されていなければ、Client02(iOS/Android PlanetKit)はオーディオプレイバックメディアをスピーカーフォンに変更します。
    • 関連イベントであるOnPeerVideoPausedOnPeerVideoResumedの詳細は、ビデオの一時停止イベントを参照してください。
  • シナリオ 2:ビデオストリーミングを送信しながら自動で応答する
    • 受信者のレスポンスタイプがSENDの場合です。
    • このシナリオでは、ビデオ通話のリクエストを受けたユーザー(Client 02)がリクエストを受けたときに自分のビデオストリームを送信します。
      1対1通話ビデオ通話を有効にする自動で応答シーケンス図
      外部デバイスが接続されていなければ、Client02(iOS/Android PlanetKit)はオーディオプレイバックメディアをスピーカーフォンに変えます。
Tip

あらかじめ受信者のシナリオを定めてから設定することを推奨します。つまり、レスポンスタイプフィールドの値をPAUSEまたはSENDなどの定数に設定して使用してください。

ビデオ通話を無効にする

ビデオ通話の途中でビデオストリーミングを中止したい場合は、disableReasonの値と共にDisableVideo()を呼び出します。

1対1通話ビデオ通話を無効にするシーケンス図

リジェクトの流れの例

EnableVideo()リクエストの受信者がビデオ通話に参加したくなければ、リクエストをリジェクトできます。ここでレスポンスタイプはPAUSEであると仮定します。このとき、通話の手順は以下のようになるべきです。

1対1通話ビデオ通話リジェクトシーケンス図

カメラの初期化に失敗した場合

クライアントがOnVideoEnabledByPeerイベントを受信した後カメラの初期化(open)に失敗した場合、クライアントはカメラの初期化を再試行し、初期化に成功した上でResumeMyVideo()を呼び出す必要があります。

グループ通話

グループ通話でビデオ通話を有効または無効にするには、PlanetKitConferenceの以下のメソッドを使用します。

メソッド説明関連イベントコールバック
EnableVideo()ビデオ通話を有効にすることをリクエストします。OnPeersVideoUpdated
(state=PLNK_VIDEO_STATE_ENABLED)
DisableVideo()ビデオ通話を無効にすることをリクエストします。
参考:1対1通話とは違って、グループ通話ではdisableReasonは必要ありません。
OnPeersVideoUpdated
(state=PLNK_VIDEO_STATE_DISABLED)

OnPeersVideoUpdatedではPLNK_VIDEO_STATE_ENABLEDPLNK_VIDEO_STATE_DISABLEDPLNK_VIDEO_STATE_PAUSEDの3つのステータスを渡します。

ステータスがPLNK_VIDEO_STATE_PAUSEDの場合、pauseReasonを参照して必要な作業を行う必要があります。詳しくは、ビデオの一時停止イベントを参照してください。

ビデオ通話を有効にする

EnableVideo()を呼び出すと、ビデオ通話をリクエストしたユーザーは常に自分のカメラストリームを送ります。他の参加者はそれぞれPeerControl::StartVideo()を呼び出し、そのストリームを受け取るかどうかを決定する必要があります。

グループ通話ビデオ通話を有効にするシーケンス図
Note

PeerControlの使い方について詳しくは、グループビデオ通話のサンプルコードを参照してください。

ビデオ通話を無効にする

グループビデオ通話の途中でビデオストリームを中止するには、DisableVideo()を呼び出します。

グループ通話ビデオ通話を無効にするシーケンス図

インターフェースの変更

グループ通話でビデオ通話を有効にすることに関するイベントのインターフェースに以下のような変更がありました。

SDKバージョンAPI
PlanetKit 4.3以上OnPeersVideoUpdated
PlanetKit 4.0〜4.2evtConfVideoUpdated
PlanetKit 4.0未満evtConfUpdated

関連API

ビデオ通話を有効または無効にすることに関連するAPIは、以下のとおりです。

共通

1対1通話

Enum

メソッド

イベント

グループ通話

メソッド

イベント

関連ドキュメント