Signatur
Beschreibung
Die Eigenschaft type gehört zum Wörterbuch RTCCodecStats, das von RTCPeerConnection.getStats() (bzw. RTCRtpSender.getStats() und RTCRtpReceiver.getStats()) im zurückgegebenen RTCStatsReport geliefert wird. Bei Codec-Statistiken hat sie immer den Wert "codec".
Ein RTCStatsReport ist eine Map-ähnliche Struktur mit vielen Statistikobjekten unterschiedlicher Art, etwa "inbound-rtp", "outbound-rtp", "candidate-pair" oder eben "codec". Über type filtert man den Bericht und findet die Einträge mit Codec-Angaben wie mimeType, clockRate, channels, payloadType und sdpFmtpLine.
Typischer Einsatz: in einer laufenden WebRTC-Sitzung feststellen, welcher Audio- oder Video-Codec (z. B. video/VP8, video/H264, audio/opus) tatsächlich ausgehandelt wurde. Die codecId-Eigenschaft der RTP-Statistiken verweist dabei auf die id des passenden "codec"-Eintrags.
Rückgabewert
"codec" (ein Wert aus der Aufzählung RTCStatsType).Beispiele
Alle Codec-Statistiken einer Verbindung auflisten
const listCodecs = async (pc) => {
const report = await pc.getStats();
report.forEach((stats) => {
if (stats.type === "codec") {
console.log(stats.id, stats.mimeType, stats.clockRate, stats.payloadType);
}
});
};
// Aufruf mit einer bestehenden, verbundenen RTCPeerConnection
await listCodecs(peerConnection);
Tatsächlich genutzten Video-Codec des Senders ermitteln
const getSendVideoCodec = async (pc) => {
const sender = pc.getSenders().find((s) => s.track?.kind === "video");
if (!sender) return null;
const report = await sender.getStats();
const outbound = [...report.values()].find((s) => s.type === "outbound-rtp");
if (!outbound?.codecId) return null;
const codec = report.get(outbound.codecId);
// Sicherheitshalber den Typ prüfen
return codec?.type === "codec" ? codec.mimeType : null;
};
console.log(await getSendVideoCodec(peerConnection));
Codec-Einträge per filter als Array sammeln
const report = await peerConnection.getStats();
const codecs = [...report.values()]
.filter(({ type }) => type === "codec")
.map(({ mimeType, channels, sdpFmtpLine }) => ({ mimeType, channels, sdpFmtpLine }));
console.table(codecs);
// Wichtig · Fallstricke
typeist schreibgeschützt und fürRTCCodecStatskonstant – der Wert dient nur zur Unterscheidung von anderen Statistiktypen imRTCStatsReport.- Codec-Einträge erscheinen erst, wenn die Verbindung ausgehandelt ist und der Codec tatsächlich von einem RTP-Stream genutzt wird. Vor dem Verbindungsaufbau liefert
getStats()oft keine"codec"-Einträge. - Die
idvon Codec-Einträgen ist browserspezifisch formatiert – nicht parsen, sondern nur übercodecIdreferenzieren. - Ältere Browser lieferten teils abweichende Felder (z. B. fehlendes
transportIdodersdpFmtpLine); Firefox und Safari unterstützen Codec-Statistiken erst in neueren Versionen. Felder daher optional behandeln (?.). - Das veraltete, callbackbasierte
getStats()von Chrome liefert ein anderes Format ohne diesen Typ – nur die Promise-Variante verwenden.