Khám phá cách sử dụng getUserMedia () để có quyền truy cập vào đầu vào âm thanh và video từ người dùng
CácMediaDevices
đối tượng tiếp xúc bởinavigator.mediaDevices
cho chúng tôigetUserMedia
phương pháp.
Cảnh báo:
navigator
đối tượng phơi bày mộtgetUserMedia()
phương pháp này vẫn có thể hoạt động nhưngkhông dùng nữa. API đã được chuyển vào bên trongmediaDevices
đối tượng cho các mục đích nhất quán.
Đây là cách chúng ta có thể sử dụng phương pháp này.
Giả sử chúng tôi có một nút:
<button>Start streaming</button>
Chúng tôi đợi cho đến khi người dùng nhấp vào nút này và chúng tôi gọinavigator.mediaDevices.getUserMedia()
phương pháp.
Chúng tôi truyền một đối tượng mô tả các ràng buộc phương tiện mà chúng tôi muốn. Nếu chúng tôi muốn có đầu vào video, chúng tôi sẽ gọi
navigator.mediaDevices.getUserMedia({
video: true
})
Chúng tôi có thể rất cụ thể với những ràng buộc đó:
navigator.mediaDevices.getUserMedia({
video: {
minAspectRatio: 1.333,
minFrameRate: 60,
width: 640,
heigth: 480
}
})
Bạn có thể nhận danh sách tất cả các ràng buộc được thiết bị hỗ trợ bằng cách gọinavigator.mediaDevices.getSupportedConstraints()
.
Nếu chúng tôi chỉ muốn âm thanh, chúng tôi có thể vượt quaaudio: true
:
navigator.mediaDevices.getUserMedia({
audio: true
})
và nếu chúng ta muốn cả hai:
navigator.mediaDevices.getUserMedia({
video: true,
audio: true
})
Phương thức này trả về một lời hứa, vì vậy chúng tôi sẽ sử dụng async / await để nhận được kết quả trong mộtstream
Biến đổi:
document.querySelector('button').addEventListener('click', async (e) => {
const stream = await navigator.mediaDevices.getUserMedia({
video: true
})
})
Nhấp vào nút sẽ kích hoạt một bảng điều khiển trong trình duyệt để cho phép quyền sử dụng các thiết bị phương tiện:
Xem trên Codepen:https://codepen.io/flaviocopes/pen/WWyGmr
Sau khi chúng tôi hoàn thành,stream
đối tượng mà chúng tôi nhận được từgetUserMedia()
bây giờ có thể được sử dụng cho nhiều thứ khác nhau. Ngay lập tức là hiển thị luồng video trongvideo
phần tử trong trang:
<button>Start streaming</button> <video autoplay>Start streaming</video>
document.querySelector('button').addEventListener('click', async (e) => {
const stream = await navigator.mediaDevices.getUserMedia({
video: true
})
document.querySelector('video').srcObject = stream
})
Xem trên Codepen:https://codepen.io/flaviocopes/pen/wZXzbB
Một ví dụ
Đây là một ví dụ Codepen yêu cầu bạn truy cập máy quay video và phát video trong trang:
Xem bútVí dụ đơn giản về WebRTC MediaStreambởi Flavio Copes (@flaviocopes) trênCodePen.
Tech Wiki Online!