إذا كنت تعمل باستخدام getUserMedia()
أو WebRTC، قد تحتاج إلى تعديل الرمز البرمجي
لإصدار Chrome 45 والإصدارات الأحدث.
تمثّل MediaStream API عمليات بث الوسائط المتزامنة. على سبيل المثال، يتضمّن البث المباشر الذي يتم تسجيله من الكاميرا ومدخل الميكروفون مقاطع صوت وفيديو متزامنة. يتم تمثيل كل مقطع صوتي باستخدام MediaStreamTrack. (يجب عدم الخلط بينه وبين عنصر<track>)
هناك ثلاث MediaStream
ميزات سيتم إيقافها نهائيًا في الإصدار 45 من Chrome:
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 (مدمجة) (05ac:8510).
يمكنك الاطّلاع على هذه الميزات أثناء استخدامها: افتح simpl.info/gum في Chrome (على جهاز مزوّد بكاميرا) واطّلِع على وحدة تحكّم أدوات مطوّري البرامج في Chrome. إنّ stream
عنصر MediaStream الذي تم تمريره إلى دالة الاستدعاء getUserMedia()
في هذا الdemo
يقع في النطاق العام، لذا يمكنك فحصه من وحدة التحكّم. يُرجى الاتصال برقم stream.getTracks()[0]
للاطّلاع على MediaStreamTrack
لهذا البث.
Stop() وended وactive
عندما نظرت مجموعة العمل Media Capture and Streams في 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 to Implement.