fix(gateway): repair Ogg page CRCs + deliver recordings as MP3
Build & Deploy (Nix) / build-and-deploy (proxy) (push) Successful in 3m44s
Build & Deploy (Nix) / build-and-deploy (backend) (push) Successful in 4m13s
Build & Deploy (Nix) / build-and-deploy (discord-gateway) (push) Successful in 11m33s
Build & Deploy (Nix) / build-and-deploy (proxy) (push) Successful in 3m44s
Build & Deploy (Nix) / build-and-deploy (backend) (push) Successful in 4m13s
Build & Deploy (Nix) / build-and-deploy (discord-gateway) (push) Successful in 11m33s
Root cause rekaman gak bisa dibuka: prism-media OggLogicalBitstream dipanggil dengan crc:false (node-crc dihapus dari dependency tree) — semua page Ogg punya checksum 0 — player strict (ffmpeg, iOS) tolak dengan 'CRC mismatch / End of file'. Rekaman 13:11 terbukti CRC-invalid. Fix: 1. recorder/oggCrc.ts (baru): recompute CRC-32 (RFC3533, poly 0x04c11db7, initial 0, MSB-first) tiap page OggS in-place — pure JS tanpa native dep. 2. segmentFinalizer.ts: panggil fixOggCrc sebelum upload/merge. 3. recorder/uploader.ts: transcode segment ke MP3 (libmp3lame 128k 48k stereo) sebelum upload tele — universal playback. filename+size DB di-update; source OGG tetap untuk transkripsi. 4. muxer.ts + recorder.ts: merged session file juga .mp3. Verified: ffprobe baca segmen yang tadinya CRC mismatch, MP3 valid.
This commit is contained in:
@@ -81,6 +81,8 @@ export async function updateVoiceRecordingAsUploaded(
|
||||
id: string,
|
||||
downloadUrl: string,
|
||||
uploadedAt: number,
|
||||
filename?: string,
|
||||
sizeBytes?: number,
|
||||
): Promise<void> {
|
||||
try {
|
||||
await db()
|
||||
@@ -89,6 +91,8 @@ export async function updateVoiceRecordingAsUploaded(
|
||||
download_url: downloadUrl,
|
||||
upload_status: "uploaded",
|
||||
uploaded_at: uploadedAt,
|
||||
...(filename !== undefined ? { filename } : {}),
|
||||
...(sizeBytes !== undefined ? { size_bytes: sizeBytes } : {}),
|
||||
})
|
||||
.where(eq(voiceRecordingsTable.id, id));
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user