Plex Media Server encodes DTS to AAC at much lower bitrate than it tells the client. Bug?

Server Version#: 1.32.8.7639 for Windows
Player Version#: Plex for LG 5.74.0

For the past couple years, when I’ve tried watching content encoded with DTS on my LG CX TV connected to a 5.1 receiver, I’ve noticed the audio quality sounds noticeably poor - sloshy like early '00s internet streams and bordering unlistenable.

The CX does not support DTS, so Plex is transcoding audio tracks to AAC for compatibility - but upon inspecting some of the media-#####.ts files generated by Plex Media Server that are being served up to the TV, it becomes clear why the audio sounds sloshy.

The source movie in question has this audio track:

  • DTS 48000Hz 6ch 1536kbps

This 10-second media-00001.ts file containing part of the 20th Century Fox logo was generated by Plex Media Server and has this audio track:

  • AAC 48000Hz 6ch 130kbps

Download (10 second sample): media-00000.ts - Google Drive

That’s more than a 90% drop in bitrate.

Based on the on-screen Media Information that can be toggled on the Plex WebOS app, Plex believes it is encoding at 774kbps AAC (approx 128kbps x 6 channels). But rather than encoding at 128 per channel, it seems the 6-channel bundle is being encoded at 130kbps~ total.

If I try overriding the bitrate in the Generic profile, for example by setting the LowerBound audio.bitrate value to 1920 (kbps) for the aac VideoAudioCodec, then Plex advertises to the client that it’s encoding to 1920 - however the media#####.ts files still end up with the same 130kbps~ AAC audio.

Seems like somewhere there’s a miscommunication between Plex Media Server and the audio encoder, resulting in a consistently low bitrate for the DTS > AAC encoding. I’m happy to provide whatever information I can to help debug this issue.

Here are some logs with personally identifiable information removed…

Sample line from Plex Media Server.log pertaining to transcoding the audio:

Dec 29, 2023 09:47:49.644 [3568] DEBUG - Completed: [127.0.0.1:65304] 200 PUT /video/:/transcode/session/[###]/progress/streamDetail?index=1&id=0&codec=dts&type=audio&bitrate=1536000&profile=DTS&language=eng&channels=6&layout=5.1%28side%29&sampleRate=48000&bitDepth=24&disp_default=1 (22 live) #c3 0ms 195 bytes (pipelined: 9) (range: bytes=0-)

And from Plex Transcoder Statistics.log:

<Player device="webOS 5.5.0"  model="OLED55CXPUA" platform="webOS" platformVersion="5.5.0" product="Plex for LG" " title="LG OLED55CXPUA" vendor="LG" version="5.74.0" local="1" relayed="0" secure="0" userID="1" />
<Variants>
<Variant id="a448379a-65d0-4b52-b754-09b43cd3db28" targetBitrate="22283" context="streaming" sourceVideoCodec="h264" sourceAudioCodec="dca" videoDecision="copy" audioDecision="transcode" protocol="hls" container="mpegts" videoCodec="h264" audioCodec="aac" audioChannels="6" transcodeHwRequested="0" transcodeHwFullPipeline="0">
<Media audioProfile="dts" id="34196" videoProfile="high" audioChannels="6" audioCodec="aac" bitrate="14267" container="mpegts" duration="8626773" height="1038" protocol="hls" videoCodec="h264" videoFrameRate="24p" videoResolution="1080p" width="1918" selected="1">
<Part audioProfile="dts" deepAnalysisVersion="6" id="36028" indexes="sd" requiredBandwidths="27028,24592,22022,20898,19935,19119,16780,15513" videoProfile="high" bitrate="14267" container="mpegts" duration="8626773" height="1038" protocol="hls" width="1918" decision="transcode" selected="1">
<Stream bitDepth="8" bitrate="13493" chromaLocation="left" chromaSubsampling="4:2:0" codec="h264" codedHeight="1040" codedWidth="1920" colorPrimaries="bt709" colorRange="tv" colorSpace="bt709" colorTrc="bt709" default="1" displayTitle="1080p (H.264)" frameRate="23.975999832153320" hasScalingMatrix="0" height="1038" id="109309" language="English" languageCode="eng" languageTag="en" level="41" profile="high" refFrames="4" requiredBandwidths="25456,23019,20447,19329,18366,17549,15206,13942" scanType="progressive" streamType="1" width="1918" decision="copy" location="segments-av" />
<Stream bitrate="774" bitrateMode="cbr" channels="6" codec="aac" default="1" displayTitle="English (DTS 5.1)" extendedDisplayTitle="DTS 5.1 1.5 Mbps (English)" id="109310" language="English" languageCode="eng" languageTag="en" requiredBandwidths="1509,1509,1509,1509,1509,1509,1509,1509" selected="1" streamType="2" decision="transcode" location="segments-av" />
</Part>
</Media>

Just posting a bump, and a workaround for anyone else on LG WebOS with this issue: For any films or shows encoded with DTS audio, I’m now using Jellyfin for Windows (server) with the Jellyfin WebOS app to play these files. The audio is still transcoded to 6-channel AAC, but at the intended bitrate instead of a perplexingly low one.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.