音声通話中のビデオ通話の有効化
音声通話中にビデオ通話に切り替えたり、ビデオ通話中にもう一度音声通話に切り替えたりすることができます。これを、ビデオ通話を有効または無効にすると表現します。
ビデオ通話を有効にすることをリクエストする手順と、ピアがリクエストに応答する方法は、通話タイプによって異なります。ここでは、通話タイプによってビデオ通話を有効または無効にする方法について説明します。
対応する通話タイプ | 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)が自分のビデオストリームを送信するタイミングを選択できます。
外部デバイスが接続されていなければ、Client02(iOS/Android PlanetKit)はオーディオプレイバックメディアをスピーカーフォンに変更します。 - 関連イベントである
OnPeerVideoPaused
とOnPeerVideoResumed
の詳細は、ビデオの一時停止イベントを参照してください。
- 受信者のレスポンスタイプが
- シナリオ 2:ビデオストリーミングを送信しながら自動で応答する
- 受信者のレスポンスタイプが
SEND
の場合です。 - このシナリオでは、ビデオ通話のリクエストを受けたユーザー(Client 02)がリクエストを受けたときに自分のビデオストリームを送信します。
外部デバイスが接続されていなければ、Client02(iOS/Android PlanetKit)はオーディオプレイバックメディアをスピーカーフォンに変えます。
- 受信者のレスポンスタイプが
あらかじめ受信者のシナリオを定めてから設定することを推奨します。つまり、レスポンスタイプフィールドの値をPAUSE
またはSEND
などの定数に設定して使用してください。
ビデオ通話を無効にする
ビデオ通話の途中でビデオストリーミングを中止したい場合は、disableReason
の値と共にDisableVideo()
を呼び出します。
リジェクトの流れの例
EnableVideo()
リクエストの受信者がビデオ通話に参加したくなければ、リクエストをリジェクトできます。ここでレスポンスタイプはPAUSE
であると仮定します。このとき、通話の手順は以下のようになるべきです。
カメラの初期化に失敗した場合
クライアントが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_ENABLED
、PLNK_VIDEO_STATE_DISABLED
、PLNK_VIDEO_STATE_PAUSED
の3つのステータスを渡します。
ステータスがPLNK_VIDEO_STATE_PAUSED
の場合、pauseReason
を参照して必要な作業を行う必要があります。詳しくは、ビデオの一時停止イベントを参照してください。
ビデオ通話を有効にする
EnableVideo()
を呼び出すと、ビデオ通話をリクエストしたユーザーは常に自分のカメラストリームを送ります。他の参加者はそれぞれPeerControl::StartVideo()
を呼び出し、そのストリームを受け取るかどうかを決定する必要があります。
PeerControl
の使い方について詳しくは、グループビデオ通話のサンプルコードを参照してください。
ビデオ通話を無効にする
グループビデオ通話の途中でビデオストリームを中止するには、DisableVideo()
を呼び出します。
インターフェースの変更
グループ通話でビデオ通話を有効にすることに関するイベントのインターフェースに以下のような変更がありました。
SDKバージョン | API |
---|---|
PlanetKit 4.3以上 | OnPeersVideoUpdated |
PlanetKit 4.0〜4.2 | evtConfVideoUpdated |
PlanetKit 4.0未満 | evtConfUpdated |
関連API
ビデオ通話を有効または無効にすることに関連するAPIは、以下のとおりです。
共通
1対1通話
Enum
メソッド
-
MakeCallParam::SetResponseOnVideoEnable()
-
VerifyCallParam::SetResponseOnVideoEnable()
-
PlanetKitCall::EnableVideo()
-
PlanetKitCall::DisableVideo()
-
PlanetKitCall::ResumeMyVideo()
イベント
グループ通話
メソッド
-
PlanetKitConference::EnableVideo()
-
PlanetKitConference::DisableVideo()
-
PlanetKitConference::ResumeMyVideo()