Start · Sprachen · JavaScript · Referenz · MediaRecorder.videoBitsPerSecond

MediaRecorder.videoBitsPerSecond

Eigenschaft

Schreibgeschützte Eigenschaft, die die tatsächlich verwendete Bitrate der Video-Codierung eines <code>MediaRecorder</code> in Bit pro Sekunde liefert.

seit JavaScript Baseline: alle modernen Browser (Chrome 49+, Firef Kategorie: webapi

Signatur

MediaRecorder.videoBitsPerSecond

Beschreibung

Die schreibgeschützte Eigenschaft videoBitsPerSecond eines MediaRecorder-Objekts gibt die Bitrate in Bit pro Sekunde an, mit der die Videospur codiert wird. Setzen kann man den Wert nur beim Erzeugen über die Option videoBitsPerSecond (oder bitsPerSecond) im Konstruktor new MediaRecorder(stream, options).

Der zurückgegebene Wert kann vom angeforderten Wert abweichen: Der Browser rundet, begrenzt auf unterstützte Bereiche oder wählt einen eigenen Standardwert, wenn nichts angegeben wurde. Mit der Eigenschaft prüfen Sie daher, welche Bitrate der Encoder tatsächlich nutzt, etwa um die erwartete Dateigröße abzuschätzen oder die Aufnahmequalität in der Oberfläche anzuzeigen.

Typische Einsatzfälle sind Bildschirm- und Webcam-Aufnahmen, bei denen zwischen Qualität und Dateigröße abgewogen werden muss. Als Faustregel reichen für 720p etwa 2,5 Mbit/s, für 1080p etwa 5 Mbit/s (je nach Codec wie VP8, VP9, H.264 oder AV1).

Beispiele

Angeforderte und tatsächliche Bitrate vergleichen

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

const recorder = new MediaRecorder(stream, {
  mimeType: 'video/webm;codecs=vp9',
  videoBitsPerSecond: 2_500_000 // 2,5 Mbit/s anfordern
});

console.log('Video-Bitrate:', recorder.videoBitsPerSecond);
Video-Bitrate: 2500000

Standardwert des Browsers ohne eigene Vorgabe

const stream = await navigator.mediaDevices.getDisplayMedia({ video: true });
const recorder = new MediaRecorder(stream);

// Browser wählt selbst eine Bitrate
console.log(`${(recorder.videoBitsPerSecond / 1_000_000).toFixed(1)} Mbit/s`);
2.5 Mbit/s (Wert je nach Browser unterschiedlich)

Erwartete Dateigröße einer Aufnahme abschätzen

const estimateSize = (recorder, seconds) => {
  const totalBits = (recorder.videoBitsPerSecond + recorder.audioBitsPerSecond) * seconds;
  return (totalBits / 8 / 1024 / 1024).toFixed(1); // MiB
};

const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true });
const recorder = new MediaRecorder(stream, {
  videoBitsPerSecond: 5_000_000,
  audioBitsPerSecond: 128_000
});

console.log(`Ca. ${estimateSize(recorder, 60)} MiB pro Minute`);
Ca. 36.7 MiB pro Minute

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung wie recorder.videoBitsPerSecond = 1e6 hat keine Wirkung (im Strict Mode TypeError). Um die Bitrate zu ändern, erstellen Sie einen neuen MediaRecorder.
  • Der Wert ist ein Zielwert für den Encoder. Die echte Bitrate schwankt je nach Bildinhalt (statischer Bildschirm vs. viel Bewegung), besonders bei variabler Bitrate.
  • Wird im Konstruktor bitsPerSecond angegeben, überschreibt es sowohl videoBitsPerSecond als auch audioBitsPerSecond und wird auf beide Spuren aufgeteilt.
  • Browser können zu hohe oder zu niedrige Werte stillschweigend begrenzen. Lesen Sie die Eigenschaft deshalb nach der Erzeugung aus, statt sich auf den angeforderten Wert zu verlassen.
  • Kompatibilität: In allen modernen Browsern verfügbar. Safari unterstützt MediaRecorder erst seit Version 14.1, und dort meist nur MP4/H.264. Prüfen Sie die Formate mit MediaRecorder.isTypeSupported(). Die Aufnahme braucht einen sicheren Kontext (HTTPS) und die Erlaubnis der Nutzer.