diff --git a/package-lock.json b/package-lock.json index 5facff3..b3e158c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mediabunny", - "version": "1.45.0", + "version": "1.45.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mediabunny", - "version": "1.45.0", + "version": "1.45.1", "license": "MPL-2.0", "workspaces": [ ".", @@ -2210,161 +2210,129 @@ } }, "node_modules/@seydx/node-av-darwin-arm64": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@seydx/node-av-darwin-arm64/-/node-av-darwin-arm64-5.2.3.tgz", - "integrity": "sha512-pLX0SS3LLRoDWHCt+aWWc/P5W/BpmB5vD935KcM5nlxDG+SMjc4uyYqG+t8VVKwvmPrE2kLCsAAu/h37x4ZPYQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@seydx/node-av-darwin-arm64/-/node-av-darwin-arm64-5.2.4.tgz", + "integrity": "sha512-uQh6jWXDeXtjuaGOXrBx2rszPDcQbRa4W1YFrmlQG+ffOo+IJyczGjhTWfgzebRksB9tMAe9ViztU39THWZAkw==", "cpu": [ "arm64" ], - "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ "darwin" ], - "dependencies": { - "unzipper": "^0.12.3" - }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" } }, "node_modules/@seydx/node-av-darwin-x64": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@seydx/node-av-darwin-x64/-/node-av-darwin-x64-5.2.3.tgz", - "integrity": "sha512-kMweEjMCItEH0eolKntm6IXWFDgMlfrW4xLFTIsrLfe9w9mdAMMQIqWA+7WTCWKMGUl9z5Nc/Y5GNl4HGx8N9w==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@seydx/node-av-darwin-x64/-/node-av-darwin-x64-5.2.4.tgz", + "integrity": "sha512-S9ptQF7JhvGSbvZH9jVeDAPXyRklA7rySKiFzi4UeLTMJslgFTSWFgY2nJAtHrP4wRdkAPnAVjExqd8U7jRZgg==", "cpu": [ "x64" ], - "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ "darwin" ], - "dependencies": { - "unzipper": "^0.12.3" - }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" } }, "node_modules/@seydx/node-av-linux-arm64": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@seydx/node-av-linux-arm64/-/node-av-linux-arm64-5.2.3.tgz", - "integrity": "sha512-WHtPyzkIaiQtDV8Dashp84adEdMGHByMWDdHWnTIVhc29+0vrv+xZbgWKh1Y+z5XrpzSXUM36WzSttkzpDs6bw==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@seydx/node-av-linux-arm64/-/node-av-linux-arm64-5.2.4.tgz", + "integrity": "sha512-XlQAWIcqFxVItr98VShaxzx57Cfl0y+RPCPciLOHXuEmfeKjON4o/xdbChHg02hHFrVAeSCfaHWQmHNgB9m6eQ==", "cpu": [ "arm64" ], - "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ "linux" ], - "dependencies": { - "unzipper": "^0.12.3" - }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" } }, "node_modules/@seydx/node-av-linux-x64": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@seydx/node-av-linux-x64/-/node-av-linux-x64-5.2.3.tgz", - "integrity": "sha512-Nwm25hBKUl4TTv6zY2AbZJNSTor3ubilbW02NofQx0ch68fANs5zIPDvWFMZOrQwDnl5NYpO4rHB3/UnoNEBcg==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@seydx/node-av-linux-x64/-/node-av-linux-x64-5.2.4.tgz", + "integrity": "sha512-+2LdgZ7irDik++0mO6Bo1odYa2NZvze6xiy4B8jTbcf3F8k46qQEKkPjBwtV0qQu5fn3M+fUc/wk5coHdfxjxA==", "cpu": [ "x64" ], - "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ "linux" ], - "dependencies": { - "unzipper": "^0.12.3" - }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" } }, "node_modules/@seydx/node-av-win32-arm64-mingw": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@seydx/node-av-win32-arm64-mingw/-/node-av-win32-arm64-mingw-5.2.3.tgz", - "integrity": "sha512-0J/IArDO/jebA7a8Ep6j1XeZFF8DmDQD8x0+LrYsMQiv89i5NQJto/Bbaazfmldi+HGKBiJe+NwswzVW18pMyA==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@seydx/node-av-win32-arm64-mingw/-/node-av-win32-arm64-mingw-5.2.4.tgz", + "integrity": "sha512-uVNgRQ44uSdtMcR9O6R+nrBou5BWmroTFnGPI3PX8pHR8oe1Nim5zXtWK0qGTTqOiTPNsK5XnSshM3c5/n0/Fg==", "cpu": [ "arm64" ], - "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ "win32" ], - "dependencies": { - "unzipper": "^0.12.3" - }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" } }, "node_modules/@seydx/node-av-win32-arm64-msvc": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@seydx/node-av-win32-arm64-msvc/-/node-av-win32-arm64-msvc-5.2.3.tgz", - "integrity": "sha512-NCoOZSD4KppikZUv71xzTQEKpRMUaR2ZSzgpwGGaCLEWZ27lKRpSmE6vMQJXYuBMN5ePf36FsBdP7he+dMQpvQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@seydx/node-av-win32-arm64-msvc/-/node-av-win32-arm64-msvc-5.2.4.tgz", + "integrity": "sha512-Gi+Op8j028WHbdl2jR7MnyHqR2J1TfkEogLPludb3jx54Yi+MO1zvouICFUmtSbxd9JC7CAeoU8++CZAMqcEvA==", "cpu": [ "arm64" ], - "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ "win32" ], - "dependencies": { - "unzipper": "^0.12.3" - }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" } }, "node_modules/@seydx/node-av-win32-x64-mingw": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@seydx/node-av-win32-x64-mingw/-/node-av-win32-x64-mingw-5.2.3.tgz", - "integrity": "sha512-HClIpeM+73yEAIIAgSL/vHV385ka7gYRyJ+Z3s/t4uvLWD2VGhgGhZSS7U6d1RMS75+D4wBiEqLPiXTz7NLA1w==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@seydx/node-av-win32-x64-mingw/-/node-av-win32-x64-mingw-5.2.4.tgz", + "integrity": "sha512-gClAhvV/aJa681tuTlG6dTqqMpnTM5k6QVhnWolBgkbpZXMi0qABzoUBTYpuwxnOEd6j2mBBAVwqx6kut55Ukw==", "cpu": [ "x64" ], - "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ "win32" ], - "dependencies": { - "unzipper": "^0.12.3" - }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" } }, "node_modules/@seydx/node-av-win32-x64-msvc": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@seydx/node-av-win32-x64-msvc/-/node-av-win32-x64-msvc-5.2.3.tgz", - "integrity": "sha512-abGMjVfnzCV6YTGBabXL6KJEHCODUY5Bl8/WLC2taBAwZHsvj2S4B7LfoxvulJmm3HeSWqG0/ygD1nk7VyyQMw==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@seydx/node-av-win32-x64-msvc/-/node-av-win32-x64-msvc-5.2.4.tgz", + "integrity": "sha512-01s5ij6nudrtZ7ojiAOAgzuUrImvuQYrAE5o6uesoxYqOha6j7yRu5e4qCXRQCDKrh2FBzyO1cGDc7Ht8Ly8wQ==", "cpu": [ "x64" ], - "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ "win32" ], - "dependencies": { - "unzipper": "^0.12.3" - }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" } @@ -9001,24 +8969,24 @@ } }, "node_modules/node-av": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/node-av/-/node-av-5.2.3.tgz", - "integrity": "sha512-tUFIqn1kV5Ihzgzc2/g0s00Di21+On50g5TTHRpVl57b7kqzFidQr5rire8iktfltWg9Q8cRNyo8wpcxG9pkNA==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/node-av/-/node-av-5.2.4.tgz", + "integrity": "sha512-L5r+6k+YGvH5MZX8o55JHQbbeRZ+iFieAb1bhKtpa8hrqBEGuSwdkXRwpE4vd414JqVJsq/EQq6s+3qKeviQTg==", "hasInstallScript": true, "license": "MIT", "dependencies": { "unzipper": "^0.12.3", - "werift": "^0.22.9" + "werift": "^0.23.0" }, "optionalDependencies": { - "@seydx/node-av-darwin-arm64": "^5.2.3", - "@seydx/node-av-darwin-x64": "^5.2.3", - "@seydx/node-av-linux-arm64": "^5.2.3", - "@seydx/node-av-linux-x64": "^5.2.3", - "@seydx/node-av-win32-arm64-mingw": "^5.2.3", - "@seydx/node-av-win32-arm64-msvc": "^5.2.3", - "@seydx/node-av-win32-x64-mingw": "^5.2.3", - "@seydx/node-av-win32-x64-msvc": "^5.2.3" + "@seydx/node-av-darwin-arm64": "^5.2.4", + "@seydx/node-av-darwin-x64": "^5.2.4", + "@seydx/node-av-linux-arm64": "^5.2.4", + "@seydx/node-av-linux-x64": "^5.2.4", + "@seydx/node-av-win32-arm64-mingw": "^5.2.4", + "@seydx/node-av-win32-arm64-msvc": "^5.2.4", + "@seydx/node-av-win32-x64-mingw": "^5.2.4", + "@seydx/node-av-win32-x64-msvc": "^5.2.4" } }, "node_modules/node-domexception": { @@ -12437,9 +12405,9 @@ "dev": true }, "node_modules/werift": { - "version": "0.22.9", - "resolved": "https://registry.npmjs.org/werift/-/werift-0.22.9.tgz", - "integrity": "sha512-TE9AxskSRWBMYm0MBRllfnKVXQelqC76JCvyolQyVWpmKabfY5BA/cuvkGg+71JWn3QrGih1YWtpIWGPqoxcoA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/werift/-/werift-0.23.0.tgz", + "integrity": "sha512-/WcIN5DHFG9Ri4anGOmIkp8gxBGFMWSIB/m4sfZ5CWlLfD3iMhiaAUuTBuc+KV3SY9NDmvmLtiN2uaM7k3lVzw==", "license": "MIT", "dependencies": { "@fidm/x509": "^1.2.1", @@ -12838,7 +12806,7 @@ }, "packages/aac-encoder": { "name": "@mediabunny/aac-encoder", - "version": "1.45.0", + "version": "1.45.1", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -12853,7 +12821,7 @@ }, "packages/ac3": { "name": "@mediabunny/ac3", - "version": "1.45.0", + "version": "1.45.1", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -12868,7 +12836,7 @@ }, "packages/flac-encoder": { "name": "@mediabunny/flac-encoder", - "version": "1.45.0", + "version": "1.45.1", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -12883,7 +12851,7 @@ }, "packages/mp3-encoder": { "name": "@mediabunny/mp3-encoder", - "version": "1.45.0", + "version": "1.45.1", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -12898,17 +12866,17 @@ }, "packages/server": { "name": "@mediabunny/server", - "version": "1.45.0", + "version": "1.45.1", "license": "MPL-2.0", "dependencies": { - "node-av": "^5.2.3" + "node-av": "^5.2.4" }, "funding": { "type": "individual", "url": "https://github.com/sponsors/Vanilagy" }, "peerDependencies": { - "mediabunny": "^1.0.0" + "mediabunny": "^1.45.0" } } } diff --git a/package.json b/package.json index 5ce6670..23a0590 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mediabunny", "author": "Vanilagy", - "version": "1.45.0", + "version": "1.45.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 7e2d5e4..1d1e4a3 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.45.0", + "version": "1.45.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 49f67d6..878cf5e 100644 --- a/packages/ac3/package.json +++ b/packages/ac3/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/ac3", "author": "Vanilagy", - "version": "1.45.0", + "version": "1.45.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 e146ba0..b8fd783 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.45.0", + "version": "1.45.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 2a3f4fb..3ef07b8 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.45.0", + "version": "1.45.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/server/package.json b/packages/server/package.json index dab5a26..3e9ab33 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/server", "author": "Vanilagy", - "version": "1.45.0", + "version": "1.45.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", @@ -34,10 +34,10 @@ "url": "https://github.com/sponsors/Vanilagy" }, "dependencies": { - "node-av": "^5.2.3" + "node-av": "^5.2.4" }, "peerDependencies": { - "mediabunny": "^1.0.0" + "mediabunny": "^1.45.0" }, "keywords": [ "server", diff --git a/packages/server/src/misc.ts b/packages/server/src/misc.ts index 4e73b4b..217545e 100644 --- a/packages/server/src/misc.ts +++ b/packages/server/src/misc.ts @@ -237,6 +237,3 @@ export const getChannelLayout = (numChannels: number): NodeAv.ChannelLayout => { default: return { nbChannels: numChannels, order: NodeAv.AV_CHANNEL_ORDER_UNSPEC, mask: 0n }; } }; - -// The value is incorrect in the node-av source code, so we do: -export const LIBVPX_VP9 = 'libvpx-vp9' as (NodeAv.FFEncoderCodec & NodeAv.FFDecoderCodec); diff --git a/packages/server/src/video-decoder.ts b/packages/server/src/video-decoder.ts index 14272a2..7b56827 100644 --- a/packages/server/src/video-decoder.ts +++ b/packages/server/src/video-decoder.ts @@ -8,7 +8,7 @@ import { CustomVideoDecoder, VideoCodec, EncodedPacket, VideoSample, type MaybePromise, Rational } from 'mediabunny'; import * as NodeAv from 'node-av'; -import { CODEC_TO_CODEC_ID, getHardwareDecoderCodec, LIBVPX_VP9 } from './misc'; +import { CODEC_TO_CODEC_ID, getHardwareDecoderCodec } from './misc'; import { assert, binarySearchLessOrEqual, simplifyRational, toUint8Array } from '../../../src/misc'; import { AvFrameVideoSampleResource } from './video-sample'; @@ -47,7 +47,7 @@ export class NodeAvVideoDecoder extends CustomVideoDecoder { let codec: NodeAv.Codec | null; if (this.codec === 'vp9' && packet.sideData.alpha) { - codec = NodeAv.Codec.findDecoderByName(LIBVPX_VP9) ?? NodeAv.Codec.findDecoder(codecId); + codec = NodeAv.Codec.findDecoderByName(NodeAv.FF_DECODER_LIBVPX_VP9) ?? NodeAv.Codec.findDecoder(codecId); } else if ( // This check used to be "is not prefer-hardware", meaning it would default to using software decode. I // didn't leave a comment for that back then so I actually don't know what it was for. I'm sure it was to diff --git a/packages/server/src/video-encoder.ts b/packages/server/src/video-encoder.ts index 1cdfc09..f6ed3a0 100644 --- a/packages/server/src/video-encoder.ts +++ b/packages/server/src/video-encoder.ts @@ -19,7 +19,6 @@ import * as NodeAv from 'node-av'; import { CODEC_TO_CODEC_ID, getHardwareEncoderCodec, - LIBVPX_VP9, unmapColorPrimaries, unmapMatrixCoefficients, unmapTransferCharacteristics, @@ -81,7 +80,7 @@ export class NodeAvVideoEncoder extends CustomVideoEncoder { let codec: NodeAv.Codec | null = null; if (this.codec === 'vp9' && this.config.alpha === 'keep') { - codec = NodeAv.Codec.findEncoderByName(LIBVPX_VP9) ?? NodeAv.Codec.findEncoder(codecId); + codec = NodeAv.Codec.findEncoderByName(NodeAv.FF_ENCODER_LIBVPX_VP9) ?? NodeAv.Codec.findEncoder(codecId); } else if (this.config.hardwareAcceleration === 'prefer-software') { codec = NodeAv.Codec.findEncoder(codecId); } else { diff --git a/src/codec.ts b/src/codec.ts index e763a98..7baa6cc 100644 --- a/src/codec.ts +++ b/src/codec.ts @@ -629,7 +629,7 @@ export const guessDescriptionForAudio = (decoderConfig: AudioDecoderConfig): Uin export const OPUS_SAMPLE_RATE = 48_000; -const PCM_CODEC_REGEX = /^pcm-([usf])(\d+)+(be)?$/; +const PCM_CODEC_REGEX = /^pcm-([usf])(\d+)(be)?$/; export const parsePcmCodec = (codec: PcmAudioCodec) => { assert(PCM_AUDIO_CODECS.includes(codec));