After mkvmerge
processed an mkv
file, all streams have a lot of statistics metadata tagged onto them.
For example:
Stream #0:27: Subtitle: hdmv_pgs_subtitle
Metadata:
BPS-eng : 40153
DURATION-eng : 02:26:34
NUMBER_OF_FRAMES-eng: 3294
NUMBER_OF_BYTES-eng: 34073971
_STATISTICS_WRITING_APP-eng: mkvmerge v32.0.0 ('Astral Progressions') 64-bit
_STATISTICS_WRITING_DATE_UTC-eng: 2024-04-27 21:43:32
_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
We can use ffmpeg to remove all this metadata easily:
ffmpegremovemkvmergemetadata() {
ffmpeg \
-hide_banner \
-nostdin \
-v error \
-xerror \
-i "$1" \
-map 0 \
-c copy \
-disposition +0 \
-metadata:s BPS-eng= \
-metadata:s DURATION-eng= \
-metadata:s NUMBER_OF_FRAMES-eng= \
-metadata:s NUMBER_OF_BYTES-eng= \
-metadata:s _STATISTICS_WRITING_APP-eng= \
-metadata:s _STATISTICS_WRITING_DATE_UTC-eng= \
-metadata:s _STATISTICS_TAGS-eng= \
-metadata:s DURATION= \
-metadata:s ENCODER= \
-metadata:s BPS= \
-metadata:s NUMBER_OF_FRAMES= \
-metadata:s NUMBER_OF_BYTES= \
-metadata:s _STATISTICS_WRITING_APP= \
-metadata:s _STATISTICS_WRITING_DATE_UTC= \
-metadata:s _STATISTICS_TAGS= \
-metadata:s SOURCE_ID= \
-metadata:s SOURCE_ID-eng= \
-metadata:g creation_time= \
"${1%.*}-nomkvmergemetadata.${1##*.}"
}
Which reduces our example to:
Stream #0:27: Subtitle: hdmv_pgs_subtitle
When using mkvmerge
use the following arguments to prevent creation of these metadata tags:
--disable-track-statistics-tags