אם עובדים עם getUserMedia()
או WebRTC, יכול להיות שיהיה צורך לשנות את הקוד
ל-Chrome 45 ואילך.
MediaStream API מייצג שידורי מדיה מסונכרנים. לדוגמה, שידור שצולם מהמצלמה ו לקלט המיקרופון יש טראקים של וידאו ואודיו מסונכרנים. כל טראק שמיוצג על ידי MediaStreamTrack. (אין להתבלבל עם האלמנט <track>!)
יש שלוש הוצאות משימוש של MediaStream
ב-Chrome 45:
MediaStream.ended
MediaStream.label
MediaStream.stop()
במקביל יש שתי תוספות:
MediaStream.active
MediaStreamTrack.stop()
אלה השינויים הנדרשים:
- אפשר להשתמש ב-
MediaStream.active
כדי לבדוק אםMediaStream
משודרת, ולא אםMediaStream.ended
. - כדי להפסיק את השידור, צריך להשתמש ב
MediaStreamTrack.stop()
ולא בMediaStream.stop()
. - כדי להשתמש במזהה ייחודי ל-
MediaStream
, צריך להשתמש ב-MediaStream.id
במקום ב-MediaStream.label
.MediaStreamTrack.label
מספק שם קריא לאנשים למכשיר המקור עבור שידור, למשל: FaceTime HD Camera (Built-in) (05ac:8510).
כדי לראות את זה בפעולה: פותחים את simpl.info/gum ב-.
Chrome (במכשיר עם מצלמה) והצגת מסוף כלי הפיתוח ל-Chrome.
אובייקט MediaStream stream
מועבר לקריאה החוזרת (callback) של getUserMedia()
במסמך הזה
נמצא בהיקף גלובלי, כך שאפשר לבדוק אותו מהמסוף. שיחת טלפון
stream.getTracks()[0]
כדי להציג את MediaStreamTrack
של עדכוני התוכן האלה.
stop(), הסתיים ופעיל
כשקבוצת העבודה של W3C בנושא צילום וסטרימינג של מדיה בחנו את הבעיה מה קורה כשאתם מוסיפים טראקים חדשים ל-MediaStream
,
ואם הסתיים MediaStream
ריק, הם הבינו שיש
אין דרך הגיונית להטמיע את ended
ב-MediaStream
(כמו 'לא יתחיל שוב אף פעם'). בחלקים אחרים של 'סוף' ב-HTML5 פירושו 'זה הסתיים,
אף פעם לא לחדש'. 'פעיל' אין השלכות כאלה: סטרימינג לא פעיל עלול
להיות פעיל שוב, למשל אם מתווסף אליו טראק חדש. במקום לשמור מאפיין ופונקציה מבלבלים, קבוצת העבודה החליטה
להסיר אותו.
הנה דוגמה לשימוש ב-'MediaStream.active' כדי לבדוק את הסטטוס של זרם:
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
}
הסרת stop()
מ-MediaStream
לא גרמה להסרת פונקציונליות אמיתית:
לניתוק של מכשירי מקור, וכן הלאה יש לבצע אותם
MediaStreamTrack
בכל מקרה. במקום זאת, יש להשתמש ב-stop()
ב-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);
});
תווית
מתברר שאף אחד לא הצליח להבין איך להשתמש בנכס הזה!
הוספנו את MediaStream.label
לגרסה הראשונה של המפרט, אבל אף אחד לא ידע על זה באמת
למה label
נועד. בנוסף, לא היה ברור מה קרה ל-label
כששידור חי
נשלח דרך RTCPeerConnection
.
קבוצת העבודה של W3C ביצעה בדיקה ואף אחד לא רצה את זה, אז הם הסירו אותה.
להדגיש: MediaStream.id
מספק מזהה ייחודי
MediaStream
ו-MediaStreamTrack.label
מספקים את שם המקור
של שידור, כמו סוג המצלמה או המיקרופון.
זמין מידע נוסף על MediaStream
ועל MediaStreamTrack
מ-Mozilla Developer Network, וכן
HTML5 Rocks מספק מבוא מצוין ל-getUserMedia()
צילום אודיו סרטון.
כמו תמיד, אנחנו מעריכים את המשוב שלך לגבי שינויים ב-Chrome. אפשר לעקוב אחרי הבאגים שיצאו משימוש (כאן וכאן) ולמצוא עוד דיון ופרטים בקטע Intent להטמעה.