Add onEncoderConfig

This commit is contained in:
Vanilagy
2025-04-05 15:16:48 +02:00
parent 5e224510be
commit c95058e659
3 changed files with 8 additions and 1 deletions
+1 -1
View File
@@ -21,7 +21,7 @@
chunked: true, chunked: true,
chunkSize: 2**20 chunkSize: 2**20
}); });
const outputFormat = new Metamuxer.OggOutputFormat({ const outputFormat = new Metamuxer.WebMOutputFormat({
//streamable: true //streamable: true
//fastStart: 'fragmented' //fastStart: 'fragmented'
}); });
+1
View File
@@ -39,6 +39,7 @@ export default tseslint.config(
'build.mjs', 'build.mjs',
'append-namespace.mjs', 'append-namespace.mjs',
'eslint.config.mjs', 'eslint.config.mjs',
'docs/.vitepress/cache',
] ]
} }
); );
+6
View File
@@ -190,6 +190,8 @@ export type VideoEncodingConfig = {
onEncodedPacket?: (packet: EncodedPacket, meta: EncodedVideoChunkMetadata | undefined) => unknown; onEncodedPacket?: (packet: EncodedPacket, meta: EncodedVideoChunkMetadata | undefined) => unknown;
/** Called when an error occurs during encoding. */ /** Called when an error occurs during encoding. */
onEncodingError?: (error: Error) => unknown; onEncodingError?: (error: Error) => unknown;
/** Called when the internal encoder config, as used by the WebCodecs API, is created. */
onEncoderConfig?: (config: VideoEncoderConfig) => unknown;
}; };
const validateVideoEncodingConfig = (config: VideoEncodingConfig) => { const validateVideoEncodingConfig = (config: VideoEncodingConfig) => {
@@ -337,6 +339,7 @@ class VideoEncoderWrapper {
latencyMode: this.encodingConfig.latencyMode, latencyMode: this.encodingConfig.latencyMode,
...getVideoEncoderConfigExtension(this.encodingConfig.codec), ...getVideoEncoderConfigExtension(this.encodingConfig.codec),
}; };
this.encodingConfig.onEncoderConfig?.(encoderConfig);
const MatchingCustomEncoder = customVideoEncoders.find(x => x.supports( const MatchingCustomEncoder = customVideoEncoders.find(x => x.supports(
this.encodingConfig.codec, this.encodingConfig.codec,
@@ -634,6 +637,8 @@ export type AudioEncodingConfig = {
onEncodedPacket?: (packet: EncodedPacket, meta: EncodedAudioChunkMetadata | undefined) => unknown; onEncodedPacket?: (packet: EncodedPacket, meta: EncodedAudioChunkMetadata | undefined) => unknown;
/** Called when an error occurs during encoding. */ /** Called when an error occurs during encoding. */
onEncodingError?: (error: Error) => unknown; onEncodingError?: (error: Error) => unknown;
/** Called when the internal encoder config, as used by the WebCodecs API, is created. */
onEncoderConfig?: (config: AudioEncoderConfig) => unknown;
}; };
const validateAudioEncodingConfig = (config: AudioEncodingConfig) => { const validateAudioEncodingConfig = (config: AudioEncodingConfig) => {
@@ -842,6 +847,7 @@ class AudioEncoderWrapper {
bitrate, bitrate,
...getAudioEncoderConfigExtension(this.encodingConfig.codec), ...getAudioEncoderConfigExtension(this.encodingConfig.codec),
}; };
this.encodingConfig.onEncoderConfig?.(encoderConfig);
const MatchingCustomEncoder = customAudioEncoders.find(x => x.supports( const MatchingCustomEncoder = customAudioEncoders.find(x => x.supports(
this.encodingConfig.codec, this.encodingConfig.codec,