RTCEncodedVideoFrame: getMetadata() 方法
注意:此功能在 專用 Web Workers 中可用。
RTCEncodedVideoFrame 介面的 getMetadata() 方法返回一個物件,其中包含與該幀關聯的元資料。
這包括有關幀的資訊,例如其大小、影片編碼、構建完整影像所需的其他幀、時間戳以及其他資訊。
語法
getMetadata()
引數
無。
返回值
具有以下屬性的物件:
frameId-
一個表示此幀 ID 的正整數值。
dependencies-
一個正整數的
Array,指示此幀所依賴的幀的 frameIds。對於關鍵幀,這將是空的,因為關鍵幀包含構建影像所需的所有資訊。對於增量幀,這將列出渲染此幀所需的所有幀。可以使用RTCEncodedVideoFrame.type來確定幀的型別。 width-
一個表示幀寬度的正整數。最大值為 65535。
height-
一個表示幀高度的正整數。最大值為 65535。
spatialIndex-
一個表示幀的空間索引的正整數。某些編解碼器允許生成不同解析度層的幀。當需要降低位元率時,可以有選擇地丟棄較高層的幀,同時保持可接受的影片質量。
temporalIndex-
一個表示幀的時間索引的正整數。某些編解碼器根據丟棄幀是否會阻止其他幀被解碼來將幀分組為層。當需要降低位元率時,可以有選擇地丟棄較高層的幀,同時保持可接受的影片質量。
synchronizationSource-
一個表示此編碼影片幀所描述的 RTP 資料包流的同步源("ssrc")的正整數值。源可能是攝像頭或麥克風,或者某種組合了多個源的混合器應用程式。來自同一源的所有資料包共享相同的時間源和序列空間,因此可以相對排序。注意,具有相同值的兩個幀引用同一源(有關更多資訊,請參閱
RTCInboundRtpStreamStats.ssrc)。 payloadType-
一個表示 RTP 有效載荷格式的 0 到 127 範圍內的正整數值。值與格式的對映在 RFC3550 中定義。
contributingSources-
已為該幀做出貢獻的源(ssrc)的
Array。考慮一個組合了多個使用者音訊和影片的會議應用程式。synchronizationSource將包含應用程式的 ssrc,而contributingSources將包含所有單獨的影片和音訊源的 ssrc 值。 時間戳-
原始幀的媒體呈現時間戳(PTS),以微秒為單位,匹配對應於此幀的原始幀的時間戳。這用於同步屬於同一簡報的單獨的影片、音訊、字幕和其他流。
示例
這個示例 WebRTC 編碼轉換 實現展示瞭如何在 transform() 函式中獲取幀元資料並將其記錄下來。
addEventListener("rtctransform", (event) => {
const transform = new TransformStream({
async transform(encodedFrame, controller) {
// Get the metadata and log
const frameMetaData = encodedFrame.getMetadata();
console.log(frameMetaData);
// Enqueue the frame without modifying
controller.enqueue(encodedFrame);
},
});
event.transformer.readable
.pipeThrough(transform)
.pipeTo(event.transformer.writable);
});
來自本地攝像頭的最終物件可能如下所示。請注意,由於只有一個源,因此沒有 contributing sources。
{
"contributingSources": [],
"dependencies": [405],
"frameId": 406,
"height": 480,
"payloadType": 120,
"spatialIndex": 0,
"synchronizationSource": 3956716931,
"temporalIndex": 0,
"width": 640
}
規範
| 規範 |
|---|
| WebRTC Encoded Transform # dom-rtcencodedvideoframe-getmetadata |
瀏覽器相容性
載入中…