Start · Sprachen · JavaScript · Referenz · MediaRecorder.audioBitsPerSecond

MediaRecorder.audioBitsPerSecond

Eigenschaft

Schreibgeschützte Eigenschaft, die die Bitrate (in Bit pro Sekunde) angibt, mit der ein <code>MediaRecorder</code> die Audiospur codiert.

seit JavaScript Baseline: seit 2021 in allen gängigen Browsern (Ch Kategorie: webapi

Signatur

MediaRecorder.audioBitsPerSecond

Beschreibung

Die Eigenschaft audioBitsPerSecond einer MediaRecorder-Instanz liefert die Bitrate, die der Encoder für die Audiospur verwendet. Der Wert wird in Bit pro Sekunde angegeben, z. B. 128000 für 128 kbit/s.

Beim Erzeugen des Recorders kann man über das Options-Objekt eine Wunsch-Bitrate angeben, entweder mit audioBitsPerSecond oder mit dem gemeinsamen Wert bitsPerSecond. Der Browser muss sich nicht exakt daran halten. Er kann den Wert auf einen Bereich begrenzen, den der Codec unterstützt, zum Beispiel bei Opus etwa 6–510 kbit/s. Die Eigenschaft zeigt deshalb den tatsächlich verwendeten Wert, nicht den angeforderten.

In der Praxis liest man die Eigenschaft, um die eingestellte Qualität zu protokollieren, die Dateigröße grob abzuschätzen oder zu prüfen, ob die gewünschte Bitrate übernommen wurde. Gesetzt werden kann sie nur über den Konstruktor, eine direkte Zuweisung hat keine Wirkung.

Rückgabewert

Typ
number
Beschreibung
Die Audio-Bitrate in Bit pro Sekunde (ganzzahlig, unsigned long). Wurde keine Bitrate angegeben, liefert die Eigenschaft den Standardwert des Browsers. Hat der Stream keine Audiospur, kann der Wert 0 sein; das hängt vom Browser ab.

Beispiele

Wunsch-Bitrate setzen und tatsächlichen Wert prüfen

const stream = await navigator.mediaDevices.getUserMedia({ audio: true });

const recorder = new MediaRecorder(stream, {
  mimeType: 'audio/webm;codecs=opus',
  audioBitsPerSecond: 96000 // gewünscht: 96 kbit/s
});

console.log(`Audio-Bitrate: ${recorder.audioBitsPerSecond / 1000} kbit/s`);
Audio-Bitrate: 96 kbit/s

Standard-Bitrate des Browsers auslesen

const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const recorder = new MediaRecorder(stream); // keine Bitrate angegeben

console.log(recorder.mimeType, recorder.audioBitsPerSecond);
audio/webm;codecs=opus 128000 (Beispielwert, je nach Browser verschieden)

Dateigröße einer Aufnahme abschätzen

const estimateSizeMB = (recorder, seconds) =>
  (recorder.audioBitsPerSecond * seconds) / 8 / 1024 / 1024;

const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const recorder = new MediaRecorder(stream, { audioBitsPerSecond: 128000 });

// Wie groß wird eine 10-minütige Aufnahme ungefähr?
console.log(`${estimateSizeMB(recorder, 600).toFixed(1)} MB`);
9.2 MB

Browser begrenzt einen zu hohen Wert

const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const recorder = new MediaRecorder(stream, { audioBitsPerSecond: 2_000_000 });

if (recorder.audioBitsPerSecond !== 2_000_000) {
  console.warn('Bitrate angepasst auf', recorder.audioBitsPerSecond);
}
Bitrate angepasst auf 510000 (z. B. Chrome mit Opus)

// Wichtig · Fallstricke

  • Schreibgeschützt: recorder.audioBitsPerSecond = 64000 wird ignoriert (im Strict Mode wirft es einen TypeError). Die Bitrate lässt sich nur über den Konstruktor festlegen.
  • Nur ein Richtwert: Der Browser kann den angeforderten Wert an die Grenzen des Codecs anpassen. Bei variabler Bitrate (VBR) ist die tatsächliche Datenrate nur ein Durchschnitt. Die Größe der erzeugten Blobs kann daher abweichen.
  • Vorrang: Gibt man sowohl bitsPerSecond als auch audioBitsPerSecond an, gilt für Audio der speziellere Wert audioBitsPerSecond.
  • Unterschiede zwischen Browsern: Standardwerte und Grenzen unterscheiden sich. Ältere Firefox-Versionen vor 71 und Safari vor 14.1 geben die Eigenschaft nicht oder nur unzuverlässig zurück. Den Recorder zur Sicherheit mit MediaRecorder.isTypeSupported() prüfen.
  • Einige Browser erlauben Änderungen nur, solange state === 'inactive' ist. Eine laufende Aufnahme übernimmt keine neue Bitrate.