Start · Sprachen · JavaScript · Referenz · MediaTrackSettings.channelCount

MediaTrackSettings.channelCount

Eigenschaft

Ganzzahl, die angibt, mit wie vielen Audiokanälen ein <code>MediaStreamTrack</code> gerade tatsächlich arbeitet, z. B. <code>1</code> für Mono oder <code>2</code> für Stereo.

seit JavaScript Chromium-Browser und Safari; in Firefox eingeschrä Kategorie: webapi

Signatur

MediaTrackSettings.channelCount

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

Typ
number | undefined
Beschreibung
Positive Ganzzahl mit der aktuellen Anzahl der Audiokanäle. Bei Videospuren oder wenn der Browser die Einstellung nicht meldet, fehlt die Eigenschaft (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}`);
Kanäle: 1

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');
  }
}
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`);
Splitter mit 1 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 auf undefined und verwenden Sie getSupportedConstraints().
  • 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 Sie channelCount: 2 anfordern. Für echtes Stereo diese Optionen abschalten.
  • Nur ein Wunsch: Ein einfacher Wert oder ideal ist nur eine Bitte an den Browser. Nur exact erzwingt den Wert. Ist er nicht erfüllbar, schlägt getUserMedia() mit einem OverconstrainedError fehl.
  • Der Wert kann sich nach applyConstraints() ändern. Rufen Sie getSettings() danach erneut auf, statt ein altes Ergebnis weiterzuverwenden.
  • Nur in sicheren Kontexten (HTTPS) und nach Erlaubnis des Nutzers verfügbar.