MediaStreamTrack: phương thức applyConstraints()

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.

* Some parts of this feature may have varying levels of support.

Phương thức applyConstraints() của giao diện MediaStreamTrack áp dụng một bộ ràng buộc cho track; các ràng buộc này cho phép trang web hoặc ứng dụng thiết lập các giá trị lý tưởng và/hoặc phạm vi giá trị chấp nhận được cho các thuộc tính có thể ràng buộc của track, chẳng hạn như tốc độ khung hình, kích thước, hủy tiếng vọng, v.v.

Các ràng buộc có thể được sử dụng để đảm bảo phương tiện đáp ứng các hướng dẫn nhất định mà bạn mong muốn. Ví dụ: bạn có thể muốn video mật độ cao nhưng yêu cầu tốc độ khung hình hơi thấp để giúp giữ tốc độ dữ liệu đủ thấp để không gây quá tải cho mạng. Các ràng buộc cũng có thể chỉ định kích thước lý tưởng và/hoặc chấp nhận được hoặc phạm vi kích thước. Xem Áp dụng ràng buộc trong Khả năng, ràng buộc và cài đặt để biết thêm thông tin về cách áp dụng các ràng buộc mong muốn của bạn.

Cú pháp

js
applyConstraints()
applyConstraints(constraints)

Tham số

constraints Optional

Một đối tượng MediaTrackConstraints liệt kê các ràng buộc cần áp dụng cho các thuộc tính có thể ràng buộc của track; bất kỳ ràng buộc hiện có nào sẽ được thay thế bằng các giá trị mới được chỉ định, và bất kỳ thuộc tính có thể ràng buộc nào không được bao gồm sẽ được khôi phục về các ràng buộc mặc định của chúng. Nếu tham số này bị bỏ qua, tất cả các ràng buộc tùy chỉnh hiện được đặt sẽ bị xóa. Đối tượng này đại diện cho bộ ràng buộc cơ bản phải được áp dụng để Promise được giải quyết. Đối tượng có thể chứa một thuộc tính advanced chứa một mảng các đối tượng MediaTrackConstraints bổ sung, được xử lý như các yêu cầu chính xác.

Giá trị trả về

Một Promise sẽ được giải quyết khi các ràng buộc đã được áp dụng thành công. Nếu các ràng buộc không thể được áp dụng, promise sẽ bị từ chối với một OverconstrainedError là một DOMException có tên là OverconstrainedError với các tham số bổ sung, để cho biết rằng các ràng buộc không thể được đáp ứng. Điều này có thể xảy ra nếu các ràng buộc được chỉ định quá nghiêm ngặt để tìm được kết quả phù hợp khi cố gắng cấu hình track.

Ví dụ

Đoạn mã sau đây cho thấy cách chỉ định một bộ ràng buộc cơ bản và nâng cao. Nó chỉ định rằng trang hoặc ứng dụng web cần chiều rộng từ 640 đến 1280 và chiều cao từ 480 đến 720, với số cuối trong mỗi cặp được ưu tiên. Thuộc tính advanced cũng chỉ định rằng kích thước hình ảnh 1920x1280 là ưu tiên hoặc aspect ratio là 1.333 nếu không khả dụng. Lưu ý rằng các ràng buộc này cũng minh họa những gì đặc tả gọi là chiến lược lùi.

js
const constraints = {
  width: { min: 640, ideal: 1280 },
  height: { min: 480, ideal: 720 },
  advanced: [{ width: 1920, height: 1280 }, { aspectRatio: 1.333 }],
};

navigator.mediaDevices.getUserMedia({ video: true }).then((mediaStream) => {
  const track = mediaStream.getVideoTracks()[0];
  track
    .applyConstraints(constraints)
    .then(() => {
      // Làm gì đó với track như sử dụng API Image Capture.
    })
    .catch((e) => {
      // Các ràng buộc không thể được đáp ứng bởi các thiết bị hiện có.
    });
});

Đặc tả kỹ thuật

Specification
Media Capture and Streams
# dom-mediastreamtrack-applyconstraints

Hỗ trợ trình duyệt

Xem thêm