Add custom quality factors and quantizer bitrate mode (#448)

* Add custom quality factors and quantizer bitrate mode (closes #327)

* Fix quantizer mode fallback and per-frame quantizer edge cases

* Clean up quantizer mode tests

* Quantizer implementation

* Add quality tests

* Improve conversion codec error message, make test more lenient

* Add quantizer support blog post

---------

Co-authored-by: Vanilagy <[email protected]>
This commit is contained in:
Don Carignan
2026-07-30 17:24:59 +02:00
committed by GitHub
co-authored by Vanilagy
parent 1a99b0371d
commit c3df2a24e5
48 changed files with 1372 additions and 371 deletions
@@ -1,13 +1,13 @@
import {
Output,
BufferTarget,
Mp4OutputFormat,
CanvasSource,
AudioBufferSource,
QUALITY_HIGH,
BufferTarget,
CanvasSource,
getFirstEncodableAudioCodec,
getFirstEncodableVideoCodec,
Mp4OutputFormat,
Output,
OutputFormat,
Quality,
} from 'mediabunny';
const durationSlider = document.querySelector('#duration-slider') as HTMLInputElement;
@@ -102,7 +102,7 @@ const generateVideo = async () => {
// For video, we use a CanvasSource for convenience, as we're rendering to a canvas
const canvasSource = new CanvasSource(renderCanvas, {
codec: videoCodec,
bitrate: QUALITY_HIGH,
quality: new Quality('high'),
});
output.addVideoTrack(canvasSource, { frameRate });
@@ -117,7 +117,7 @@ const generateVideo = async () => {
if (audioCodec) {
audioBufferSource = new AudioBufferSource({
codec: audioCodec,
bitrate: QUALITY_HIGH,
quality: new Quality('high'),
});
output.addAudioTrack(audioBufferSource);
} else {