feat: use png throughout emission
This commit is contained in:
@@ -557,35 +557,28 @@ export class RemoteBrowser {
|
|||||||
|
|
||||||
private async optimizeScreenshot(screenshot: Buffer): Promise<Buffer> {
|
private async optimizeScreenshot(screenshot: Buffer): Promise<Buffer> {
|
||||||
try {
|
try {
|
||||||
// Use JPEG format with optimized settings
|
|
||||||
return await sharp(screenshot)
|
return await sharp(screenshot)
|
||||||
.jpeg({
|
.png({
|
||||||
quality: Math.round(SCREENCAST_CONFIG.compressionQuality * 100),
|
quality: Math.round(SCREENCAST_CONFIG.compressionQuality * 100),
|
||||||
progressive: true, // Better streaming performance
|
compressionLevel: 6,
|
||||||
force: true // Force JPEG even if PNG input
|
adaptiveFiltering: true,
|
||||||
|
force: true
|
||||||
})
|
})
|
||||||
.resize({
|
.resize({
|
||||||
width: SCREENCAST_CONFIG.maxWidth,
|
width: SCREENCAST_CONFIG.maxWidth,
|
||||||
height: SCREENCAST_CONFIG.maxHeight,
|
height: SCREENCAST_CONFIG.maxHeight,
|
||||||
fit: 'inside',
|
fit: 'inside',
|
||||||
withoutEnlargement: true,
|
withoutEnlargement: true,
|
||||||
kernel: 'lanczos3' // Better quality/performance balance
|
kernel: 'lanczos3'
|
||||||
})
|
})
|
||||||
.toBuffer();
|
.toBuffer();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('Screenshot optimization failed:', error);
|
logger.error('Screenshot optimization failed:', error);
|
||||||
|
return screenshot;
|
||||||
// If sharp processing fails, do basic resize without sharp
|
|
||||||
try {
|
|
||||||
// Fallback to simpler processing
|
|
||||||
return screenshot;
|
|
||||||
} catch (fallbackError) {
|
|
||||||
logger.error('Fallback screenshot processing failed:', fallbackError);
|
|
||||||
return screenshot;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Makes and emits a single screenshot to the client side.
|
* Makes and emits a single screenshot to the client side.
|
||||||
* @returns {Promise<void>}
|
* @returns {Promise<void>}
|
||||||
@@ -841,7 +834,7 @@ export class RemoteBrowser {
|
|||||||
logger.error('Screenshot emission failed:', error);
|
logger.error('Screenshot emission failed:', error);
|
||||||
try {
|
try {
|
||||||
const base64Data = payload.toString('base64');
|
const base64Data = payload.toString('base64');
|
||||||
const dataWithMimeType = `data:image/jpeg;base64,${base64Data}`;
|
const dataWithMimeType = `data:image/png;base64,${base64Data}`;
|
||||||
|
|
||||||
this.socket.emit('screencast', {
|
this.socket.emit('screencast', {
|
||||||
image: dataWithMimeType,
|
image: dataWithMimeType,
|
||||||
|
|||||||
Reference in New Issue
Block a user