#!/usr/bin/env python3 """Recodifica a musica do ReTux (24 MB em ~150 kbps) para ~70 kbps, para o jogo nao pesar no navegador. recode-music.py Decodifica cada .ogg com o SDL_mixer do pygame-ce (44,1 kHz, estereo, 16 bits) e codifica de novo com o wav2ogg (libvorbis, numero de serie fixo: mesma entrada, mesmos bytes; Builds/pygame-music/). Precisa do pygame-ce 2.5.7 do artifacts/tools/venv-pygame. """ import os import subprocess import sys import wave os.environ["SDL_AUDIODRIVER"] = "dummy" import pygame # noqa: E402 folder, wav2ogg, quality, tmp = sys.argv[1:] os.makedirs(tmp, exist_ok=True) pygame.mixer.init(44100, -16, 2) for name in sorted(os.listdir(folder)): if not name.endswith(".ogg"): continue path = os.path.join(folder, name) raw = pygame.mixer.Sound(path).get_raw() wav = os.path.join(tmp, name[:-4] + ".wav") with wave.open(wav, "wb") as w: w.setnchannels(2) w.setsampwidth(2) w.setframerate(44100) w.writeframes(raw) new = os.path.join(tmp, name) subprocess.run([wav2ogg, wav, new, quality], check=True) os.replace(new, path) os.remove(wav) print(name, os.path.getsize(path) // 1024, "KB")