@yume-chan/scrcpy-decoder-webcodecs
Version:
Raw H.264 stream decoder and renderer using WebCodecs API (requires modern browser).
41 lines • 1.32 kB
JavaScript
export class VideoFrameCapturer {
#canvas;
#context;
constructor() {
if (typeof OffscreenCanvas !== "undefined") {
this.#canvas = new OffscreenCanvas(1, 1);
}
else {
this.#canvas = document.createElement("canvas");
this.#canvas.width = 1;
this.#canvas.height = 1;
}
this.#context = this.#canvas.getContext("bitmaprenderer", {
alpha: false,
});
}
async capture(frame) {
this.#canvas.width = frame.displayWidth;
this.#canvas.height = frame.displayHeight;
const bitmap = await createImageBitmap(frame);
this.#context.transferFromImageBitmap(bitmap);
if (this.#canvas instanceof OffscreenCanvas) {
return await this.#canvas.convertToBlob({
type: "image/png",
});
}
else {
return new Promise((resolve, reject) => {
this.#canvas.toBlob((blob) => {
if (!blob) {
reject(new Error("Failed to convert canvas to blob"));
}
else {
resolve(blob);
}
}, "image/png");
});
}
}
}
//# sourceMappingURL=snapshot.js.map