diff --git a/server/src/services/discordBotService.js b/server/src/services/discordBotService.js index f8fba3b7..dc497bf4 100644 --- a/server/src/services/discordBotService.js +++ b/server/src/services/discordBotService.js @@ -272,6 +272,7 @@ async function buildReplayGif() { await fsp.writeFile(path.join(tmpDir, filename), frames[i].buffer); } const outPath = path.join(tmpDir, 'replay.gif'); + const palettePath = path.join(tmpDir, 'palette.png'); const delayMs = getRoomCameraReplayDelayMs(); const fps = (1000 / delayMs).toFixed(3); await execFileAsync('ffmpeg', [ @@ -284,7 +285,22 @@ async function buildReplayGif() { '-i', 'frame-%04d.jpg', '-vf', - 'scale=640:-1:flags=lanczos', + 'palettegen', + palettePath, + ], { cwd: tmpDir }); + await execFileAsync('ffmpeg', [ + '-y', + '-hide_banner', + '-loglevel', + 'error', + '-framerate', + fps, + '-i', + 'frame-%04d.jpg', + '-i', + 'palette.png', + '-lavfi', + 'paletteuse=dither=bayer:bayer_scale=5', '-loop', '0', outPath,