คำอธิบาย
ใช้ chrome.tabCapture API เพื่อโต้ตอบกับสตรีมสื่อของแท็บ
สิทธิ์
tabCaptureแนวคิดและการใช้งาน
browser.tabCapture API ช่วยให้คุณเข้าถึง MediaStream ที่มีวิดีโอและ
เสียงของแท็บปัจจุบันได้ โดยจะเรียกใช้ได้หลังจากที่ผู้ใช้เรียกใช้ส่วนขยายแล้วเท่านั้น เช่น โดยการคลิกปุ่มดำเนินการของส่วนขยาย ซึ่งคล้ายกับลักษณะการทำงานของสิทธิ์
"activeTab"
เก็บเสียงของระบบ
เมื่อได้รับMediaStreamสำหรับแท็บ ระบบจะไม่เล่นเสียงในแท็บนั้นให้ผู้ใช้ฟังอีก
ซึ่งคล้ายกับลักษณะการทำงานของฟังก์ชัน getDisplayMedia() เมื่อตั้งค่าแฟล็ก suppressLocalAudioPlayback เป็น "จริง"
หากต้องการเล่นเสียงให้ผู้ใช้ต่อไป ให้ทำดังนี้
const output = new AudioContext();
const source = output.createMediaStreamSource(stream);
source.connect(output.destination);
ซึ่งจะสร้าง AudioContext ใหม่และเชื่อมต่อเสียงของ MediaStream ของแท็บกับปลายทางเริ่มต้น
รหัสสตรีม
การเรียกใช้ browser.tabCapture.getMediaStreamId() จะแสดงรหัสสตรีม หากต้องการเข้าถึง MediaStream จากรหัสในภายหลัง ให้ใช้ข้อมูลต่อไปนี้
navigator.mediaDevices.getUserMedia({
audio: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
video: {
mandatory: {
chromeMediaSource: "tab",
chromeMediaSourceId: id,
},
},
});
ข้อจำกัดการใช้งาน
หลังจากเรียกใช้ getMediaStreamId() แล้ว จะมีข้อจำกัดเกี่ยวกับตำแหน่งที่ใช้รหัสสตรีมที่ส่งคืนได้ ดังนี้
- หากมีการระบุ
consumerTabIdการเรียกgetUserMedia()จะใช้รหัสนี้ได้ในเฟรมใดก็ได้ในแท็บที่ระบุซึ่งมีต้นทางด้านความปลอดภัยเดียวกัน - เมื่อไม่ได้ระบุไว้ ตั้งแต่ Chrome 116 เป็นต้นไป ระบบจะใช้รหัสในเฟรมใดก็ได้ที่มีต้นทางด้านความปลอดภัยเดียวกันในกระบวนการแสดงผลเดียวกันกับผู้เรียก ซึ่งหมายความว่ารหัสสตรีมที่ได้รับ ใน Service Worker สามารถใช้ในเอกสารนอกหน้าจอได้
ก่อน Chrome 116 หากไม่ได้ระบุ consumerTabId ระบบจะจำกัดรหัสสตรีมไว้ที่ทั้งต้นทางด้านความปลอดภัย กระบวนการแสดงผล และเฟรมการแสดงผลของผู้โทร
ดูข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ browser.tabCapture API ได้ที่
เสียงที่บันทึกไว้และการจับภาพหน้าจอ ซึ่งแสดงวิธีใช้
tabCaptureและ API ที่เกี่ยวข้องเพื่อแก้ปัญหา Use Case ทั่วไปหลายอย่าง
ประเภท
CaptureInfo
พร็อพเพอร์ตี้
-
เต็มหน้าจอ
บูลีน
องค์ประกอบในแท็บที่กำลังบันทึกอยู่ในโหมดเต็มหน้าจอหรือไม่
-
สถานะ
สถานะการจับภาพใหม่ของแท็บ
-
tabId
ตัวเลข
รหัสของแท็บที่มีการเปลี่ยนแปลงสถานะ
CaptureOptions
พร็อพเพอร์ตี้
-
เสียง
บูลีน ไม่บังคับ
-
audioConstraints
MediaStreamConstraint ไม่บังคับ
-
วิดีโอ
บูลีน ไม่บังคับ
-
videoConstraints
MediaStreamConstraint ไม่บังคับ
GetMediaStreamOptions
พร็อพเพอร์ตี้
-
consumerTabId
หมายเลข ไม่บังคับ
รหัสแท็บที่ไม่บังคับของแท็บที่จะเรียกใช้
getUserMedia()ในภายหลังเพื่อใช้สตรีม หากไม่ได้ระบุไว้ ส่วนขยายที่เรียกใช้เท่านั้นที่จะใช้สตรีมที่ได้ สตรีมจะใช้ได้เฉพาะเฟรมในแท็บที่กำหนดซึ่งมีต้นทางด้านความปลอดภัยตรงกับต้นทางของแท็บผู้ใช้ ต้นทางของแท็บต้องเป็นต้นทางที่ปลอดภัย เช่น HTTPS -
targetTabId
หมายเลข ไม่บังคับ
รหัสแท็บที่ไม่บังคับของแท็บที่จะบันทึก หากไม่ได้ระบุ ระบบจะเลือกแท็บที่ใช้งานอยู่ปัจจุบัน คุณใช้ได้เฉพาะแท็บที่ส่วนขยายได้รับสิทธิ์
activeTabเป็นแท็บเป้าหมาย
MediaStreamConstraint
พร็อพเพอร์ตี้
-
บังคับ
ออบเจ็กต์
-
ไม่บังคับ
ออบเจ็กต์ ไม่บังคับ
TabCaptureState
ค่าแจกแจง
"รอดำเนินการ"
"ใช้งานอยู่"