From 9d477dfb14d5351077b8b1a3ff2a9c90263facb9 Mon Sep 17 00:00:00 2001 From: Vanilagy <1696106+Vanilagy@users.noreply.github.com> Date: Tue, 11 Nov 2025 17:06:10 +0100 Subject: [PATCH] Allow muxing of avc3 into ISOBMFF (see #216) --- src/isobmff/isobmff-boxes.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/isobmff/isobmff-boxes.ts b/src/isobmff/isobmff-boxes.ts index 96900d0..d7a5a38 100644 --- a/src/isobmff/isobmff-boxes.ts +++ b/src/isobmff/isobmff-boxes.ts @@ -577,7 +577,7 @@ export const stsd = (trackData: IsobmffTrackData) => { if (trackData.type === 'video') { sampleDescription = videoSampleDescription( - VIDEO_CODEC_TO_BOX_NAME[trackData.track.source._codec], + videoCodecToBoxName(trackData.track.source._codec, trackData.info.decoderConfig.codec), trackData, ); } else if (trackData.type === 'audio') { @@ -1572,12 +1572,14 @@ const dataStringBoxLong = (value: string) => { ]); }; -const VIDEO_CODEC_TO_BOX_NAME: Record = { - avc: 'avc1', - hevc: 'hvc1', - vp8: 'vp08', - vp9: 'vp09', - av1: 'av01', +const videoCodecToBoxName = (codec: VideoCodec, fullCodecString: string) => { + switch (codec) { + case 'avc': return fullCodecString.startsWith('avc3') ? 'avc3' : 'avc1'; + case 'hevc': return 'hvc1'; + case 'vp8': return 'vp08'; + case 'vp9': return 'vp09'; + case 'av1': return 'av01'; + } }; const VIDEO_CODEC_TO_CONFIGURATION_BOX: Record Box | null> = {