fix: use lamejs Mp3Encoder API for proper module initialization

Switched from low-level Lame API to Mp3Encoder class which:
- Properly initializes all required modules (Lame, BitStream, etc.)
- Handles module dependencies via setModules() calls
- Provides a simpler encodeBuffer/flush API
- Resolves "init_bit_stream_w is not defined" error

Updated TypeScript declarations to export Mp3Encoder and WavHeader
from lamejs/src/js/index.js

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-19 08:19:48 +01:00
parent 51114330ea
commit c3e295f695
2 changed files with 23 additions and 63 deletions

40
types/lamejs.d.ts vendored
View File

@@ -1,31 +1,15 @@
declare module 'lamejs/src/js/MPEGMode' {
const MPEGMode: {
STEREO: number;
JOINT_STEREO: number;
DUAL_CHANNEL: number;
MONO: number;
NOT_SET: number;
};
export default MPEGMode;
}
declare module 'lamejs/src/js/index.js' {
export class Mp3Encoder {
constructor(channels: number, samplerate: number, kbps: number);
encodeBuffer(left: Int16Array, right: Int16Array): Int8Array;
flush(): Int8Array;
}
declare module 'lamejs/src/js/Lame' {
export default class Lame {
lame_init(): any;
lame_init_params(gfp: any): number;
lame_encode_buffer(
gfp: any,
left: Int16Array,
right: Int16Array,
samples: number,
mp3buf: Int8Array,
mp3bufPos: number
): number;
lame_encode_flush(gfp: any, mp3buf: Int8Array, mp3bufPos: number): number;
lame_close(gfp: any): number;
export class WavHeader {
dataOffset: number;
dataLen: number;
channels: number;
sampleRate: number;
static readHeader(dataView: DataView): WavHeader;
}
}
declare module 'lamejs/src/js/BitStream' {
export default class BitStream {}
}