RTCEncodedAudioFrame: getMetadata() 方法
注意:此功能在 專用 Web Workers 中可用。
RTCEncodedAudioFrame 介面的 getMetadata() 方法返回一個物件,其中包含與該幀關聯的元資料。
這包括有關該幀的資訊,例如使用的音訊編碼、同步源和貢獻源,以及序列號(對於傳入的幀)。
語法
getMetadata()
引數
無。
返回值
具有以下屬性的物件:
audioLevel-
一個表示此幀音訊級別的數字。該值介於 0 和 1 之間(包含),其中 1.0 表示 0 dBov(分貝相對於滿量程 (DBFS)),0 表示靜默,0.5 表示大約 6 dB SPL 變化(相對於 0 dBov)。該值透過公式
10^(-rfc_level/20)從 RFC6464 中指定的 -127 到 0 的範圍轉換而來。如果接收到的幀資料包中不存在 RFC6464 報頭擴充套件,則audioLevel將為undefined。 synchronizationSource-
一個正整數值,指示此幀所描述的 RTP 資料包流的同步源("ssrc")。源可以是麥克風,也可以是組合了多個源的混音器應用程式。來自同一源的所有資料包共享相同的時間源和序列空間,因此可以相對排序。請注意,值相同的兩個幀指的是同一個源。
payloadType-
一個介於 0 和 127 之間的正整數值,描述 RTP 有效載荷的格式。值與格式的對映定義在 RFC3550 中,更具體地說,是在 RFC3551 的 第 6 節:有效載荷型別定義 中。
contributingSources-
一個
Array,包含對該幀做出貢獻的源(ssrc)。考慮一個組合了多個使用者音訊的會議應用程式。synchronizationSource將包含應用程式的 ssrc,而contributingSources將包含所有單獨音訊源的 ssrc 值。 sequenceNumber-
傳入音訊幀的序列號(傳出幀不使用),可用於重建幀的原始傳送順序。這是一個介於 0 和 32767 之間的數字。請注意,雖然數字在傳送時是按順序分配的,但在達到 32767 時會溢位並重新從 0 開始。因此,要比較兩個幀序列號以確定一個是否在另一個之後,您必須使用 序列號算術。
示例
這個示例 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);
});
來自本地麥克風的結果物件可能如下所示。請注意,由於只有一個源,因此沒有貢獻源,並且由於這是傳出幀,因此也沒有 sequenceNumber。
{
"payloadType": 109,
"synchronizationSource": 1876443470
}
規範
| 規範 |
|---|
| WebRTC Encoded Transform # dom-rtcencodedaudioframe-getmetadata |
瀏覽器相容性
載入中…