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 kind
là audio
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.