MediaRecorder: requestData() 方法

Baseline 已廣泛支援

此特性已得到良好支援,可在多種裝置和瀏覽器版本上使用。自 2021 年 4 月起,所有瀏覽器均已支援此特性。

MediaRecorder 介面的 requestData() 方法用於觸發一個 dataavailable 事件,該事件包含一個 Blob 物件,其中是呼叫該方法時捕獲到的媒體資料。然後你可以按需獲取並操作這個 Blob。

當呼叫 requestData() 方法時,瀏覽器會排隊一個任務來執行以下步驟:

  1. 如果 MediaRecorder.state 是 "inactive"(非活動狀態),則丟擲一個 DOM InvalidState 錯誤並終止這些步驟。如果 MediaRecorder.state 不是 "inactive",則繼續執行下一步。
  2. 觸發一個 dataavailable 事件,其中包含當前捕獲資料的 Blob(該 Blob 可透過事件的 data 屬性訪問)。
  3. 建立一個新的 Blob,並將後續捕獲的資料放入其中。

語法

js
requestData()

引數

無。

返回值

無(undefined)。

異常

InvalidStateError DOMException

如果 MediaRecorder 當前處於 "inactive"(非活動狀態)狀態,則會丟擲此異常;當 MediaRecorder 未處於活動狀態時,你無法捕獲錄製內容。

示例

js
captureMedia.onclick = () => {
  mediaRecorder.requestData();
  // makes snapshot available of data so far
  // ondataavailable fires, then capturing continues
  // in new Blob
};

規範

規範
MediaStream Recording
# dom-mediarecorder-requestdata

瀏覽器相容性

另見