MediaDeviceInfo

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Giao diện MediaDeviceInfo của Media Capture and Streams API chứa thông tin mô tả một thiết bị đầu vào hoặc đầu ra media duy nhất.

Danh sách thiết bị thu được bằng cách gọi navigator.mediaDevices.enumerateDevices() là một mảng các đối tượng MediaDeviceInfo, một đối tượng cho mỗi thiết bị media.

Thuộc tính phiên bản

MediaDeviceInfo.deviceId Read only

Trả về một chuỗi là định danh cho thiết bị được đại diện, được lưu trữ lâu dài qua các phiên. Nó không thể đoán được bởi các ứng dụng khác và là duy nhất với nguồn gốc của ứng dụng đang gọi. Nó được đặt lại khi người dùng xóa cookie (đối với Duyệt web riêng tư, một định danh khác được sử dụng không được lưu trữ qua các phiên).

MediaDeviceInfo.groupId Read only

Trả về một chuỗi là định danh nhóm. Hai thiết bị có cùng định danh nhóm nếu chúng thuộc cùng một thiết bị vật lý, ví dụ như một màn hình có cả camera và microphone tích hợp.

MediaDeviceInfo.kind Read only

Trả về một giá trị liệt kê là "videoinput", "audioinput" hoặc "audiooutput".

MediaDeviceInfo.label Read only

Trả về một chuỗi mô tả thiết bị này (ví dụ "External USB Webcam").

Note: Vì lý do bảo mật, trường label luôn trống trừ khi có media stream đang hoạt động hoặc người dùng đã cấp quyền lâu dài cho việc truy cập thiết bị media. Nếu không, tập hợp các nhãn thiết bị có thể được dùng như một phần của cơ chế fingerprinting để nhận dạng người dùng.

Phương thức phiên bản

MediaDeviceInfo.toJSON()

Trả về biểu diễn JSON của đối tượng MediaDeviceInfo.

Ví dụ

Đây là ví dụ sử dụng enumerateDevices() để lấy danh sách thiết bị.

js
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
  console.log("enumerateDevices() not supported.");
} else {
  // List cameras and microphones.
  navigator.mediaDevices
    .enumerateDevices()
    .then((devices) => {
      devices.forEach((device) => {
        console.log(`${device.kind}: ${device.label} id = ${device.deviceId}`);
      });
    })
    .catch((err) => {
      console.log(`${err.name}: ${err.message}`);
    });
}

Kết quả có thể là:

bash
videoinput: id = csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8=
audioinput: id = RKxXByjnabbADGQNNZqLVLdmXlS0YkETYCIbg+XxnvM=
audioinput: id = r2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=

hoặc nếu có một hoặc nhiều media stream đang hoạt động, hoặc nếu đã cấp quyền lâu dài:

bash
videoinput: FaceTime HD Camera (Built-in) id=csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8=
audioinput: default (Built-in Microphone) id=RKxXByjnabbADGQNNZqLVLdmXlS0YkETYCIbg+XxnvM=
audioinput: Built-in Microphone id=r2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=

Thông số kỹ thuật

Thông số kỹ thuật
Media Capture and Streams
# device-info

Tương thích trình duyệt

Xem thêm