It does leave the question though why all other mentioned software look at the stream data for the duration, and MusicBee looks at the header for it. Maybe that should be changed?
That verifies a related experience. I have a M4A file created by wrapping an original AAC via Mp4Box. When played in MusicBee, the sample rate shows in the Track Information section as 44.1kHz. However, in Edit/Properties the sample rate is shown as 22kHz. So one function must be getting the rate from the wrapper, and the other from the stream. MediaInfo shows 44.1kHz. Extracting the raw ADTS AAC file and playing that shows 44.1kHz sample rate in Track Information and "unknown" in Edit/Properties. So Track Information is getting the sample rate from the stream, and Edit/Properties from the header.
Which begs the question, why does the wrapper header NOT show the correct sample rate. The only clue I've come up with in this case is that MediaInfo shows this particular ADTS stream as being "Format Version 2", and during extraction Mp4Box says "Extracting MPEG-
2 AAC." Literally every other AAC extraction I've done with the same tool shows as "Extracting MPEG-
4 AAC", and the result is shown as "Format Version
4" in MediaInfo. So apparently there is something about this particular AAC ("Format version 2") that is tricking Mp4Box into using "22kHz" in the header instead of the actual stream rate.