AudioContext: thuộc tính sinkId
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Thuộc tính chỉ đọc sinkId của giao diện AudioContext trả về sink ID của thiết bị đầu ra âm thanh hiện tại.
Giá trị
Thuộc tính này trả về một trong các giá trị sau, tùy thuộc vào cách sink ID được đặt:
- Một chuỗi rỗng
-
Nếu sink ID chưa được đặt tường minh, thiết bị đầu ra âm thanh mặc định của hệ thống sẽ được dùng và
sinkIdsẽ trả về một chuỗi rỗng. - Một chuỗi
-
Nếu sink ID được đặt dưới dạng giá trị chuỗi (bằng
setSinkId()hoặc tùy chọnsinkIdcủa hàm tạoAudioContext()),sinkIdsẽ trả về chính giá trị chuỗi đó. - Một đối tượng
AudioSinkInfo -
Nếu sink ID được đặt dưới dạng đối tượng tùy chọn (bằng
setSinkId()hoặc tùy chọnsinkIdcủa hàm tạoAudioContext()),sinkIdsẽ trả về một đối tượngAudioSinkInfophản ánh cùng các giá trị đã đặt trong đối tượng tùy chọn ban đầu.
Ví dụ
Trong ví dụ kiểm thử SetSinkId của chúng tôi (hãy xem mã nguồn), chúng tôi tạo một đồ thị âm thanh sinh ra một đoạn white noise dài ba giây bằng AudioBufferSourceNode, đồng thời cho nó đi qua một GainNode để giảm âm lượng bớt. Chúng tôi cũng cung cấp cho người dùng một menu thả xuống để họ có thể thay đổi thiết bị đầu ra âm thanh.
Khi nút Play được nhấn, chúng tôi lắp ráp đồ thị âm thanh và bắt đầu phát, đồng thời ghi thông tin về thiết bị hiện tại ra console dựa trên giá trị của sinkId:
- Chuỗi rỗng nghĩa là thiết bị mặc định vẫn đang được dùng.
- Nếu giá trị là một đối tượng, âm thanh sẽ không phát trên thiết bị nào vì chúng tôi đã đặt một đối tượng tùy chọn chứa
type: 'none'. - Ngược lại, giá trị sẽ là một chuỗi sink ID, vì vậy chúng tôi ghi lại giá trị đó.
playBtn.addEventListener("click", () => {
const source = audioCtx.createBufferSource();
source.buffer = myArrayBuffer;
source.connect(gain);
gain.connect(audioCtx.destination);
source.start();
if (audioCtx.sinkId === "") {
console.log("Audio playing on default device");
} else if (
typeof audioCtx.sinkId === "object" &&
audioCtx.sinkId.type === "none"
) {
console.log("Audio not playing on any device");
} else {
console.log(`Audio playing on device ${audioCtx.sinkId}`);
}
});
Thông số kỹ thuật
| Specification |
|---|
| Web Audio API> # dom-audiocontext-sinkid> |