ส่วนสื่อของ WebRTC กล่าวถึงวิธีเข้าถึงฮาร์ดแวร์ที่สามารถตรวจจับได้ วิดีโอและเสียง เช่น กล้องและไมโครโฟน รวมถึงวิธีการสตรีมสื่อ งาน นอกจากนี้ยังครอบคลุมถึงสื่อ Display ซึ่งเป็นวิธีที่แอปพลิเคชันแสดงบนหน้าจอ การจับภาพ
อุปกรณ์สื่อ
กล้องและไมโครโฟนทั้งหมดที่เบราว์เซอร์รองรับจะมีการเข้าถึง และ
จัดการผ่านออบเจ็กต์ navigator.mediaDevices
แอปพลิเคชันสามารถเรียกข้อมูลได้
รายการปัจจุบันของอุปกรณ์ที่เชื่อมต่อ และรอรับการเปลี่ยนแปลงเพราะ
กล้องและไมโครโฟนเชื่อมต่อกันผ่าน USB และสามารถเชื่อมต่อและ
ถูกตัดการเชื่อมต่อในวงจรของแอปพลิเคชัน ตั้งแต่สถานะของสื่อ
อุปกรณ์อาจเปลี่ยนแปลงได้ตลอดเวลา ขอแนะนำให้แอปพลิเคชันลงทะเบียน
เปลี่ยนอุปกรณ์เพื่อให้จัดการการเปลี่ยนแปลงได้อย่างเหมาะสม
ข้อจำกัด
เมื่อเข้าถึงอุปกรณ์สื่อ ก็ควรระบุรายละเอียด ข้อจำกัดมากที่สุดเท่าที่จะเป็นไปได้ แม้ว่าคุณจะสามารถเปิดกล้องเริ่มต้นและ ไมโครโฟนที่มีข้อจำกัดง่ายๆ อาจส่งสตรีมสื่อที่มีระยะทางไกล เหมาะสมที่สุดสำหรับแอปพลิเคชันแล้ว
มีการกำหนดข้อจำกัดเฉพาะไว้ในออบเจ็กต์ MediaTrackConstraint
1 สำหรับ
ส่วนเสียงและอีกช่องสำหรับ
วิดีโอ แอตทริบิวต์ในออบเจ็กต์นี้เป็นประเภท
ConstraintLong
, ConstraintBoolean
, ConstraintDouble
หรือ
ConstraintDOMString
ซึ่งอาจเป็นค่าเฉพาะ (เช่น ตัวเลข
บูลีนหรือสตริง) ช่วง (LongRange
หรือ DoubleRange
ที่มีค่าต่ำสุดและ
ค่าสูงสุด) หรือออบเจ็กต์ที่มีคำจำกัดความ ideal
หรือ exact
สำหรับ
ค่าที่เจาะจง เบราว์เซอร์จะพยายามเลือกค่าที่ใกล้เคียงที่สุด
สำหรับช่วง ระบบจะใช้ค่าที่ดีที่สุดในช่วงนั้น เมื่อexact
คือ
จะมีเฉพาะสตรีมสื่อที่ตรงกับข้อจำกัดนั้นทุกประการ
ส่งคืนแล้ว
ใกล้
// Camera with a resolution as close to 640x480 as possible
{
"video": {
"width": 640,
"height": 480
}
}
ช่วง
// Camera with a resolution in the range 640x480 to 1024x768
{
"video": {
"width": {
"min": 640,
"max": 1024
},
"height": {
"min": 480,
"max": 768
}
}
}
ตรงทั้งหมด
// Camera with the exact resolution of 1024x768
{
"video": {
"width": {
"exact": 1024
},
"height": {
"exact": 768
}
}
}
หากต้องการระบุการกำหนดค่าจริงของแทร็กสื่อบางแทร็ก
เราจะโทรหา MediaStreamTrack.getSettings()
ซึ่งแสดงผล
ใช้ MediaTrackSettings
อยู่ในขณะนี้
การอัปเดตข้อจำกัดของแทร็กจากอุปกรณ์สื่อที่เรากำหนด
เปิดแล้ว โดยโทรหา applyConstraints()
ในแทร็ก ซึ่งช่วยให้
แอปพลิเคชันกำหนดค่าอุปกรณ์สื่ออีกครั้งโดยไม่ต้องปิด
ที่มีอยู่
สื่อ Display
แอปพลิเคชันที่ต้องการจับภาพหน้าจอและบันทึกวิดีโอหน้าจอได้
ต้องใช้ Display Media API ฟังก์ชัน getDisplayMedia()
(ซึ่งเป็นส่วน
ของ navigator.mediaDevices
คล้ายกับ getUserMedia()
และใช้สำหรับ
วัตถุประสงค์ของการเปิดเนื้อหาของจอแสดงผล (หรือส่วนใดส่วนหนึ่ง เช่น
) MediaStream
ที่ส่งคืนจะทำงานเหมือนกับเมื่อใช้
getUserMedia()
ข้อจำกัดสำหรับ getDisplayMedia()
แตกต่างจากข้อจำกัดที่ใช้สำหรับปกติ
อินพุตวิดีโอหรือเสียง
{
video: {
cursor: 'always' | 'motion' | 'never',
displaySurface: 'application' | 'browser' | 'monitor' | 'window'
}
}
ตัวอย่างโค้ดด้านบนแสดงข้อจำกัดพิเศษสำหรับการบันทึกหน้าจอ โปรดทราบว่าเบราว์เซอร์บางรายการที่มีจอแสดงผลอาจไม่รองรับ การสนับสนุนสื่อ
สตรีมและแทร็ก
MediaStream
หมายถึงสตรีมเนื้อหาสื่อซึ่งประกอบด้วยแทร็กต่างๆ
(MediaStreamTrack
) ของเสียงและวิดีโอ คุณสามารถเรียกดูแทร็กทั้งหมดจาก
MediaStream
โดยการเรียกใช้ MediaStream.getTracks()
ซึ่งแสดงผลอาร์เรย์ของ
ออบเจ็กต์ MediaStreamTrack
รายการ
MediaStreamTrack
MediaStreamTrack
มีพร็อพเพอร์ตี้ kind
ที่เป็น audio
หรือ video
เพื่อระบุชนิดของสื่อที่ใช้ แต่ละแทร็กสามารถปิดเสียงได้โดยการสลับ
พร็อพเพอร์ตี้ enabled
แทร็กมีพร็อพเพอร์ตี้บูลีน remote
ซึ่งระบุ
หากข้อมูลดังกล่าวมาจาก RTCPeerConnection
และมาจากเครื่องระยะไกล