Jika menggunakan getUserMedia()
atau WebRTC, Anda mungkin perlu menyesuaikan kode
untuk Chrome 45 dan yang lebih baru.
MediaStream API mewakili tersinkronisasi aliran media. Misalnya, streaming yang diambil dari kamera dan input mikrofon telah menyinkronkan trek video dan audio. Setiap trek diwakili oleh MediaStreamTrack. (Jangan bingung dengan elemen <track>!)
Ada tiga penghentian penggunaan MediaStream
di Chrome 45:
MediaStream.ended
MediaStream.label
MediaStream.stop()
Dua tambahan ditambahkan secara paralel:
MediaStream.active
MediaStreamTrack.stop()
Hal ini memerlukan perubahan berikut:
- Gunakan
MediaStream.active
untuk memeriksa apakahMediaStream
sedang melakukan 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 untuk perangkat sumber untuk streaming, misalnya Kamera FaceTime HD (Bawaan) (05ac:8510).
Anda dapat melihat cara kerjanya: buka simpl.info/gum di
Chrome (di perangkat dengan kamera) dan lihat konsol Chrome DevTools. Tujuan
Objek MediaStream stream
diteruskan ke callback getUserMedia()
dalam
demo berada dalam cakupan global, sehingga Anda dapat memeriksanya dari konsol. Telepon
stream.getTracks()[0]
untuk melihat MediaStreamTrack
untuk streaming ini.
Stop(), berakhir, dan aktif
Saat Media Capture and Streams W3C Working Group mengamati masalah yang akan terjadi saat Anda menambahkan lagu baru ke MediaStream
,
dan apakah MediaStream
kosong diakhiri, mereka menyadari bahwa ada
bukan cara yang masuk akal untuk mengimplementasikan ended
pada MediaStream
(seperti dalam 'tidak akan pernah mulai lagi'). Di bagian lain HTML5 'berakhir' berarti 'ini telah berakhir dan akan
jangan pernah lanjutkan'. 'Aktif' tidak membawa implikasi seperti itu: aliran yang tidak aktif dapat
menjadi aktif lagi, misalnya jika
jalur baru ditambahkan ke dalamnya. Alih-alih mempertahankan atribut dan fungsi yang membingungkan, Kelompok Kerja memutuskan untuk
menghapusnya.
Berikut ini contoh cara menggunakan 'MediaStream.active' untuk memeriksa status feed:
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 yang sebenarnya:
untuk melepaskan perangkat sumber
dan sebagainya harus dilakukan pada
MediaStreamTrack
. Gunakan stop()
di MediaStreamTrack
sebagai gantinya:
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
untuk apa label
. Saya juga tidak tahu apa yang terjadi dengan label
saat streaming
dikirim via RTCPeerConnection
.
W3C Working Group bertanya-tanya, dan tidak ada yang menginginkannya, sehingga mereka menghapusnya.
Untuk mengulangi: MediaStream.id
memberikan ID unik untuk
MediaStream
dan MediaStreamTrack.label
memberikan nama sumber
streaming, seperti jenis kamera atau mikrofon.
Informasi selengkapnya tentang MediaStream
dan MediaStreamTrack
tersedia
dari Mozilla Developer Network, dan
HTML5 Rocks memberikan pengantar yang sangat baik tentang getUserMedia()
Merekam Audio & Video.
Kami selalu menghargai masukan Anda tentang perubahan pada Chrome. Anda dapat mengikuti bug untuk masalah penghentian penggunaan ini (di sini dan di sini) serta menemukan diskusi dan detail lebih lanjut di Intent to Implement.