This commit is contained in:
Eduard Prigoana 2025-10-19 15:21:32 +03:00
parent 07345867b9
commit 51d1b3bdce
3 changed files with 31 additions and 10 deletions

View file

@ -16,20 +16,20 @@ export class MetadataEmbedder {
} }
const { FFmpeg } = FFmpegWASM; const { FFmpeg } = FFmpegWASM;
const { toBlobURL, fetchFile } = FFmpegUtil; const { fetchFile } = FFmpegUtil;
this.ffmpeg = new FFmpeg(); this.ffmpeg = new FFmpeg();
this.fetchFile = fetchFile; this.fetchFile = fetchFile;
const baseURL = 'https://cdn.jsdelivr.net/npm/@ffmpeg/core@0.12.6/dist/umd';
this.ffmpeg.on('log', ({ message }) => { this.ffmpeg.on('log', ({ message }) => {
console.log('[FFmpeg]', message); console.log('[FFmpeg]', message);
}); });
const baseURL = window.location.origin + '/ffmpeg';
await this.ffmpeg.load({ await this.ffmpeg.load({
coreURL: await toBlobURL(`${baseURL}/ffmpeg-core.js`, 'text/javascript'), coreURL: `${baseURL}/ffmpeg-core.js`,
wasmURL: await toBlobURL(`${baseURL}/ffmpeg-core.wasm`, 'application/wasm') wasmURL: `${baseURL}/ffmpeg-core.wasm`
}); });
this.ffmpegLoaded = true; this.ffmpegLoaded = true;
@ -80,7 +80,7 @@ export class MetadataEmbedder {
} }
const metadata = this.buildMetadataArgs(track); const metadata = this.buildMetadataArgs(track);
console.log('[Metadata] Metadata tags:', metadata.length / 2, 'fields'); console.log('[Metadata] Building metadata with', metadata.length / 2, 'fields');
let args; let args;
if (hasCover) { if (hasCover) {
@ -106,7 +106,7 @@ export class MetadataEmbedder {
]; ];
} }
console.log('[Metadata] Executing FFmpeg with', args.length, 'arguments'); console.log('[Metadata] Executing FFmpeg...');
if (onProgress) { if (onProgress) {
this.ffmpeg.on('progress', ({ progress }) => { this.ffmpeg.on('progress', ({ progress }) => {
@ -115,11 +115,11 @@ export class MetadataEmbedder {
} }
await this.ffmpeg.exec(args); await this.ffmpeg.exec(args);
console.log('[Metadata] FFmpeg exec completed'); console.log('[Metadata] FFmpeg exec completed successfully');
const outputData = await this.ffmpeg.readFile(outputName); const outputData = await this.ffmpeg.readFile(outputName);
const outputBlob = new Blob([outputData], { type: 'audio/flac' }); const outputBlob = new Blob([outputData], { type: 'audio/flac' });
console.log('[Metadata] Output blob created - Input:', arrayBuffer.byteLength, 'Output:', outputBlob.size); console.log('[Metadata] ✓ Success! Input:', arrayBuffer.byteLength, 'bytes → Output:', outputBlob.size, 'bytes');
await this.ffmpeg.deleteFile(inputName); await this.ffmpeg.deleteFile(inputName);
await this.ffmpeg.deleteFile(outputName); await this.ffmpeg.deleteFile(outputName);
@ -130,7 +130,7 @@ export class MetadataEmbedder {
return outputBlob; return outputBlob;
} catch (error) { } catch (error) {
console.error('[Metadata] Embedding failed:', error); console.error('[Metadata] Embedding failed:', error);
console.error('[Metadata] Error details:', { console.error('[Metadata] Error details:', {
name: error.name, name: error.name,
message: error.message, message: error.message,

File diff suppressed because one or more lines are too long

Binary file not shown.