RTCEncodedAudioFrame: getMetadata() method
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2023.
Note: This feature is available in Dedicated Web Workers.
Phương thức getMetadata() của giao diện RTCEncodedAudioFrame trả về một đối tượng chứa siêu dữ liệu liên kết với khung.
Điều này bao gồm thông tin về khung, chẳng hạn như bộ mã hóa âm thanh được sử dụng, nguồn đồng bộ hóa và các nguồn đóng góp, và số thứ tự (cho các khung đến).
Cú pháp
getMetadata()
Tham số
Không có.
Giá trị trả về
Một đối tượng với các thuộc tính sau:
audioLevel-
Một số đại diện cho mức âm thanh của khung này. Giá trị nằm trong khoảng từ 0 đến 1 bao gồm (tuyến tính), trong đó 1.0 đại diện cho 0 dBov (decibel tương đối với toàn thang (DBFS)), 0 đại diện cho im lặng, và 0.5 đại diện cho khoảng 6 dB SPL thay đổi trong mức áp suất âm từ 0 dBov. Giá trị được chuyển đổi từ phạm vi -127 đến 0 được chỉ định trong RFC6464 qua phương trình
10^(-rfc_level/20). Nếu phần mở rộng header RFC6464 không có trong các gói nhận của khung,audioLevelsẽ làundefined. captureTime-
Một
DOMHighResTimeStampchỉ ra thời gian chụp của khung tương đối vớiPerformance.timeOrigin. contributingSources-
Một
Arraycác nguồn (ssrc) đã đóng góp cho khung. Hãy xem xét trường hợp của một ứng dụng hội nghị kết hợp âm thanh từ nhiều người dùng.synchronizationSourcesẽ bao gồm ssrc của ứng dụng, trong khicontributingSourcessẽ bao gồm các giá trị ssrc của tất cả các nguồn âm thanh riêng lẻ. mimeType-
Một chuỗi chứa MIME type của codec được sử dụng, chẳng hạn như "audio/opus".
payloadType-
Một giá trị số nguyên dương trong phạm vi từ 0 đến 127 mô tả định dạng của payload RTP. Ánh xạ giá trị sang định dạng được định nghĩa trong RFC 3550, và cụ thể hơn là Mục 6: Định nghĩa Payload Type của RFC 3551.
receiveTime-
Một
DOMHighResTimeStampchỉ ra dấu thời gian của gói cuối cùng nhận được của một khung đến (từRTCRtpReceiver) được sử dụng để tạo ra khung phương tiện này, tương đối vớiPerformance.timeOrigin. rtpTimestamp-
Một số nguyên dương phản ánh thời điểm lấy mẫu của octet đầu tiên trong gói dữ liệu RTP (xem RFC 3550).
sequenceNumber-
Số thứ tự của một khung âm thanh đến (không được dùng cho các khung đi) có thể dùng để tái tạo thứ tự gửi gốc của các khung. Đây là số từ 0 đến 32767. Lưu ý rằng trong khi các số được phân bổ tuần tự khi gửi, chúng sẽ tràn ở 32767 và khởi động lại từ 0. Do đó để so sánh hai số thứ tự khung, để xác định cái nào được giả định là sau cái nào, bạn phải sử dụng số học số serial.
synchronizationSource-
Một giá trị số nguyên dương chỉ ra nguồn đồng bộ hóa ("ssrc") của luồng các gói RTP được mô tả bởi khung này. Một nguồn có thể là một microphone, hoặc một ứng dụng mixer kết hợp nhiều nguồn. Tất cả các gói từ cùng một nguồn chia sẻ cùng một nguồn thời gian và không gian thứ tự, do đó có thể được sắp xếp tương đối với nhau. Lưu ý rằng hai khung có cùng giá trị đề cập đến cùng một nguồn.
Ví dụ
>Lấy siêu dữ liệu khung
WebRTC encoded transform này cho thấy cách bạn có thể lấy siêu dữ liệu khung trong hàm transform() và ghi nhật ký nó.
addEventListener("rtctransform", (event) => {
const transform = new TransformStream({
async transform(encodedFrame, controller) {
// Lấy siêu dữ liệu và ghi nhật ký
const frameMetaData = encodedFrame.getMetadata();
console.log(frameMetaData);
// Thêm khung vào hàng đợi mà không sửa đổi
controller.enqueue(encodedFrame);
},
});
event.transformer.readable
.pipeThrough(transform)
.pipeTo(event.transformer.writable);
});
Đối tượng kết quả từ một microphone cục bộ có thể trông giống như đối tượng dưới đây. Lưu ý rằng không có nguồn đóng góp vì chỉ có một nguồn, và không có sequenceNumber vì đây là khung đi.
{
"captureTime": 19745.400000000373,
"contributingSources": [],
"mimeType": "audio/opus",
"payloadType": 111,
"rtpTimestamp": 1786045165,
"synchronizationSource": 3365032712,
"audioLevel": 0.001584893192461114
}
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| WebRTC Encoded Transform> # dom-rtcencodedaudioframe-getmetadata> |