オーディオセッション API
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
オーディオセッション API は、 Web アプリケーションが、デバイス上で再生されている他のオーディオとの相互作用を制御するためのメカニズムを提供します。
概念と使用法
人々はますますウェブを通じてメディアを消費するようになり、ウェブは今やオーディオやビデオコンテンツにアクセスするための主要なチャネルとなっています。しかし、ウェブ上のメディアは、基盤となるプラットフォームとのシームレスな統合が欠けている場合が少なくありません。 オーディオセッション API は、開発者がウェブアプリケーションで生成されたオーディオがデバイス上の他のアプリケーションのオーディオとどのように相互作用するかを指定できるようにすることで、このギャップを解消します。例えば、他のオーディオと同時に再生したり、音量を下げたり、一時停止してオーディオを単独で再生したりできます。
ウェブページは、 HTMLMediaElement や ウェブオーディオ API などの API を使用して、さまざまな方法で音声処理を実行できます。オーディオセッションは、ウェブページによって生成された集約された音声を表し、ウェブページが音声出力の一般的な性質を表現できるようにします。
音声セッションの種類
API は、アプリケーションが生成するオーディオの種類を指定する、いくつかのオーディオセッションタイプをサポートしています。
"auto"— デフォルト。ユーザーエージェントは、使用されているオーディオ API に基づいて最適なタイプを自動的に選択します。"playback"— 音楽や動画などのメディア再生用です。このタイプの音声は、他のオーディオ再生音声と混用しないでください。"transient"— 通知音のような短い音です。このタイプの音は通常、他の音声の上に重ねて再生されます。"transient-solo"— 他のすべての音声を一時停止して単独で再生される音声(音声プロンプトなど)のみを再生します。"ambient"— 他の音声ソースとミックスできる音声用。"play-and-record"— ビデオ会議など、音声の再生と録音の両方を行うアプリケーション向け。
インターフェース
AudioSession-
オーディオセッションの動作を制御するためのメインインターフェース。オーディオセッションタイプの設定なども含まれます。
他のインターフェースへの拡張
-
現在のドキュメントの
AudioSessionオブジェクトを返します。
例
>ビデオ会議の音声セッションを設定する
ビデオ会議アプリケーションでは、再生と録画の両方が同時に必要となります。オーディオセッション API は、このような場合に役立ちます。
まず、オーディオセッションタイプを "play-and-record" に設定し、このページではマイクへのアクセスと音声出力が必要であることをプラットフォームに通知します。対応プラットフォームでは、これによりシステム音量ルーティングが調整され(例えば、モバイルデバイスではスピーカーではなくイヤホンを使用するなど)、他のアプリケーションからの音声が通話を妨害するのを防ぐことができます。
navigator.audioSession.type = "play-and-record";
次に、通常どおりビデオ通話用のメディアストリームを設定します。プラットフォームは、これらのストリームによって生成された音声を "play-and-record" セッションタイプに従って処理します。
// Start playing remote media
remoteVideo.srcObject = remoteMediaStream;
remoteVideo.play();
// Start capturing local media
navigator.mediaDevices
.getUserMedia({ audio: true, video: true })
.then((stream) => {
localVideo.srcObject = stream;
});
仕様
| Specification |
|---|
| Audio Session> # audiosession> |
| Audio Session> # dom-navigator-audiosession> |