Signatur
Beschreibung
Die Eigenschaft channelCount gehört zum Wörterbuch MediaTrackSettings, das MediaStreamTrack.getSettings() zurückgibt. Sie enthält die Anzahl der Audiokanäle, die für eine Audiospur gerade tatsächlich eingestellt ist. 1 steht für Mono, 2 für Stereo. Höhere Werte kommen bei Audio-Interfaces mit mehreren Kanälen vor.
Der Wert zeigt das Ergebnis der Aushandlung zwischen Ihren Einschränkungen (engl. constraints) und dem, was das Gerät kann. Ihre Wünsche übergeben Sie mit getUserMedia({ audio: { channelCount: … } }) oder applyConstraints(). Welcher Wert am Ende gilt, entscheidet der Browser. Ob der Browser die Einschränkung überhaupt kennt, zeigt navigator.mediaDevices.getSupportedConstraints().channelCount.
Praktisch ist das zum Beispiel, wenn Sie Aufnahmen mit MediaRecorder oder die Verarbeitung mit der Web Audio API an die echte Kanalzahl anpassen wollen. Ein weiteres Beispiel: Sie prüfen, ob ein angefordertes Stereo-Mikrofon wirklich in Stereo liefert.
Rückgabewert
undefined).Beispiele
Kanalzahl eines Mikrofons auslesen
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const [track] = stream.getAudioTracks();
const { channelCount } = track.getSettings();
console.log(channelCount === undefined
? 'Kanalzahl wird nicht gemeldet'
: `Kanäle: ${channelCount}`);
Stereo anfordern und Ergebnis prüfen
const supported = navigator.mediaDevices.getSupportedConstraints();
if (supported.channelCount) {
const stream = await navigator.mediaDevices.getUserMedia({
audio: { channelCount: { ideal: 2 }, echoCancellation: false }
});
const [track] = stream.getAudioTracks();
const actual = track.getSettings().channelCount;
if (actual !== 2) {
console.warn(`Stereo nicht verfügbar, erhalten: ${actual} Kanal/Kanäle`);
} else {
console.log('Stereo-Aufnahme aktiv');
}
}
Web-Audio-Verarbeitung an Kanalzahl anpassen
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const [track] = stream.getAudioTracks();
const channels = track.getSettings().channelCount ?? 1;
const ctx = new AudioContext();
const source = ctx.createMediaStreamSource(stream);
const splitter = ctx.createChannelSplitter(channels);
source.connect(splitter);
console.log(`Splitter mit ${splitter.numberOfOutputs} Ausgängen erstellt`);
// Wichtig · Fallstricke
- Kompatibilität: Nicht jeder Browser meldet
channelCount. Firefox liefert den Wert je nach Version nicht. Prüfen Sie deshalb immer aufundefinedund verwenden SiegetSupportedConstraints(). - Audioverarbeitung erzwingt oft Mono: Wenn Echounterdrückung (
echoCancellation), Rauschunterdrückung (noiseSuppression) oder automatische Pegelregelung (autoGainControl) aktiv sind, liefern viele Browser nur einen Kanal, selbst wenn SiechannelCount: 2anfordern. Für echtes Stereo diese Optionen abschalten. - Nur ein Wunsch: Ein einfacher Wert oder
idealist nur eine Bitte an den Browser. Nurexacterzwingt den Wert. Ist er nicht erfüllbar, schlägtgetUserMedia()mit einemOverconstrainedErrorfehl. - Der Wert kann sich nach
applyConstraints()ändern. Rufen SiegetSettings()danach erneut auf, statt ein altes Ergebnis weiterzuverwenden. - Nur in sicheren Kontexten (HTTPS) und nach Erlaubnis des Nutzers verfügbar.