說明
使用 chrome.tabCapture
API 與分頁媒體串流互動。
權限
tabCapture
概念和用法
chrome.tabCapture API 可讓您存取含有影片及內容的 MediaStream
目前分頁的音訊。只有在使用者叫用擴充功能後才能呼叫這個方法,例如: 按一下擴充功能的動作按鈕。這類似於 "activeTab"
權限。
保留系統音訊
為分頁取得 MediaStream
後,系統就會停止播放該分頁中的音訊 以便傳達給使用者這與在發生下列情況時,getDisplayMedia()
函式的行為類似 suppressLocalAudioPlayback
旗標設為 true。
如要繼續向使用者播放音訊,請使用下列指令:
const output = new AudioContext(); const source = output.createMediaStreamSource(stream); source.connect(output.destination);
這項操作會建立新的 AudioContext
,並將分頁 MediaStream
的音訊連線至預設值 目的地。
串流 ID
呼叫 chrome.tabCapture.getMediaStreamId()
會傳回串流 ID。稍後設定 透過 ID 存取 MediaStream
,請使用下列指令:
navigator.mediaDevices.getUserMedia({ audio: { mandatory: { chromeMediaSource: "tab", chromeMediaSourceId: id, }, }, video: { mandatory: { chromeMediaSource: "tab", chromeMediaSourceId: id, }, }, });
使用限制
呼叫 getMediaStreamId()
後, 可使用的串流 ID:
- 如果指定
consumerTabId
,getUserMedia()
呼叫即可在 具有相同安全性來源的分頁中 - 如未指定,從 Chrome 116 開始,這個 ID 可以在任何 安全性來源與呼叫端相同。這意味著 服務工作處理程序可用於離線文件中。
在 Chrome 116 以下版本中,如果未指定 consumerTabId
,串流 ID 會限定在 安全來源、轉譯程序及顯示呼叫端的框架。
瞭解詳情
如要進一步瞭解如何使用 chrome.tabCapture
API,請參閱 音訊錄音和螢幕畫面擷取。這個範例說明如何使用 tabCapture
和相關 API 可用於解決許多常見用途。
類型
CaptureInfo
屬性
- 全螢幕
布林值
目前擷取的分頁中元素是否處於全螢幕模式。
-
分頁的新擷取狀態。
- tabId
數字
狀態已變更的分頁編號。
CaptureOptions
屬性
- 音訊
布林值 選填
- audioConstraints
- 影片
布林值 選填
- videoConstraints
GetMediaStreamOptions
屬性
- consumerTabId
編號 選填
分頁的選用分頁 ID,稍後會叫用
getUserMedia()
來取用串流。若未指定,則只能由呼叫擴充功能使用產生的串流。特定分頁中,只有安全性來源與消耗性分頁來源相符的頁框才能使用串流。分頁來源必須是安全來源,例如HTTPS - targetTabId
編號 選填
待擷取分頁的選用分頁 ID。如未指定,將會選取目前使用中的分頁。只有已授予擴充功能
activeTab
權限的分頁,才能做為目標分頁使用。
MediaStreamConstraint
屬性
- 必填
物件
- 選用
物件 optional
TabCaptureState
列舉
「待處理」
"active"
"停止"
"錯誤"
方法
capture()
chrome.tabCapture.capture(
options: CaptureOptions,
callback: function,
)
擷取目前使用中分頁可見區域。叫用擴充功能後,才能透過目前使用中的分頁啟動拍攝功能,與 activeTab 的運作方式類似。擷取作業會在各分頁中持續進行,當分頁關閉或擴充功能關閉媒體串流時,系統都會停止擷取。
參數
-
設定傳回的媒體串流。
- 回呼
函式
callback
參數如下所示:(stream: LocalMediaStream) => void
- 串流
LocalMediaStream
-
getCapturedTabs()
chrome.tabCapture.getCapturedTabs(
callback?: function,
)
傳回已要求擷取或正在擷取的分頁清單,即狀態 != 已停止和狀態 != 錯誤。這可讓擴充功能通知使用者,目前已擷取分頁,導致系統無法擷取新分頁,或防止相同分頁的多餘要求。
參數
- 回呼
函式 選用
callback
參數如下所示:(result: CaptureInfo[]) => void
- 結果
-
傳回
-
Promise<CaptureInfo[]>
Chrome 116 以上版本Promise 適用於 Manifest V3 及以上版本,但系統會為 回溯相容性您無法在同一函式呼叫中同時使用兩者。 保證會以傳遞至回呼的相同類型來解析。
getMediaStreamId()
chrome.tabCapture.getMediaStreamId(
options?: GetMediaStreamOptions,
callback?: function,
)
建立串流 ID 來擷取目標分頁。與 chrome.tabCapture.capture() 方法類似,但會在「消費者」分頁中傳回媒體串流 ID,而非媒體串流。
參數
- 選項
- 回呼
函式 選用
callback
參數如下所示:(streamId: string) => void
- streamId
字串
-
傳回
-
承諾<字串>
Chrome 116 以上版本Promise 適用於 Manifest V3 及以上版本,但系統會為 回溯相容性您無法在同一函式呼叫中同時使用兩者。 保證會以傳遞至回呼的相同類型來解析。
活動
onStatusChanged
chrome.tabCapture.onStatusChanged.addListener(
callback: function,
)
分頁擷取狀態變更時觸發事件。這可讓擴充功能作者追蹤分頁的擷取狀態,讓網頁動作等 UI 元素保持同步。
參數
- 回呼
函式
callback
參數如下所示:(info: CaptureInfo) => void
- 資訊
-