Chụp và ràng buộc phương tiện

Phần nội dung đa phương tiện của WebRTC trình bày cách truy cập vào phần cứng có khả năng ghi hình video và âm thanh, chẳng hạn như camera và micrô, cũng như cách truyền trực tuyến nội dung nghe nhìn cơ quan. Nó cũng đề cập đến nội dung nghe nhìn hiển thị, vốn là cách ứng dụng có thể điều chỉnh màn hình chụp ảnh.

Thiết bị phát nội dung nghe nhìn

Tất cả máy ảnh và micrô mà trình duyệt hỗ trợ sẽ được truy cập và được quản lý thông qua đối tượng navigator.mediaDevices. Các ứng dụng có thể truy xuất danh sách các thiết bị đã kết nối hiện tại, cũng như theo dõi các thay đổi, vì có nhiều máy ảnh và microHPones kết nối qua USB và có thể được kết nối và bị ngắt kết nối trong vòng đời của ứng dụng. Vì trạng thái của nội dung đa phương tiện thiết bị có thể thay đổi bất kỳ lúc nào, bạn nên đăng ký ứng dụng các thay đổi của thiết bị để xử lý đúng cách các thay đổi.

Giới hạn

Khi truy cập vào các thiết bị đa phương tiện, bạn nên cung cấp hạn chế nhất có thể. Mặc dù bạn có thể mở máy ảnh mặc định và micrô có quy tắc ràng buộc đơn giản, nên thiết bị này có thể cung cấp luồng phương tiện truyền thông xa từ phương pháp tối ưu nhất cho ứng dụng.

Các quy tắc ràng buộc cụ thể được xác định trong đối tượng MediaTrackConstraint, một cho quảng cáo dạng âm thanh và một quảng cáo cho video. Các thuộc tính trong đối tượng này thuộc loại ConstraintLong, ConstraintBoolean, ConstraintDouble hoặc ConstraintDOMString. Đây có thể là một giá trị cụ thể (ví dụ: số, boolean hoặc chuỗi), một dải ô (LongRange hoặc DoubleRange với giá trị tối thiểu và giá trị tối đa) hoặc một đối tượng có định nghĩa ideal hoặc exact. Đối với giá trị cụ thể, trình duyệt sẽ cố gắng chọn nội dung nào đó gần đúng nhất có thể. Đối với một dải ô, giá trị tốt nhất trong dải ô đó sẽ được sử dụng. Khi exact là đã chỉ định, thì chỉ những luồng đa phương tiện khớp chính xác với quy tắc ràng buộc đó mới được bị trả lại.

Gần

// Camera with a resolution as close to 640x480 as possible
{
    "video": {
        "width": 640,
        "height": 480
    }
}

Phạm vi

// Camera with a resolution in the range 640x480 to 1024x768
{
    "video": {
        "width": {
            "min": 640,
            "max": 1024
        },
        "height": {
            "min": 480,
            "max": 768
        }
    }
}

Chính xác

// Camera with the exact resolution of 1024x768
{
    "video": {
        "width": {
            "exact": 1024
        },
        "height": {
            "exact": 768
        }
    }
}

Để xác định cấu hình thực tế của một bản nhạc nhất định của luồng nội dung đa phương tiện, chúng ta có thể gọi MediaStreamTrack.getSettings() để trả về Hiện đã áp dụng MediaTrackSettings.

Chúng ta cũng có thể cập nhật các giới hạn của một bản nhạc từ thiết bị truyền thông mà chúng ta đã mở bằng cách gọi applyConstraints() trên kênh. Điều này cho phép sẽ định cấu hình lại thiết bị đa phương tiện mà không phải đóng luồng hiện có.

Nội dung nghe nhìn hiển thị

Một ứng dụng muốn có thể chụp và ghi màn hình phải sử dụng Display Media API. Hàm getDisplayMedia() (một phần navigator.mediaDevices tương tự như getUserMedia() và dùng cho mục đích mở nội dung của màn hình (hoặc một phần nội dung, chẳng hạn như cửa sổ hiện tại). MediaStream được trả về hoạt động giống như khi sử dụng getUserMedia()

Các quy tắc ràng buộc cho getDisplayMedia() khác với các quy tắc ràng buộc được sử dụng cho thông thường đầu vào video hoặc âm thanh.

{
    video: {
        cursor: 'always' | 'motion' | 'never',
        displaySurface: 'application' | 'browser' | 'monitor' | 'window'
    }
}

Đoạn mã ở trên cho thấy cách thức các hạn chế đặc biệt đối với việc ghi màn hình hoạt động. Lưu ý rằng một số trình duyệt có màn hình có thể không hỗ trợ những thẻ này hỗ trợ nội dung đa phương tiện.

Luồng và bản nhạc

MediaStream đại diện cho một luồng nội dung nghe nhìn, bao gồm các bản nhạc (MediaStreamTrack) âm thanh và video. Bạn có thể truy xuất tất cả các bản nhạc từ MediaStream bằng cách gọi MediaStream.getTracks(), hàm này trả về một mảng Đối tượng MediaStreamTrack.

MediaStreamTrack

MediaStreamTrack có một thuộc tính kindaudio hoặc video, cho biết loại nội dung nghe nhìn mà nó đại diện. Bạn có thể tắt tiếng từng bản nhạc bằng cách bật/tắt tiếng thuộc tính enabled của nó. Một bản nhạc có thuộc tính Boolean remote cho biết nếu nó có nguồn từ RTCPeerConnection và đến từ một ứng dụng ngang hàng từ xa.