Nếu sử dụng getUserMedia()
hoặc WebRTC, có thể bạn cần điều chỉnh mã
dành cho Chrome 45 trở lên.
MediaStream API biểu thị luồng nội dung nghe nhìn được đồng bộ hoá. Ví dụ: một luồng được lấy từ máy ảnh và đầu vào micrô có các bản video và âm thanh được đồng bộ hoá. Mỗi bản nhạc là được biểu thị bằng MediaStreamTrack. (Đừng nhầm lẫn với phần tử <track>!)
Có 3 trường hợp ngừng sử dụng MediaStream
trong Chrome 45:
MediaStream.ended
MediaStream.label
MediaStream.stop()
Song song với đó là 2 bổ sung:
MediaStream.active
MediaStreamTrack.stop()
Những chiến dịch này yêu cầu những thay đổi sau:
- Sử dụng
MediaStream.active
để kiểm tra xemMediaStream
có đang truyền trực tuyến không, chứ không phảiMediaStream.ended
. - Hãy sử dụng
MediaStreamTrack.stop()
để dừng truyền trực tuyến, chứ không phảiMediaStream.stop()
. - Nếu bạn cần giá trị nhận dạng duy nhất cho
MediaStream
, hãy sử dụngMediaStream.id
thay vìMediaStream.label
.MediaStreamTrack.label
cung cấp tên mà con người có thể đọc được cho thiết bị nguồn của một luồng, ví dụ: Máy ảnh FaceTime HD (Tích hợp) (05ac:8510).
Bạn có thể xem các ví dụ này trong thực tế: mở simpl.info/gum trong
Chrome (trên một thiết bị có máy ảnh) và xem bảng điều khiển Công cụ của Chrome cho nhà phát triển. Chiến lược phát hành đĩa đơn
Đối tượng MediaStream stream
được truyền đến lệnh gọi lại getUserMedia()
trong
bản minh hoạ nằm trong phạm vi toàn cầu, nên bạn có thể kiểm tra bản minh hoạ này từ bảng điều khiển. Gọi điện
stream.getTracks()[0]
để xem MediaStreamTrack
cho luồng này.
Stop(), đã kết thúc và đang hoạt động
Khi Nhóm công tác Ghi lại nội dung nghe nhìn và phát trực tuyến W3C đã xem xét vấn đề xảy ra khi bạn thêm bản nhạc mới vào MediaStream
,
và liệu một MediaStream
trống có kết thúc hay không, họ nhận ra rằng có
không có cách hợp lý nào để triển khai ended
trên MediaStream
(như trong "sẽ không bao giờ bắt đầu lại"). Trong các phần khác của HTML5 "đã kết thúc" có nghĩa là 'việc này đã kết thúc và sẽ
không bao giờ tiếp tục". "Đang hoạt động" không có ngụ ý nào như vậy: một luồng không hoạt động có thể
hoạt động trở lại, chẳng hạn như nếu một kênh mới được thêm vào đó. Thay vì duy trì một thuộc tính và chức năng khó hiểu, Nhóm công tác quyết định
xoá hoạt động đó.
Dưới đây là ví dụ về cách sử dụng "MediaStream.active" để kiểm tra trạng thái của một luồng:
var gumStream;
navigator.getUserMedia({audio: false, video: true},
function(stream) {
gumStream = stream;
// ...
},
function(error) {
console.log('getUserMedia() error', error);
});
// …
if (gumStream.active) {
// do something with the stream
}
Việc xoá stop()
khỏi MediaStream
không xoá bất kỳ chức năng thực nào:
các quy trình tách thiết bị nguồn, v.v. phải được thực hiện trên
vẫn là MediaStreamTrack
. Thay vào đó, hãy sử dụng stop()
trên MediaStreamTrack
:
navigator.getUserMedia({audio: false, video: true},
function(stream) {
// can also use getAudioTracks() or getVideoTracks()
var track = stream.getTracks()[0]; // if only one media track
// ...
track.stop();
},
function(error){
console.log('getUserMedia() error', error);
});
nhãn
Hoá ra là không ai có thể tìm ra cách sử dụng cho thuộc tính này!
MediaStream.label
đã được thêm vào phiên bản đầu tiên của thông số kỹ thuật, nhưng không ai thực sự biết
mục đích của label
. Chúng tôi cũng không rõ điều gì đã xảy ra với label
khi một lượt phát trực tiếp
đã được gửi qua RTCPeerConnection
.
Nhóm công tác W3C đã hỏi thăm và không ai muốn sử dụng dịch vụ này, vì vậy họ đã gỡ bỏ.
Xin nhắc lại: MediaStream.id
cung cấp giá trị nhận dạng duy nhất cho
MediaStream
và MediaStreamTrack.label
cung cấp tên của nguồn
của một luồng, chẳng hạn như loại máy ảnh hoặc micrô.
Có thêm thông tin về MediaStream
và MediaStreamTrack
từ Mạng nhà phát triển Mozilla và
HTML5 Rocks cung cấp phần giới thiệu tuyệt vời về getUserMedia()
trong
Ghi lại âm thanh và Video.
Hơn bao giờ hết, chúng tôi trân trọng ý kiến phản hồi của bạn về những thay đổi đối với Chrome. Bạn có thể theo dõi lỗi liên quan đến những điểm ngừng sử dụng này (tại đây và tại đây), cũng như tìm thêm nội dung thảo luận và thông tin chi tiết trong phần Ý định triển khai.