From d81431e2bf7ece994a0252e8f148921f7139250b Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Wed, 31 Jul 2024 23:26:59 +0900 Subject: [PATCH] =?UTF-8?q?2024/07/19=20=E6=99=82=E7=82=B9=E3=81=AE?= =?UTF-8?q?=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=9F=BA=E3=81=A5=E3=81=8D?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/htmlmediaelement/setsinkid/index.md | 34 +++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/files/ja/web/api/htmlmediaelement/setsinkid/index.md b/files/ja/web/api/htmlmediaelement/setsinkid/index.md index bf240af2c7ff95..4527cfcca9d4e9 100644 --- a/files/ja/web/api/htmlmediaelement/setsinkid/index.md +++ b/files/ja/web/api/htmlmediaelement/setsinkid/index.md @@ -1,14 +1,16 @@ --- -title: HTMLMediaElement.setSinkId() +title: "HTMLMediaElement: setSinkId() メソッド" +short-title: setSinkId() slug: Web/API/HTMLMediaElement/setSinkId l10n: - sourceCommit: af967bb052695baa631c004b9b149c6f91920776 + sourceCommit: 3df177b401e00e3a855c40fc074b5ef2469b700d --- -{{APIRef("HTML DOM")}} +{{APIRef("Audio Output Devices API")}}{{securecontext_header}} -**`HTMLMediaElement.setSinkId()`** メソッドは、出力に使用するオーディオ機器の ID を設定し、 [`Promise`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise) を返します。 -これは、アプリケーションが指定された機器を使用することを許可されている場合にのみ動作します。 +**`setSinkId()`** は {{domxref("HTMLMediaElement")}} インターフェイスのメソッドで、出力に使用するオーディオ機器の ID を設定し、プロミス ({{jsxref("Promise")}}) を返します。 + +これは、アプリケーションが指定された機器を使用することを許可されている場合にのみ動作します。詳しくは下記の[セキュリティ要件](#セキュリティ要件)を参照してください。 ## 構文 @@ -28,20 +30,32 @@ setSinkId(sinkId) ### 例外 - `NotAllowedError` {{domxref("DOMException")}} - - : `speaker-selection` [許可ポリシー](/ja/docs/Web/HTTP/Permissions_Policy)が音声出力の使用をブロックするために使用された場合に返されます。 + - : [`speaker-selection`](/ja/docs/Web/HTTP/Headers/Permissions-Policy/speaker-selection) [権限ポリシー](/ja/docs/Web/HTTP/Permissions_Policy)が音声出力の使用をブロックするために使用された場合に返されます。 - `NotFoundError` {{domxref("DOMException")}} - : `deviceId` がどの音声機器にも一致しない場合に返されます。 - `AbortError` {{domxref("DOMException")}} - : 音声出力機器から新しい音声機器への切り替えに失敗した場合に返されます。 +## セキュリティ要件 + +この API にアクセスするには、以下の制約があります。 + +- このメソッドは[安全なコンテキスト](/ja/docs/Web/Security/Secure_Contexts)の中で呼び出すこと。 +- アクセスが [`speaker-selection`](/ja/docs/Web/HTTP/Headers/Permissions-Policy/speaker-selection) HTTP [権限ポリシー](/ja/docs/Web/HTTP/Permissions_Policy)で制限されることがあります。 +- 既定以外の端末にアクセスするには、そのユーザー権限が要求されます。 + ユーザーは、{{domxref("MediaDevices.selectAudioOutput()")}} で表示されるプロンプトで、ID に関連付けられた端末を選択することで、その権限を付与します。 + ## 例 +この例では、{{domxref("MediaDevices.enumerateDevices()")}} が返す配列から音声出力機器を選択し、それを音声のシンクとして設定する方法を示します。 +`enumerateDevices()` の結果には、ユーザー権限が要求されていないか、すでに付与されている端末しか含まれないことに注意してください。 + ```js const devices = await navigator.mediaDevices.enumerateDevices(); const audioDevice = devices.find((device) => device.kind === "audiooutput"); const audio = document.createElement("audio"); await audio.setSinkId(audioDevice.deviceId); -console.log(`Audio is being played on ${audio.sinkId}`); +console.log(`Audio is being output on ${audio.sinkId}`); ``` ## 仕様書 @@ -51,3 +65,9 @@ console.log(`Audio is being played on ${audio.sinkId}`); ## ブラウザーの互換性 {{Compat}} + +## 関連情報 + +- [オーディオ出力機器 API](/ja/docs/Web/API/Audio_Output_Devices_API) +- {{domxref("MediaDevices.selectAudioOutput()")}} +- {{domxref("HTMLMediaElement.sinkId")}}