From b0c0a9eb5690ad03bedb8d2d64aee56e54f72a38 Mon Sep 17 00:00:00 2001 From: FredTsang <979738295@qq.com> Date: Thu, 24 Apr 2025 22:08:23 +0800 Subject: [PATCH 1/2] feat(flv-demuxer): support 'dropSEI' config for H.264 --- src/config.js | 1 + src/demux/flv-demuxer.js | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/config.js b/src/config.js index 512fd702..d7893cac 100644 --- a/src/config.js +++ b/src/config.js @@ -46,6 +46,7 @@ export const defaultConfig = { statisticsInfoReportInterval: 600, fixAudioTimestampGap: true, + dropSEI: false, accurateSeek: false, seekType: 'range', // [range, param, custom] diff --git a/src/demux/flv-demuxer.js b/src/demux/flv-demuxer.js index f3681e7d..cf8c058b 100644 --- a/src/demux/flv-demuxer.js +++ b/src/demux/flv-demuxer.js @@ -1668,10 +1668,14 @@ class FLVDemuxer { keyframe = true; } - let data = new Uint8Array(arrayBuffer, dataOffset + offset, lengthSize + naluSize); - let unit = {type: unitType, data: data}; - units.push(unit); - length += data.byteLength; + if (this._config.dropSEI && unitType === 6) { // SEI + // skip SEI Nalu + } else { + let data = new Uint8Array(arrayBuffer, dataOffset + offset, lengthSize + naluSize); + let unit = {type: unitType, data: data}; + units.push(unit); + length += data.byteLength; + } offset += lengthSize + naluSize; } From 4eee2e0562432227857691cd8e3dd2399fe2f3f3 Mon Sep 17 00:00:00 2001 From: FredTsang <979738295@qq.com> Date: Thu, 24 Apr 2025 22:15:53 +0800 Subject: [PATCH 2/2] feat(flv-demuxer): support 'dropSEI' config for HEVC --- src/demux/flv-demuxer.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/demux/flv-demuxer.js b/src/demux/flv-demuxer.js index cf8c058b..a533c7e3 100644 --- a/src/demux/flv-demuxer.js +++ b/src/demux/flv-demuxer.js @@ -1730,10 +1730,14 @@ class FLVDemuxer { keyframe = true; } - let data = new Uint8Array(arrayBuffer, dataOffset + offset, lengthSize + naluSize); - let unit = {type: unitType, data: data}; - units.push(unit); - length += data.byteLength; + if (this._config.dropSEI && (uintType === 39 || uintType === 40)) { // SEI + // drop SEI Nalu + } else { + let data = new Uint8Array(arrayBuffer, dataOffset + offset, lengthSize + naluSize); + let unit = {type: unitType, data: data}; + units.push(unit); + length += data.byteLength; + } offset += lengthSize + naluSize; }