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