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

ハードウェアビデオコーデックのサポート

LINE Planetは、1対1通話やグループ通話(カンファレンス)でユーザーのデバイス上でハードウェアビデオコーデックが有効または無効になるようにリクエストできます。

ここでは、ハードウェアビデオコーデックの有効または無効を設定し、その結果を確認する方法について説明します。

対応する通話タイプSDKの最低バージョン
1対1通話、グループ通話PlanetKit 3.2
Note

LINE Planet自体では、ハードウェアビデオコーデックをサポートするためのH.264コーデックを提供していません。ユーザーのデバイス上でH.264ハードウェアコーデックが利用可能であれば、LINE Planetはユーザーのデバイス上でH.264ハードウェアコーデックが有効になるようにリクエストします。詳しくは、LINE Planetの通話品質を参照してください。

ハードウェアビデオコーデックを有効または無効にする

通話タイプによってハードウェアビデオコーデックを有効または無効にする方法について説明します。

Note

以下の理由により、必ずしもハードウェアビデオコーデックが有効になることを保証するものではありません。

  • 1対1通話で、ピアがハードウェアビデオコーデックを利用できない場合があります。
  • 運用上の問題により、LINE Planetチームがその機能を無効にする場合があります。

1対1通話

1対1通話では、ハードウェアビデオコーデックを有効または無効にするために通話パラメーターを設定できます。

発信者側

発信者側では、次のコードのように、通話を作成(make)する際にエンコード機能とデコード機能の両方がハードウェアビデオコーデックを有効または無効にするように設定します。

let myVideoSendCapability: PlanetKitVideoCapability = PlanetKitVideoCapability.callSendDefault
let myVideoReceiveCapability: PlanetKitVideoCapability = PlanetKitVideoCapability.callReceiveDefault

// For both callSendDefault and callReceiveDefault, the default value of preferredHwCodec is true.
// To request deactivation of hardware video codec, set both to false as follows:
// myVideoSendCapability.preferredHwCodec = false
// myVideoReceiveCapability.preferredHwCodec = false

let makeCallSettings = try! PlanetKitMakeCallSettingBuilder()
.withMyVideoSendCapabilityKey(capability: myVideoSendCapability)
.withMyVideoReceiveCapabilityKey(capability: myVideoReceiveCapability)
.build()

let param = PlanetKitCallParam(myUserId: myUserId, peerUserId: peerUserId, delegate: delegate, accessToken: accessToken)

let result = PlanetKitManager.shared.makeCall(param: param, settings: makeCallSettings)

受信者側

受信者側では、次のコードのように、通話を受信(verify)する際にエンコード機能とデコード機能の両方がハードウェアビデオコーデックを有効または無効にするように設定します。

let myVideoSendCapability: PlanetKitVideoCapability = PlanetKitVideoCapability.callSendDefault
let myVideoReceiveCapability: PlanetKitVideoCapability = PlanetKitVideoCapability.callReceiveDefault

// For both callSendDefault and callReceiveDefault, the default value of preferredHwCodec is true.
// To request deactivation of hardware video codec, set both to false as follows:
// myVideoSendCapability.preferredHwCodec = false
// myVideoReceiveCapability.preferredHwCodec = false

let verifyCallSettings = try! PlanetKitVerifyCallSettingBuilder()
.withMyVideoSendCapabilityKey(capability: myVideoSendCapability)
.withMyVideoReceiveCapabilityKey(capability: myVideoReceiveCapability)
.build()

let result = PlanetKitManager.shared.verifyCall(myUserId: myUserId, ccParam: ccParam, settings: verifyCallSettings)

グループ通話

グループ通話でハードウェアビデオコーデックを有効または無効にするには、次のコードのように、グループ通話に参加する際にエンコード機能とデコード機能の両方がハードウェアビデオコーデックを有効または無効にするように設定します。

let myVideoSendCapability: PlanetKitVideoCapability = PlanetKitVideoCapability.conferenceSendDefault

// For conferenceSendDefault, the default value of preferredHwCodec is true.
// To request deactivation of hardware video codec for encoding, set preferredHwCodec to false as follows:
// myVideoSendCapability.preferredHwCodec = false

// To enable or disable hardware video codec for decoding, set withMyVideoRecvPreferredHwCodecKey(enable:) of PlanetKitJoinConferenceSettingBuilder to true or false.
let joinConferenceSettings = try! PlanetKitJoinConferenceSettingBuilder()
.withMyVideoSendCapabilityKey(capability: myVideoSendCapability)
.withMyVideoRecvPreferredHwCodecKey(enable: true)
.build()

let param = PlanetKitConferenceParam(myUserId: myUserId, roomId: roomId, roomServiceId: roomServiceId, delegate: delegate, accessToken: accessToken)

let result = PlanetKitManager.shared.joinConference(param: param, settings: joinConferenceSettings)

ハードウェアビデオコーデックが有効または無効設定を確認する

ハードウェアビデオコーデックの有効または無効設定の結果は、コールセットアップ(call setup)プロセスで決まります。したがって、didConnectイベント発生後に結果を確認する必要があります。

  • 1対1通話では、didConnectで渡したPlanetKitCallConnectedParamisVideoHwCodecEnabledを使用してハードウェアコーデックが有効かどうかを確認できます。
  • グループ通話では、didConnectで渡したPlanetKitConferenceConnectedParamisVideoHwCodecEnabledを使用してハードウェアコーデックが有効かどうかを確認できます。

関連API

ハードウェアビデオコーデックのサポートに関連するAPIは次のとおりです。

1対1通話

  • PlanetKitMakeCallSettingBuilderwithMyVideoSendCapabilityKey() iOS, macOS
  • PlanetKitMakeCallSettingBuilderwithMyVideoReceiveCapabilityKey() iOS, macOS
  • PlanetKitVerifyCallSettingBuilderwithMyVideoSendCapabilityKey() iOS, macOS
  • PlanetKitVerifyCallSettingBuilderwithMyVideoReceiveCapabilityKey() iOS, macOS

グループ通話

  • PlanetKitJoinConferenceSettingBuilderwithMyVideoSendCapabilityKey() iOS, macOS
  • PlanetKitJoinConferenceSettingBuilderwithMyVideoRecvPreferredHwCodecKey() iOS, macOS