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 dikelirukan dengan elemen<track>!)
Ada tiga penghentian penggunaan MediaStream
di Chrome 45:
MediaStream.ended
MediaStream.label
MediaStream.stop()
Secara paralel, ada dua penambahan:
MediaStream.active
MediaStreamTrack.stop()
Hal ini memerlukan perubahan berikut:
- Gunakan
MediaStream.active
untuk memeriksa apakahMediaStream
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 streaming, misalnya FaceTime HD Camera (Built-in) (05ac:8510).
Anda dapat melihat cara kerjanya: buka simpl.info/gum di
Chrome (di perangkat dengan 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]
untuk melihat MediaStreamTrack
untuk streaming ini.
Stop(), ended, dan active
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 masuk akal untuk menerapkan ended
pada MediaStream
(seperti 'tidak akan pernah dimulai lagi'). Di bagian lain HTML5, 'berakhir' berarti 'ini telah berakhir dan
tidak akan pernah dilanjutkan'. 'Aktif' tidak memiliki implikasi tersebut: streaming yang tidak aktif dapat
menjadi aktif lagi, misalnya jika trek baru ditambahkan ke streaming tersebut. Daripada mempertahankan atribut dan fungsi yang membingungkan, Grup 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 sebenarnya:
proses untuk melepaskan perangkat sumber dan sebagainya harus dilakukan di
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 penggunaan properti ini.
MediaStream.label
telah ditambahkan ke versi pertama spesifikasi, tetapi tidak ada yang benar-benar tahu
tujuan label
. Tidak jelas juga apa yang terjadi pada label
saat streaming
dikirim melalui RTCPeerConnection
.
Grup Kerja W3C bertanya-tanya, dan tidak ada yang menginginkannya, jadi 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()
di
Merekam Audio & Video.
Seperti biasa, kami menghargai masukan Anda terkait perubahan pada Chrome. Anda dapat melacak bug untuk penghentian penggunaan ini (di sini dan di sini) serta menemukan diskusi dan detail selengkapnya di Intent to Implement.