Signatur
Beschreibung
AudioEncoder.isConfigSupported() ist eine statische Methode der WebCodecs API. Mit ihr prüfen Sie vor dem Erzeugen und Konfigurieren eines Encoders, ob Browser und Plattform eine bestimmte Kombination aus Codec, Abtastrate, Kanalzahl, Bitrate und weiteren Optionen unterstützen. Der Aufruf braucht keine Encoder-Instanz und verändert keinen Zustand.
Die Methode gibt ein Promise zurück. Es wird mit einem Objekt erfüllt, das die Eigenschaft supported (ein boolean) und eine bereinigte Kopie der Konfiguration unter config enthält. In dieser Kopie stehen nur die Felder, die der Browser erkannt hat. Unbekannte Schlüssel fehlen darin. So sehen Sie auch, welche Optionen überhaupt ausgewertet wurden.
Typischer Einsatz: eine Liste bevorzugter Konfigurationen der Reihe nach durchprüfen (zum Beispiel erst Opus, dann AAC) und die erste unterstützte Konfiguration an AudioEncoder.prototype.configure() übergeben. Damit vermeiden Sie Fehler, die sonst erst asynchron im error-Callback des Encoders ankommen würden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $config Pflicht | AudioEncoderConfig | Konfigurationsobjekt mit denselben Feldern wie bei AudioEncoder.prototype.configure():
|
Rückgabewert
Promise, das mit einem Objekt erfüllt wird: supported gibt an, ob die Konfiguration unterstützt wird, config enthält eine bereinigte Kopie der geprüften Konfiguration. Das Promise wird mit einem TypeError abgelehnt, wenn die Konfiguration ungültig ist (z. B. leerer codec oder fehlende Pflichtfelder).Beispiele
Einfache Prüfung einer Opus-Konfiguration
const config = {
codec: 'opus',
sampleRate: 48000,
numberOfChannels: 2,
bitrate: 128_000,
};
const { supported, config: geprueft } = await AudioEncoder.isConfigSupported(config);
console.log(supported ? 'Opus wird unterstützt' : 'Opus wird NICHT unterstützt');
console.log(geprueft);
Erste unterstützte Konfiguration aus einer Liste wählen
const kandidaten = [
{ codec: 'opus', sampleRate: 48000, numberOfChannels: 2, bitrate: 96_000 },
{ codec: 'mp4a.40.2', sampleRate: 44100, numberOfChannels: 2, bitrate: 128_000, aac: { format: 'aac' } },
{ codec: 'flac', sampleRate: 48000, numberOfChannels: 2 },
];
const waehleKonfiguration = async (liste) => {
for (const cfg of liste) {
try {
const { supported, config } = await AudioEncoder.isConfigSupported(cfg);
if (supported) return config;
} catch (err) {
console.warn('Ungültige Konfiguration:', cfg.codec, err.message);
}
}
return null;
};
const config = await waehleKonfiguration(kandidaten);
console.log('Gewählt:', config?.codec ?? 'keine');
Prüfen, dann Encoder konfigurieren (mit Feature-Erkennung)
const starteEncoder = async () => {
if (!('AudioEncoder' in window)) {
throw new Error('WebCodecs AudioEncoder wird nicht unterstützt');
}
const config = {
codec: 'opus',
sampleRate: 48000,
numberOfChannels: 1,
bitrate: 32_000,
opus: { frameDuration: 20_000, usedtx: true },
};
const { supported } = await AudioEncoder.isConfigSupported(config);
if (!supported) throw new Error('Konfiguration nicht unterstützt');
const encoder = new AudioEncoder({
output: (chunk, meta) => console.log('Chunk:', chunk.byteLength, 'Bytes'),
error: (e) => console.error('Encoder-Fehler:', e),
});
encoder.configure(config);
return encoder;
};
const encoder = await starteEncoder();
console.log(encoder.state);
// Wichtig · Fallstricke
- Abgelehntes Promise und
supported: falsesind zwei verschiedene Fälle: Ist die Konfiguration formal ungültig (fehlender oder leerercodec,sampleRateodernumberOfChannelsfehlt oder ist 0), wird das Promise mit einemTypeErrorabgelehnt. Ist sie gültig, wird aber nicht unterstützt, lautet das Ergebnissupported: false. Fangen Sie deshalb beide Fälle ab, etwa mittry/catch. supported: truegarantiert nicht, dass das Kodieren später fehlerfrei läuft. Hardware- oder Ressourcenengpässe können trotzdem Fehler imerror-Callback auslösen.- Unbekannte Felder werden stillschweigend ignoriert und fehlen im zurückgegebenen
config. Vergleichen Sie diese Kopie mit Ihrer Eingabe, wenn Ihnen bestimmte Optionen wichtig sind. - Die Codec-Zeichenketten müssen der WebCodecs-Codec-Registry entsprechen (z. B.
\"mp4a.40.2\"statt\"aac\"). - Kompatibilität: Die Methode steht nur in sicheren Kontexten (HTTPS) zur Verfügung, im Fenster und in Dedicated Workern. Chromium-Browser unterstützen sie seit Version 94, Firefox seit 130. Safari hat den
AudioEncodererst spät eingeführt. Prüfen Sie daher vorher mit'AudioEncoder' in globalThis, ob die API vorhanden ist. - Welche Codecs verfügbar sind, hängt von Browser und Betriebssystem ab. AAC ist in Chromium-Builds ohne proprietäre Codecs zum Beispiel oft nicht vorhanden.