หากทำงานกับ getUserMedia()
หรือ WebRTC คุณอาจต้องปรับเปลี่ยนโค้ด
สำหรับ Chrome 45 ขึ้นไป
MediaStream API แสดง สตรีมสื่อที่ซิงค์กัน เช่น สตรีมที่ถ่ายจากกล้องและ อินพุตไมโครโฟนมีการซิงค์แทร็กวิดีโอและเสียง แต่ละแทร็ก แสดงโดย MediaStreamTrack (อย่าสับสนกับองค์ประกอบ <track>)
การเลิกใช้งาน MediaStream
ใน Chrome 45 มี 3 รายการดังนี้
MediaStream.ended
MediaStream.label
MediaStream.stop()
การดำเนินการแบบขนานกันคือ 2 ส่วนที่เพิ่มเข้ามา ดังนี้
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
มีการส่งออบเจ็กต์ 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 เสมอมา คุณติดตามข้อบกพร่องของการเลิกใช้งานได้ (ที่นี่และที่นี่) รวมถึงดูการสนทนาและรายละเอียดเพิ่มเติมได้ในความตั้งใจในการใช้งาน