diff --git a/package-lock.json b/package-lock.json index 6b41c81..1d7a236 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mediabunny", - "version": "1.53.0", + "version": "1.53.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mediabunny", - "version": "1.53.0", + "version": "1.53.1", "license": "MPL-2.0", "workspaces": [ ".", @@ -12954,7 +12954,7 @@ }, "packages/aac-encoder": { "name": "@mediabunny/aac-encoder", - "version": "1.53.0", + "version": "1.53.1", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -12969,7 +12969,7 @@ }, "packages/ac3": { "name": "@mediabunny/ac3", - "version": "1.53.0", + "version": "1.53.1", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -12984,7 +12984,7 @@ }, "packages/flac-encoder": { "name": "@mediabunny/flac-encoder", - "version": "1.53.0", + "version": "1.53.1", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -12999,7 +12999,7 @@ }, "packages/mp3-encoder": { "name": "@mediabunny/mp3-encoder", - "version": "1.53.0", + "version": "1.53.1", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -13014,7 +13014,7 @@ }, "packages/prores": { "name": "@mediabunny/prores", - "version": "1.53.0", + "version": "1.53.1", "license": "MPL-2.0", "dependencies": { "turbores": "^1.2.2" @@ -13029,10 +13029,10 @@ }, "packages/server": { "name": "@mediabunny/server", - "version": "1.53.0", + "version": "1.53.1", "license": "MPL-2.0", "dependencies": { - "@mediabunny/prores": "^1.53.0", + "@mediabunny/prores": "^1.53.1", "node-av": "^6.0.0" }, "funding": { diff --git a/package.json b/package.json index 0ebcf48..363543c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mediabunny", "author": "Vanilagy", - "version": "1.53.0", + "version": "1.53.1", "description": "Pure TypeScript media toolkit for reading, writing, and converting media files, directly in the browser.", "type": "module", "workspaces": [ diff --git a/packages/aac-encoder/package.json b/packages/aac-encoder/package.json index fa5cda2..9d73d10 100644 --- a/packages/aac-encoder/package.json +++ b/packages/aac-encoder/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/aac-encoder", "author": "Vanilagy", - "version": "1.53.0", + "version": "1.53.1", "description": "AAC encoder extension for Mediabunny, based on FFmpeg.", "main": "./dist/bundles/mediabunny-aac-encoder.mjs", "module": "./dist/bundles/mediabunny-aac-encoder.mjs", diff --git a/packages/ac3/package.json b/packages/ac3/package.json index 6050b94..55c4958 100644 --- a/packages/ac3/package.json +++ b/packages/ac3/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/ac3", "author": "Vanilagy", - "version": "1.53.0", + "version": "1.53.1", "description": "AC-3 and E-AC-3 (Dolby Digital) decoder and encoder extension for Mediabunny, based on FFmpeg.", "main": "./dist/bundles/mediabunny-ac3.mjs", "module": "./dist/bundles/mediabunny-ac3.mjs", diff --git a/packages/flac-encoder/package.json b/packages/flac-encoder/package.json index 9f8aec7..7c228ab 100644 --- a/packages/flac-encoder/package.json +++ b/packages/flac-encoder/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/flac-encoder", "author": "Vanilagy", - "version": "1.53.0", + "version": "1.53.1", "description": "FLAC encoder extension for Mediabunny, based on libFLAC.", "main": "./dist/bundles/mediabunny-flac-encoder.mjs", "module": "./dist/bundles/mediabunny-flac-encoder.mjs", diff --git a/packages/mp3-encoder/package.json b/packages/mp3-encoder/package.json index b0bac58..67f4f3c 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.53.0", + "version": "1.53.1", "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/packages/prores/package.json b/packages/prores/package.json index f397089..5c2a8ce 100644 --- a/packages/prores/package.json +++ b/packages/prores/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/prores", "author": "Vanilagy", - "version": "1.53.0", + "version": "1.53.1", "description": "Apple ProRes decoder extension for Mediabunny, based on TurboRes.", "main": "./dist/bundles/mediabunny-prores.mjs", "module": "./dist/bundles/mediabunny-prores.mjs", diff --git a/packages/server/package.json b/packages/server/package.json index 9843535..69e237b 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/server", "author": "Vanilagy", - "version": "1.53.0", + "version": "1.53.1", "description": "Adds full video and audio decoder and encoder support to Mediabunny for use in server-side environments (Node, Bun, Deno). Based on NodeAV.", "main": "./dist/bundles/mediabunny-server.cjs", "module": "./dist/bundles/mediabunny-server.mjs", @@ -35,7 +35,7 @@ }, "dependencies": { "node-av": "^6.0.0", - "@mediabunny/prores": "^1.53.0" + "@mediabunny/prores": "^1.53.1" }, "peerDependencies": { "mediabunny": "^1.45.0" diff --git a/src/target.ts b/src/target.ts index df961a9..4f78707 100644 --- a/src/target.ts +++ b/src/target.ts @@ -8,7 +8,7 @@ import type { FileHandle } from 'node:fs/promises'; import * as nodeAlias from './node'; -import { assert, EventEmitter, FilePath, MaybePromise } from './misc'; +import { assert, EventEmitter, FilePath, isWebKit, MaybePromise } from './misc'; const node = typeof nodeAlias !== 'undefined' ? nodeAlias // Aliasing it prevents some bundler warnings @@ -542,9 +542,19 @@ export class StreamTarget extends Target { throw new Error('Internal error: Monotonicity violation.'); } + const isPartialView = section.start !== 0 || section.end !== chunk.data.byteLength; + + let data: Uint8Array; + if (isPartialView && isWebKit()) { + // https://bugs.webkit.org/show_bug.cgi?id=302733 + data = chunk.data.slice(section.start, section.end); + } else { + data = chunk.data.subarray(section.start, section.end); + } + void this._streamWriter.write({ type: 'write', - data: chunk.data.subarray(section.start, section.end), + data, position, }).catch((error) => { this._writeError ??= error;