Signatur
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);
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`);
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`);
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung wie
recorder.videoBitsPerSecond = 1e6hat keine Wirkung (im Strict ModeTypeError). Um die Bitrate zu ändern, erstellen Sie einen neuenMediaRecorder. - 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
bitsPerSecondangegeben, überschreibt es sowohlvideoBitsPerSecondals auchaudioBitsPerSecondund 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
MediaRecordererst seit Version 14.1, und dort meist nur MP4/H.264. Prüfen Sie die Formate mitMediaRecorder.isTypeSupported(). Die Aufnahme braucht einen sicheren Kontext (HTTPS) und die Erlaubnis der Nutzer.