Signatur
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
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`);
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);
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`);
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);
}
// Wichtig · Fallstricke
- Schreibgeschützt:
recorder.audioBitsPerSecond = 64000wird ignoriert (im Strict Mode wirft es einenTypeError). 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
bitsPerSecondals auchaudioBitsPerSecondan, gilt für Audio der speziellere WertaudioBitsPerSecond. - 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.