Jika menggunakan getUserMedia()
atau WebRTC, Anda mungkin perlu menyesuaikan kode
untuk Chrome 45 dan yang lebih baru.
MediaStream API mewakili streaming media yang disinkronkan. Misalnya, streaming yang diambil dari input kamera dan mikrofon telah menyinkronkan trek video dan audio. Setiap jalur diwakili oleh MediaStreamTrack. (Jangan tertukar dengan elemen<track>.)
Ada tiga penghentian penggunaan MediaStream
di Chrome 45:
MediaStream.ended
MediaStream.label
MediaStream.stop()
Secara paralel, ada dua tambahan:
MediaStream.active
MediaStreamTrack.stop()
Hal ini memerlukan perubahan berikut:
- Gunakan
MediaStream.active
untuk memeriksa apakahMediaStream
sedang streaming, bukanMediaStream.ended
. - Gunakan
MediaStreamTrack.stop()
untuk menghentikan streaming, bukanMediaStream.stop()
. - Jika Anda memerlukan ID unik untuk
MediaStream
, gunakanMediaStream.id
, bukanMediaStream.label
.MediaStreamTrack.label
memberikan nama yang dapat dibaca manusia bagi perangkat sumber untuk streaming, misalnya Kamera FaceTime HD (Bawaan) (05ac:8510).
Anda dapat melihat penerapannya: buka simpl.info/gum di Chrome (di perangkat yang memiliki kamera) dan lihat konsol Chrome DevTools. Objek
MediaStream stream
yang diteruskan ke callback getUserMedia()
dalam
demo ini berada dalam cakupan global, sehingga Anda dapat memeriksanya dari konsol. Panggil
stream.getTracks()[0]
guna melihat MediaStreamTrack
untuk streaming ini.
Stop(), berakhir dan aktif
Saat Grup Kerja W3C Media Capture and Streams melihat masalah yang terjadi saat Anda menambahkan trek baru ke MediaStream
,
dan apakah MediaStream
kosong diakhiri, mereka menyadari bahwa tidak ada
cara yang logis untuk menerapkan ended
pada MediaStream
(seperti 'tidak akan pernah dimulai lagi'). Di bagian lain dari HTML5 'berakhir' berarti 'ini telah berakhir dan tidak akan
dilanjutkan'. 'Aktif' tidak memiliki implikasi seperti itu: streaming yang tidak aktif dapat
menjadi aktif kembali, misalnya jika jalur baru ditambahkan ke dalamnya. Alih-alih mempertahankan atribut dan fungsi yang membingungkan, Kelompok Kerja memutuskan untuk
menghapusnya.
Berikut adalah contoh cara menggunakan 'MediaStream.active' untuk memeriksa status streaming:
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
}
Menghapus stop()
dari MediaStream
tidak menghapus fungsi apa pun:
proses untuk melepaskan perangkat sumber dan seterusnya harus dilakukan pada
MediaStreamTrack
. Sebagai gantinya, gunakan stop()
di 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);
});
label
Ternyata tidak ada yang bisa mengetahui kegunaan properti ini!
MediaStream.label
telah ditambahkan ke versi pertama spesifikasi, tetapi tidak ada yang benar-benar tahu kegunaan label
. Kami juga tidak dapat memastikan apa yang terjadi pada label
saat streaming
dikirim melalui RTCPeerConnection
.
Kelompok Kerja W3C bertanya-tanya, dan tidak ada yang menginginkan hal itu, jadi mereka menghapusnya.
Untuk mengulangi: MediaStream.id
memberikan ID unik untuk
MediaStream
dan MediaStreamTrack.label
memberikan nama sumber
aliran, seperti jenis kamera atau mikrofon.
Informasi selengkapnya tentang MediaStream
dan MediaStreamTrack
tersedia
di Mozilla Developer Network, dan
HTML5 Rocks memberikan pengantar getUserMedia()
yang sangat baik di
Merekam Audio & Video.
Seperti biasa, kami menghargai masukan Anda terkait perubahan pada Chrome. Anda dapat memantau bug untuk penghentian penggunaan ini (di sini dan di sini) serta menemukan diskusi dan detail selengkapnya di Intent to Implement.