diff --git a/docs/llms.md b/docs/llms.md index b81b70d..1593e83 100644 --- a/docs/llms.md +++ b/docs/llms.md @@ -9,7 +9,7 @@ While Mediabunny is proudly human-coded, we want to encourage any and all usage of Mediabunny, even when the vibes are high. -Mediabunny is still new and is unlikely to be in the training data of modern LLMs, but we can still make the AI perform extremely well but just giving it a little more context. +Mediabunny is still new and is unlikely to be in the training data of modern LLMs, but we can still make the AI perform extremely well by just giving it a little more context. --- diff --git a/examples/media-player/media-player.ts b/examples/media-player/media-player.ts index b349373..999baef 100644 --- a/examples/media-player/media-player.ts +++ b/examples/media-player/media-player.ts @@ -2,6 +2,7 @@ import { ALL_FORMATS, AudioBufferSink, BlobSource, + BufferSource, CanvasSink, Input, UrlSource, @@ -91,7 +92,7 @@ const initMediaPlayer = async (resource: File | string) => { // Create an Input from the resource const source = resource instanceof File - ? new BlobSource(resource) + ? new BufferSource(await resource.arrayBuffer())// new BlobSource(resource) : new UrlSource(resource); const input = new Input({ source, @@ -191,6 +192,7 @@ const initMediaPlayer = async (resource: File | string) => { if (!videoSink) { // If there's only an audio track, always show the controls controlsElement.style.opacity = '1'; + controlsElement.style.pointerEvents = ''; playerContainer.style.cursor = ''; } } catch (error) { diff --git a/package-lock.json b/package-lock.json index be2fc0f..21b6dba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mediabunny", - "version": "1.13.1", + "version": "1.13.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mediabunny", - "version": "1.13.1", + "version": "1.13.2", "license": "MPL-2.0", "workspaces": [ "packages/*" @@ -7749,9 +7749,9 @@ } }, "node_modules/mediabunny": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/mediabunny/-/mediabunny-1.13.0.tgz", - "integrity": "sha512-eAtCVOzceN3VkExQmYrDB+3bM6d98PfB6AhgueojYG6T5SNzc4cRR2gWm0oZ1HjhNN0J4hjtvtEpJ+AAMXF/dQ==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/mediabunny/-/mediabunny-1.13.1.tgz", + "integrity": "sha512-Fht/ujfoS0jt8s9W4zDEilnWVsafkBaiIQ5BX0x1tdvM4PClexgYIWDZSf6kC82/c9Bo3ehZPIIfS3aJ9younA==", "license": "MPL-2.0", "peer": true, "workspaces": [ @@ -12242,7 +12242,7 @@ }, "packages/mp3-encoder": { "name": "@mediabunny/mp3-encoder", - "version": "1.13.1", + "version": "1.13.2", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" diff --git a/package.json b/package.json index dd572ba..5248f65 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mediabunny", "author": "Vanilagy", - "version": "1.13.1", + "version": "1.13.2", "description": "Pure TypeScript media toolkit for reading, writing, and converting media files, directly in the browser.", "type": "module", "workspaces": [ diff --git a/packages/mp3-encoder/package.json b/packages/mp3-encoder/package.json index 70c7ec4..258c10f 100644 --- a/packages/mp3-encoder/package.json +++ b/packages/mp3-encoder/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/mp3-encoder", "author": "Vanilagy", - "version": "1.13.1", + "version": "1.13.2", "description": "MP3 encoder extension for Mediabunny, based on LAME.", "main": "./dist/bundles/mediabunny-mp3-encoder.mjs", "module": "./dist/bundles/mediabunny-mp3-encoder.mjs", diff --git a/src/mp3/mp3-demuxer.ts b/src/mp3/mp3-demuxer.ts index 8ab87ef..c31f463 100644 --- a/src/mp3/mp3-demuxer.ts +++ b/src/mp3/mp3-demuxer.ts @@ -75,9 +75,7 @@ export class Mp3Demuxer extends Demuxer { } } - const startPos = this.lastLoadedPos; - - const result = await readNextFrameHeader(this.reader, startPos, this.reader.fileSize); + const result = await readNextFrameHeader(this.reader, this.lastLoadedPos, this.reader.fileSize); if (!result) { this.lastSampleLoaded = true; return; @@ -89,16 +87,16 @@ export class Mp3Demuxer extends Demuxer { const xingOffset = getXingOffset(header.mpegVersionId, header.channel); - let slice = this.reader.requestSlice(startPos + xingOffset, 4); + let slice = this.reader.requestSlice(result.startPos + xingOffset, 4); if (slice instanceof Promise) slice = await slice; - assert(slice); + if (slice) { + const word = readU32Be(slice); + const isXing = word === XING || word === INFO; - const word = readU32Be(slice); - const isXing = word === XING || word === INFO; - - if (isXing) { - // There's no actual audio data in this frame, so let's skip it - return; + if (isXing) { + // There's no actual audio data in this frame, so let's skip it + return; + } } if (!this.firstFrameHeader) { @@ -109,7 +107,7 @@ export class Mp3Demuxer extends Demuxer { const sample: Sample = { timestamp: this.nextTimestampInSamples / header.sampleRate, duration: sampleDuration, - dataStart: startPos, + dataStart: result.startPos, dataSize: header.totalSize, };