diff --git a/README.md b/README.md index 08a0196..6190757 100644 --- a/README.md +++ b/README.md @@ -44,14 +44,6 @@ Mediabunny is a JavaScript library for reading, writing, and converting media (l -### Silver sponsors - -
- - Ponder - -
- ### Bronze sponsors
diff --git a/docs/index.md b/docs/index.md index 5446b9d..a932805 100644 --- a/docs/index.md +++ b/docs/index.md @@ -102,9 +102,7 @@ const sponsors = { { image: '/sponsors/screen-studio.webp', name: 'Screen Studio', url: 'https://screen.studio/' }, { image: '/sponsors/tella.svg', name: 'Tella', url: 'https://www.tella.com/' }, ], - silver: [ - { image: '/sponsors/ponder.png', name: 'Ponder', url: 'https://ponder.ai/' }, - ], + silver: [], bronze: [ { image: '/sponsors/elevenlabs.png', name: 'ElevenLabs', url: 'https://elevenlabs.io/' }, { image: '/sponsors/rve.png', name: 'React Video Editor', url: 'https://www.reactvideoeditor.com/' }, diff --git a/package-lock.json b/package-lock.json index 0f6d7d7..84791c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mediabunny", - "version": "1.50.6", + "version": "1.50.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mediabunny", - "version": "1.50.6", + "version": "1.50.7", "license": "MPL-2.0", "workspaces": [ ".", @@ -12894,7 +12894,7 @@ }, "packages/aac-encoder": { "name": "@mediabunny/aac-encoder", - "version": "1.50.6", + "version": "1.50.7", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -12909,7 +12909,7 @@ }, "packages/ac3": { "name": "@mediabunny/ac3", - "version": "1.50.6", + "version": "1.50.7", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -12924,7 +12924,7 @@ }, "packages/flac-encoder": { "name": "@mediabunny/flac-encoder", - "version": "1.50.6", + "version": "1.50.7", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -12939,7 +12939,7 @@ }, "packages/mp3-encoder": { "name": "@mediabunny/mp3-encoder", - "version": "1.50.6", + "version": "1.50.7", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -12954,7 +12954,7 @@ }, "packages/prores": { "name": "@mediabunny/prores", - "version": "1.50.6", + "version": "1.50.7", "license": "MPL-2.0", "dependencies": { "turbores": "^1.2.1" @@ -12969,10 +12969,10 @@ }, "packages/server": { "name": "@mediabunny/server", - "version": "1.50.6", + "version": "1.50.7", "license": "MPL-2.0", "dependencies": { - "@mediabunny/prores": "^1.50.6", + "@mediabunny/prores": "^1.50.7", "node-av": "^6.0.0" }, "funding": { diff --git a/package.json b/package.json index fdb4191..04cc154 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mediabunny", "author": "Vanilagy", - "version": "1.50.6", + "version": "1.50.7", "description": "Pure TypeScript media toolkit for reading, writing, and converting media files, directly in the browser.", "type": "module", "workspaces": [ @@ -56,10 +56,10 @@ "examples:build": "vite build", "fix-build-import-paths": "tsx scripts/add-import-extensions.ts", "append-namespace": "echo 'export as namespace Mediabunny;' >> dist/mediabunny.d.ts", - "bump-patch": "npm version patch --no-git-tag-version --workspaces && tsx scripts/sync-workspace-deps.ts", - "bump-minor": "npm version minor --no-git-tag-version --workspaces && tsx scripts/sync-workspace-deps.ts", - "bump-major": "npm version major --no-git-tag-version --workspaces && tsx scripts/sync-workspace-deps.ts", - "set-version": "npm version --no-git-tag-version --workspaces && tsx scripts/sync-workspace-deps.ts" + "bump-patch": "npm version patch --no-git-tag-version --workspaces && tsx scripts/sync-workspace-deps.ts && npm i", + "bump-minor": "npm version minor --no-git-tag-version --workspaces && tsx scripts/sync-workspace-deps.ts && npm i", + "bump-major": "npm version major --no-git-tag-version --workspaces && tsx scripts/sync-workspace-deps.ts && npm i", + "set-version": "npm version --no-git-tag-version --workspaces && tsx scripts/sync-workspace-deps.ts && npm i" }, "license": "MPL-2.0", "repository": { diff --git a/packages/aac-encoder/package.json b/packages/aac-encoder/package.json index 693e96b..31d9a59 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.50.6", + "version": "1.50.7", "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 c6de5d6..420ea96 100644 --- a/packages/ac3/package.json +++ b/packages/ac3/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/ac3", "author": "Vanilagy", - "version": "1.50.6", + "version": "1.50.7", "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 e5b6732..ad8820a 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.50.6", + "version": "1.50.7", "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 f34f967..6bc7e09 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.50.6", + "version": "1.50.7", "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 558cdc2..83b7dc3 100644 --- a/packages/prores/package.json +++ b/packages/prores/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/prores", "author": "Vanilagy", - "version": "1.50.6", + "version": "1.50.7", "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 e61a1e9..a740f0c 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/server", "author": "Vanilagy", - "version": "1.50.6", + "version": "1.50.7", "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.50.6" + "@mediabunny/prores": "^1.50.7" }, "peerDependencies": { "mediabunny": "^1.45.0" diff --git a/packages/server/src/video-encoder.ts b/packages/server/src/video-encoder.ts index ed08d33..a37b4ff 100644 --- a/packages/server/src/video-encoder.ts +++ b/packages/server/src/video-encoder.ts @@ -203,6 +203,11 @@ export class NodeAvVideoEncoder extends CustomVideoEncoder { if (isRealtime) { codecContext.setOption('preset', '12'); } + } else if (this.avCodec.name === 'h264_nvenc') { + // When we force a key frame, we want a true IDR frame, not just an I frame + codecContext.setOption('forced-idr', '1'); + } else if (this.avCodec.name === 'hevc_nvenc') { + codecContext.setOption('forced-idr', '1'); } if (this.codec === 'prores') { diff --git a/src/resample.ts b/src/resample.ts index fa21703..f942daf 100644 --- a/src/resample.ts +++ b/src/resample.ts @@ -199,7 +199,7 @@ export class AudioResampler { const inputEndTime = inputStartTime + audioSample.duration; // Compute which output frames are affected by this sample - const outputStartFrame = Math.floor(inputStartTime * this.targetSampleRate); + const outputStartFrame = Math.floor((inputStartTime - 1 / this.sourceSampleRate) * this.targetSampleRate) + 1; const outputEndFrame = Math.ceil(inputEndTime * this.targetSampleRate); for (let outputFrame = outputStartFrame; outputFrame < outputEndFrame; outputFrame++) {