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

カスタムオーディオストリーム

WebPlanetKitは、通話開始時に基本的にマイクとカメラデバイスでMediaStreamを生成して通話に使用します。ただし、アプリケーションの要求事項によっては、これを変更する必要があります。ユーザーのマイク入力の代わりに、外部ソースから取得したオーディオを使用するのが一例です。

このような要求を満たすために、WebPlanetKitは、希望するMediaStreamを直接供給できるカスタムメディアストリーム(custom media stream)機能を提供します。この機能を利用することで、ユーザーが希望するMediaStreamを直接WebPlanetKitモジュールにレンダリングし、相手に伝えることができます。

通話タイプSDKの最低バージョン
1対1通話、グループ通話(カンファレンス)WebPlanetKit 5.3
Note

バーチャル背景機能を使用するときは、カスタムメディアストリームを設定できません。

活用事例

以下のようなアプリケーションの要求事項がある場合、カスタムメディアストリームを活用して実装できます。

  • オーディオファイルをオーディオソースとして使用したいとき
  • Webストリーミングを受けてオーディオソースとして使用したいとき
  • アプリケーションで直接MediaStreamを構成して使用したいとき

実装手順

カスタムメディアストリーム機能を利用して外部ソースから取得したオーディオを送信する方法は、次のとおりです。

外部オーディオソースでカスタムメディアストリームを準備する

外部オーディオソースを使用してカスタムメディアストリームに設定するMediaStreamを準備してください。

// Example of audio source
const createMediaStreamFromSample = async () => {
const audio = new Audio('/sample_audio.mp3');
audio.loop = true;

const audioContext = new (window.AudioContext || window.webkitAudioContext)();
const source = audioContext.createMediaElementSource(audio);
const destination = audioContext.createMediaStreamDestination();

source.connect(destination);
await audio.play();

return destination.stream;
};

// MediaStream of audio source
const sampleCustomMediaStream = await createMediaStreamFromSample();

カスタムメディアストリームで通話を開始する

準備したカスタムメディアストリームで通話を開始できます。MakeCallParamsVerifyCallParams、またはConferenceParamscustomMediaStreamに準備したカスタムメディアストリームを設定します。

const conferenceParams = {
...,
customMediaStream: sampleCustomMediaStream
}

planetKit.joinConference(conferenceParams);

通話中にカスタムメディアストリームを設定する

通話中に準備したカスタムメディアストリームを設定して使用するには、カスタムメディアストリームを引数として入れてsetCustomMediaStream()を呼び出します。

planetKit.setCustomMediaStream(sampleCustomMediaStream)
.then(() => {
// Successfully set custom audio stream
})
.catch((error) => {
// Failed to set custom audio stream
});
Note
  • カスタムメディアストリームのオーディオが設定されているときは、muteMyAudio()を呼び出してもカスタムメディアストリームの設定は解除されず、マイクのオーディオは使用されません。
  • changeAudioInputDevice()を呼び出してオーディオソースを変更するか、disableVideo()を呼び出してメディアソースを変更すると、カスタムメディアストリームのオーディオ設定が解除されます。

カスタムメディアストリームを解除する

カスタムメディアストリームを使用している最中、再びマイクとカメラデバイスで生成されたMediaStreamを使用するには、unsetCustomMediaStream()を呼び出します。

planetKit.unsetCustomMediaStream()
.then(() => {
// Successfully unset custom media stream
})
.catch((error) => {
// Failed to unset custom media stream
});

通話にカスタムメディアストリームのオーディオが設定されているかを確認する

通話にカスタムメディアストリームのオーディオが設定されているかを確認するには、hasSetCustomMediaStreamWithAudio()を呼び出します。

if (planetKit.hasSetCustomMediaStreamWithAudio()) {
// Currently custom media stream with audio is set
}

関連API

カスタムオーディオストリーム機能とこれに関連するAPIは、次のとおりです。