Server Version#: 1.20.5.3600
MKVToolNix (and possibly FFMPEG) changed the way it formats audio bitrate metadata for the MKV container. It used to format it as such:
Stream #0:1(eng): Audio: eac3, 48000 Hz, 5.1(side), fltp, 640 kb/s (default)
Metadata:
BPS : 640000
BPS-eng : 640000
DURATION : 00:00:10.016000000
DURATION-eng : 00:00:10.016000000
NUMBER_OF_FRAMES: 313
NUMBER_OF_FRAMES-eng: 313
NUMBER_OF_BYTES : 801280
NUMBER_OF_BYTES-eng: 801280
_STATISTICS_WRITING_APP: mkvmerge v19.0.0 ('Brave Captain') 64-bit
_STATISTICS_WRITING_APP-eng: mkvmerge v19.0.0 ('Brave Captain') 64-bit
_STATISTICS_WRITING_DATE_UTC: 2019-10-19 07:42:39
_STATISTICS_WRITING_DATE_UTC-eng: 2019-10-19 07:42:39
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
However somewhere along the line it started simply using:
Stream #0:1(eng): Audio: eac3, 48000 Hz, 5.1(side), fltp, 640 kb/s (default)
Metadata:
BPS-eng : 640000
DURATION-eng : 00:01:00.000000000
NUMBER_OF_FRAMES-eng: 1875
NUMBER_OF_BYTES-eng: 4800000
_STATISTICS_WRITING_APP-eng: mkvmerge v38.0.0 ('The Silent Type') 64-bit
_STATISTICS_WRITING_DATE_UTC-eng: 2019-10-18 18:01:58
_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Plex has been unable to parse the new metadata format (with no BPS field) for at least the EAC3 and AAC audio codecs (all I’ve tested). This may not seem like a big deal but the “streaming brain” does not handle that blank field well and assumes some kind of default 10,000mbps value anytime the transcoding decision making process is invoked with that blank field
This causes a lot of transcodes that otherwise wouldn’t be necessary. If you have overall or per-stream upload bandwidth limits set it will almost always trigger a transcode. Some Plex clients (Android/Fire TV) also have a hidden device side limit of 200mbps. Not having audio bitrate info triggers an uncessary video transcode on those devices anytime it would otherwise only need to Direct Stream or perform an audio-only transcode
I’ve been troubleshooting this issues since it first appeared in 2018 so I’ve built up a fairly good understanding of how to work around it. I’ve contacted a few employees over that span so I hope it’s already on your guys’ radar. If not I hope this post can serve as a gentle reminder and a PSA for anyone else that may be experiencing transcoding behavior that doesn’t make sense
Edit: @OttoKerner makes a good point that I should have specified that this is with Deep Analysis disabled (or before the nightly maintenance has had a chance to process even if you do have it enabled)
Edit2: If you use FFMPEG (instead of MKVToolNix) it creates an MKV with audio metadata as such:
Stream #0:1: Audio: eac3, 48000 Hz, stereo, fltp, 192 kb/s (default)
Metadata:
ENCODER : Lavc57.107.100 eac3
DURATION : 00:00:30.016000000
It is similarly not parsed properly by Plex and also results in a blank “Audio Bitrate” field upon initial analysis. In both cases Mediainfo is indeed able to parse the info correctly. It’s likely just a simple issue of Plex goofing the parsing logic a bit when they switched away from Mediainfo to read the file’s metadata. Hopefully an easy fix