カスタムオーディオストリーム
WebPlanetKitは、通話開始時に基本的にマイクとカメラデバイスでMediaStreamを生成して通話に使用します。ただし、アプリケーションの要求事項によっては、これを変更する必要があります。ユーザーのマイク入力の代わりに、外部ソースから取得したオーディオを使用するのが一例です。
このような要求を満たすために、WebPlanetKitは、希望するMediaStreamを直接供給できるカスタムメディアストリーム(custom media stream)機能を提供します。この機能を利用することで、ユーザーが希望するMediaStreamを直接WebPlanetKitモジュールにレンダリングし、相手に伝えることができます。
| 通話タイプ | SDKの最低バージョン |
|---|---|
| 1対1通話、グループ通話(カンファレンス) | WebPlanetKit 5.3 |
バーチャル背景機能を使用するときは、カスタムメディアストリームを設定できません。
活用事例
以下のようなアプリケーションの要求事項がある場合、カスタムメディアストリームを活用して実装できます。
- オーディオファイルをオーディオソースとして使用したいとき
- 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();
カスタムメディアストリームで通話を開始する
準備したカスタムメディアストリームで通話を開始できます。MakeCallParamsやVerifyCallParams、またはConferenceParamsのcustomMediaStreamに準備したカスタムメディアストリームを設定します。
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
});
- カスタムメディアストリームのオーディオが設定されているときは、
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は、次のとおりです。