EAC3 7.1 (Dolby Digital Plus 7.1) Incorrectly Labelled as EAC3 5.1

Versions

PMS Mac Version 1.23.5.4841
Plex Web Version 4.59.2
Sonos App version 13.1.4
Sonos hardware version 1.27.1.8-1.2
TV WebOS Version 5.2.1-290910
Plex WebOS Client Version 5.20.1
Plex WebOS Platform Version 5.2.1

Setup

Plex LG WebOS App > TV > Sonos Arc via HDMI 2.1 e-ARC output (HD audio capable, set to bitstream and e-ARC passthrough)

I understand WebOS apps can’t pass out HD audio like TrueHD.

File

An MKV called “Dolby Cinema - Universe (Nature’s Fury)” from Dolby Trailers - The Digital Theater. Link to file. Site states the files are tested with MPC-HC and Plex, and they update them.

Video: MKV H.264 2160p SDR 92.5 Mbps
Audio: Dolby TrueHD 7.1 ATMOS, Dolby Digital Plus 7.1, Dolby Digital 5.1.
Plex XML shows EAC-3 track has 8 channels (7.1)

eac3to lists the EAC-3 track here as 7.1. Also warns about bitstreaming in the exe:
eac3to screenshot

tsmuxergui doesn’t recognize the TrueHD Atmos track, but the EAC-3 track is 7.1, and also contains a 640Kb/s core 5.1 track
tsMuxerGUI screenshot

mediainfo shows the EAC-3 track as “6 channels / 8 channels”. Probably the EAC-3 7.1 with the 5.1 core
mediainfo screenshot

VLC calls the EAC-3 7.1 track “A/52 B Audio (aka E-AC3) (eac3)”, and defines it as only 5.1 (3F2M/LFE). Probably only picking up the core.
VLC screenshot

ffmpeg straight up calls the EAC-3 7.1 track 5.1(side) with 640kb/s, so it’s only picking up the core. Maybe by design.
ffmpeg screenshot

Playback/Issue

I loaded it into plex to see how it would handle the already-encoded EAC-3 7.1 track with a 5.1 core. TrueHD Atmos to EAC3 7.1 transcoding is operational and plays as expected on my system. The XML has EAC-3 7.1, and Plex Web seems to be tagging it properly:
Plex Web get info screenshot

During playback, Plex Web and iOS Dash tags it properly as EAC-3 7.1. Notice it’s also direct playing:
Plex Web screenshot
Plex Dash screenshot

Oddly, Tautulli shows the EAC-3 7.1 direct playing back as TrueHD 7.1 (which probably isn’t the case, as direct play of TureHD isn’t allowed/possible in Plex or any LG WebOS apps?):
Tautulli screenshot

However, what’s actually coming out is EAC-3 5.1 (Dolby Digital 5.1), according to my sonos app, which tells me what kind of audio is being passed into it and out to me:
Sonos app live output screenshot
Sonos app live System Info screenshot

The audio cuts in and out, and never plays steadily. The TV supports all of Dolby’s current technologies (TrueHD Atmos, Dolby Vision, etc). As shown before, Plex and Tautulli say it’s direct playing EAC-3 7.1 (Dolby Digital Plus 7.1) to me. I suspect Plex is actually passing me the ac3 5.1 core for direct play, even though Plex and Tautulli say it’s 7.1. Unless Tautulli is right and somehow it’s passing me a glitchy TrueHD stream? Probably just a glitchy ac3 5.1 core, though. Strange it would be cutting in and out, as the file plays the same ac3 5.1 core from the same EAC3 7.1 track playing via USB on the built-in player on the TV.

I thought maybe it was a compatibility issue, but Plex’s TrueHD to EAC-3 7.1 transcoding works splendidly on my system, so I assume an already-encoded EAC-3 7.1 would work, as well. Still, I switched to the TrueHD track, which produced a clean EAC-3 7.1 (Dolby Digital Plus 7.1) output:
Plex Web screenshot
Tautulli screenshot
Plex Dash screenshot
Sonos app live output screenshot
Sonos app live system info screenshot

More on the “Core”

As we saw, tsMuxerGUI showed the EAC-3 7.1 track contains a 640Kbps core (probably either EAC-3 or AC3). Doing more research on the topic, Dolby technology takes advantage of two types of Dolby Digital Plus 7.1 (EAC-3 7.1) encoding. One meant for streaming (audio track with .ec3 extension), and one for Blu-Ray/UHD Blu-Ray (audio track with .eb3 extension). PDF - See “1 Atmos Files in Media Manifest”.

The 3rd audio track (AC3 5.1) in the trailer is a commentary track saying “this disc is meant to showcase dolby atmos, select a different track on the blu-ray disc”, or something along those lines. So it’s a rip from a Blu-Ray disc, and the file more than likely uses the non-streaming .eb3 Dolby Digital Plus 7.1 EAC-3 technology. Maybe Plex’s transcoder only uses some version of the “streaming” Atmos EAC-3 7.1 (.ec3, not .eb3), and can’t process the .eb3 Dolby Digital Plus 7.1 EAC-3 track in this trailer properly for playback. I suspect a .eb3 5.1 core is always passed when “streaming” (not Blu-Ray playback), while a .ec3 5.1 core plays more of a secondary role and the 7.1 track is passed when “streaming”.

Logs

Here are the logs. Hopefully I did it correctly. Not sure if WebOS Plex app sends logs to the zip that’s generated from Plex Web Manage > Troubleshooting > Download Logs. WebOS Plex app was set to debug logs on during the playback. Let me know if it doesn’t contain the info needed and I’ll try again.
Plex Media Server Logs_2021-07-24_16-27-22.zip (8.4 MB)

Further Discussion/Questions

Is Plex able to ever handle proper 7.1 playback of EAC-3 7.1 Dolby Digital Plus tracks not produced by it’s own transcoder? For instance, if one was able to encode a track with “streaming” DD+ EAC-3 7.1 (.ec3), would it playback in Plex properly? I assume so since Plex is able to transcode TrueHD to EAC-3 7.1. Unless Plex has access to Dolby’s suite, how can the average user prepare media like this before playback?

Does it’s transcoding process strip the 5.1 core out of the EAC-3 7.1 Dolby Digital Plus track so it can pass only 7.1 out instead of 5.1? Or does it force the 7.1 somehow?

Furthermore, does Plex utilize the .ec3 streaming technology, or the Blu-Ray/UHD Blu-Ray .eb3 technology, or some version of the two provided by some open or closed source library?

If it can’t be done without Dolby’s expensive decoder/encoder suite, where does Plex get the ability to transcode to EAC-3 7.1 “streaming” Atmos (if that’s the case)? I’ve seen reference to truehd_eae and eac3_eae streaming encoders/decoders (log output in this post). I’d imagine any version would have to be properly licensed to be able to decode & transcode from TrueHD for playback in Dolby Digital Plus 7.1.

If you’ve made it this far… thank you. This definitely isn’t a normal use case, but moving forward these questions will probably be needing answers as technology changes/becomes more available.

2 Likes

Did some more intensive research. Issue has evolved a bit from only Dolby Digital 5.1 playback to correct playback, and incorrect labelling in Plex.

I’ve got the encoding and Dolby Digital Plus 7.1 playback sorted. Plex, however, won’t label the pre-encoded EAC3 7.1tracks as English (EAC3 7.1) in it’s menus, etc. Only ever as English (EAC3 5.1).

I’ve managed to leverage the Plex Transcoder + EasyAudioEncoder against some local Blu-Ray rips to encode EAC3 7.1 tracks into the files. Looks like the transcoder uses “streaming” .ec3 Atmos, as evidenced by EasyAudioEncoder in the process of converting TrueHD to .wav, then to .ec3. Conversely, The trailer in my original post uses .eb3, which doesn’t playback 7.1 unless on a Blu-Ray Disc (or possibly a Shield Pro). I understand the trailer using .eb3 is probably passing me the core 5.1.

Playing back these newly encoded .ec3 EAC3 7.1 tracks in Plex produces consistent Dolby Digital Plus 7.1 output to me, according to my Sonos app, via direct play (video and audio). Just like its transcoder would produce when transcoding TrueHD. One. Two.

Plex, however, labels these tracks as EAC3 5.1 across the board. eac3to and tsmuxergui show them as EAC3 7.1 (tsmuxergui fails to show the TrueHD track). Mediainfo also shows the track correctly (notice 1024Kbps 7.1 and 573Kbps 5.1 bitrates set by EasyAudioEncoder. Both 7.1 and 5.1 Core seem to be present?). Correct titles and languages are set for the EAC3 7.1 tracks during the ffmpeg encoding process (ex: -metadata:s:1 title=EAC3 7.1), as shown in the eac3to shot, so I can set a unique “EAC3 7.1” title, but Plex doesn’t show these “Extended Display Titles”, other than in a file’s getinfo section.

In the file’s getinfo section in Plex the track’s channel field is 6 (5.1), the audio channel layout is 5.1(side), and display title is shown as English (EAC3 5.1). My manually set “EAC3 7.1 from TrueHD” title shows up.
When selecting the EAC3 7.1 audio track from settings on my TV, it shows as English (EAC3 5.1).
When playing back, Plex web dashboard shows as English (EAC3 5.1).
Plex Dash shows English (EAC3 5.1).
Interestingly, Tautulli shows TrueHD 5.1.

Does Plex not have permission to label pre-encoded EAC3 7.1 tracks as EAC3 7.1? Or is there another reason Plex refuses/doesn’t label the EAC3 7.1 tracks properly? It did label the trailer’s EAC3 7.1 track in my OP as EAC3 7.1 across the board, however. An .ec3/.eb3 quirk?

Any thoughts @FordGuy61, @trumpy81, or @anon18523487? Saw you guys addressing some EAC3 7.1 and TrueHD subjects in previous posts. Apologies for the abrupt tag.

Plex will identify EAC3 7.1 audio. Here is one in my collection.

image

Can you provide a small sample (<50 MB) of a file you have that is showing as 5.1?

@anon18523487

Here you are.

Ya I saw EAC3 7.1 labeled in the trailer in my OP, so I’m confused by what’s happening here.

EAC3 7.1 is the 2nd audio track, by the way. I have a suspicion it’s reading the 5.1 core of the EAC 7.1 track. Unless Plex’s transcoder utilizing .ec3 technology strips the core? Tsmuxergui shows the core as 0Kbps, which is strange. Mediainfo seems to show it more clearly.

1 Like

Why do you believe that there’s an .ec3/.eb3 distinction for the second track (non-TrueHD, E-AC-3 7.1) in this file?

E-AC-3 is always composed of core 5.1 audio packets, plus enhancement packets with the 7.1 (or more, including Atmos) upgrade/replacement audio channels.

E-AC-3 storage on Blu-ray Disc is interesting because the core and extension packets are stored separately. [AC-3 is mandatory on Blu-ray Disc, while E-AC-3 is not.] Using the original AC-3 as the core maintains compatibility without wasting space.

[But it’s just a storage implementation detail, not a different format. Once E-AC-3 is extracted from a Blu-ray Disc, the core and extension packets are stored together again. It isn’t “tainted” from being stored separately on the Blu-ray Disc.]

Edit: that’s incorrect! In normal E-AC-3 it is packaged differently. But also, the main 5.1 stream is E-AC-3, not AC-3. Blu-ray is indeed a bigger exception.

https://professional.dolby.com/globalassets/dolby-digital-plus/dolby-digital-plus-audio-coding-tech-paper.pdf


Do you have any “normal” media that’s E-AC-3 7.1? Or just samples?


I’m curious why the E-AC-3 streams that you’ve created aren’t showing as 7.1 in Plex. Can you share the Transcoder & EAE commands or invocation you used?

(The sample you created, and one I created using EAE, seem to have a bsid of 12. That’s an odd & undefined value.)

/following!

Plex’s transcoder is based on ffmpeg and that’s what is used to analyze media files. Specifically ffprobe. As you mentioned in your original post, ffmpeg/ffprobe detects these types of audio as 5.1. To be clear, it’s these 7.1/5.1 combined tracks. A single 7.1 track is identified properly. If ffmpeg/ffprobe ever detects these properly, then so will Plex.

If the audio is being direct played, then you should still be getting 7.1, since Plex does not alter the audio track when direct played.

I’m not clear what you get if it needs to transcode. Still waiting for an answer to that.

Also note that Plex does not yet support eARC so you won’t see any advantages over regular ARC.

While my *nix-fu may be strong, my Dolby knowledge spans probably about 2 weeks, so bear with me if I make some incorrect correlations/assumptions.

@Volts

The .ec3 and .eb3 distinction is really just that as I watch EasyAudioEncoder encode the EAC3 track, it outputs .ec3 (Enhanced AC3, Dolby Digital Plus variant used for streaming, Dolby Atmos in Dolby Digital Plus JOC or Joint Object Coding). Then we have the trailer in my OP, which I suspect uses .eb3 encoding (Dolby Digital Plus variant used for Blu-ray and UHD Blu-ray, Dolby Atmos in Dolby Digital Plus). Reference, see “1 Atmos Files in Media Manifest”. I suspect the trailer uses .eb3 because the AC3 commentary track mentions to select the Atmos tracks on the Blu-ray disc to experience Atmos fully.

What does that distinction mean here/for Plex? For me it was just that the Trailer’s EAC3 7.1 track is labelled properly in Plex, but only played back as Dolby Digital (no plus) 5.1 (even when direct playing the labelled EAC3 7.1 track it plays as Dolby Digital 5.1). On the other hand, the sample I provided isn’t labelled properly in Plex (seemingly due to ffmpeg/ffprobe), but it plays back as Dolby Digital Plus 7.1 (also direct play).

So the distinction I made isn’t only on the 2nd track (EAC3 7.1) of the sample, but between the trailer and the sample, and how I suspect both technologies are handled differently by Plex.

Here’s a section of the script with my Plex Transcoder options and arguments. Not sure if I should deliberately leave the way this is done locally with Plex Transcoder + EasyAudioEncoder vague. Maybe a team member can clarify that. Not sure why it isn’t syntax-colouring properly.:

'-c:v:0' 'hevc' \
'-c:a:0' 'truehd_eae' \
'-noaccurate_seek' \
'-analyzeduration' '20000000' \
'-probesize' '20000000' \
'-i' "$1" \
'-map' '0:v:0' \
'-map' '0:a:0' \
'-c:v:0' 'copy' \
'-c:a:0' 'copy' \
'-filter_complex' '[0:a:0] aresample=async=1:ocl='\''7.1'\'':rematrix_maxval=60.000000dB:osr=48000[0]' \
'-map' '[0]' \
'-metadata:s:a:1' 'title=EAC3 7.1 from TrueHD' \
'-metadata:s:a:1' 'language=eng' \
'-c:a:1' 'eac3_eae' \
'-b:1' '1000k' \
'-map' '0:a:1?' \
'-c:a:2' 'copy' \
'-map' '0:a:2?' \
'-c:a:3' 'copy' \
'-map' '0:a:3?' \
'-c:a:4' 'copy' \
'-map' '0:a:4?' \
'-c:a:5' 'copy' \
'-map' '0:a:5?' \
'-c:a:6' 'copy' \
'-map' '0:s?' \
'-c:s' 'copy' \
'-start_at_zero' \
'-copyts' \
'-vsync' 'cfr' \
'-avoid_negative_ts' 'disabled' \
"$output"

@anon18523487

That would make a lot of sense Re: ffmpeg/ffprobe. Plex Transcoder/ffmpeg’s info on trailer. Plex Transcoder/ffmpeg’s info on my sample.

So Plex Transcoder/ffmpeg can identify EAC3 7.1 tracks without a combined 5.1 core, if I read you correctly. The trailer’s EAC3 7.1 track is identified correctly, therefor we assume the trailer’s EAC3 7.1 track is singular and doesn’t contain a 7.1+5.1 core? tsmuxergui and mediainfo tell me it does have combined 7.1/5.1, unless I’m mistaken? (TrueHD track is unsupported in tsmuxergui). “(core 640Kbps)” in tsmuxer, “6 channels / 8 channels” in mediainfo.

Comparatively, as posted in my second longer reply, the sample reads “(core 0Kbps)” in tsmuxergui, and “1024Kb/s / 573 Kbps … 8 channels / 6 channels”. Notice separate bit rates for 8 channel vs. 6 channel, and 8 channels is listed before 6 channels, unlike in the trailer’s mediainfo.

No idea if that means anything, and I may be guessing here, but it seems the sample (.ec3-encoded streaming/JOC atmos) prioritizes the 8-channel 1024Kbps stream above the core (0Kbps?!). Whereas the trailer (probably .eb3-encoded blu-ray atmos) prioritizes the 6 channel (640Kbps in tsmuxer) over the 8 channel (1664 Kbps in tsmuxer). Oddly, those bitrates don’t show up in mediainfo for the trailer. Again, purely speculating based on the research and tests I’ve done.

Can confirm that the EAC3 7.1 track is direct played on the sample and I’m getting Dolby Digital Plus 7.1 However, the trailer also direct plays the EAC3 7.1 track, but I get Dolby Digital 5.1. The difference could possibly be in the different encoding technologies (hence the distinction between .ec3 and .eb3).

eARC would only really matter in this case if I were trying to pass TrueHD through Plex to my TV and out (eARC) to my Sonos (though LG WebOS doesn’t support HD audio). But, ARC supports Atmos over DD+, so we’re good on that front.

FYI, here’s what I get when I transcode the sample to 1080. Seems to be AAC 5.1, which my system passes as Dolby Multichannel PCM 5.1:
Plex Dash
Plex Web Dashboard
Tautulli
Sonos output1
Sonos output2

That could be your TV. Maybe it also sees the 7.1/5.1 combo and passes the 5.1. If it’s direct play, then it’s up to the device to handle the passthrough.

That fits for AAC, Plex only goes up to 5.1.

That could be your TV. Maybe it also sees the 7.1/5.1 combo and passes the 5.1. If it’s direct play, then it’s up to the device to handle the passthrough.

Right, that makes sense to me. Two layers of “this isn’t Blu-ray, pass the core only”. Or whatever the criteria is.

The mystery lies in why Plex Transcoder sees the trailer’s EAC3 7.1 track as 7.1, and not the sample I created with Plex Transcoder. I believe they both have cores (7.1/5.1 combo) (even though tsmuxer shows 0Kbps for the sample’s core).

I don’t know. That’s getting into the guts of ffmpeg which is beyond me.

Hmm, okay thanks for your help troubleshooting. I’ll keep doing some digging and testing. Nice to discuss this with people other than my wife who just stares at me like I have no head :eyes:.

perhaps relevant. Or at least, perhaps interesting to you. :slight_smile:
wubalubadubx2 comments on Sonos 13.2 software is out

That got me excited!
Sadly, it doesn’t fix my issue. Plex Dash. Sonos app. Made a post there. The sonos app technically states the audio that’s coming in is Dolby Digital 5.1, meaning it’s not taking 7.1 and stripping it down to 5.1. In he case of the trailer in my OP, it’s either Plex or the TV that is forgoing the 7.1 data and only passing through the 5.1 core.

In the case of the sample being incorrectly labelled by Plex/ffmpeg/ffprobe, I will be inquiring to the ffmpeg minds soon and will see what happens. I’ll link it here for future reference.

@anon18523487 @Volts
Ok did some small tests today comparing up-to-date FFmpeg and Plex’s Transcoder.

Looks like Plex Transcoder uses an older version of FFmpeg or FFprobe which doesn’t properly handle/identify EAC3 7.1.

I can’t seem to pinpoint which x.x source code version Plex Transcoder is using, but it outputs version “fa235d6-3858”, while the up-to-date version seems to be 4.4 (I’m using a macOS snapshot with version “N-103075-g4c694093be-tessus” compile date 2021-07-25, which I downloaded from here and is the snapshot version of the 4.4 source code). Maybe the up-to-date “g4c694093be” snapshot and Plex’s “fa235d6” is an indication of being one letter behind (F-G). Just a dumb guess.

ANYWAYS… the tests. Command output and screenshots. I’ve put several asterisks at the start of the EAC3 7.1 tracks/streams to find them easier:

FFmpeg N-103075-g4c694093be-tessus compiled 2021-07-25:

ffmpeg -i /path/to/sample/file/sample.mkv
ffmpeg version N-103075-g4c694093be-tessus  https://evermeet.cx/ffmpeg/  Copyright (c) 2000-2021 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.17)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
  libavutil      57.  2.100 / 57.  2.100
  libavcodec     59.  3.102 / 59.  3.102
  libavformat    59.  4.101 / 59.  4.101
  libavdevice    59.  0.100 / 59.  0.100
  libavfilter     8.  1.103 /  8.  1.103
  libswscale      6.  0.100 /  6.  0.100
  libswresample   4.  0.100 /  4.  0.100
  libpostproc    56.  0.100 / 56.  0.100
[matroska,webm @ 0x7fe7a1506940] Could not find codec parameters for stream 7 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
[matroska,webm @ 0x7fe7a1506940] Could not find codec parameters for stream 9 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, matroska,webm, from '/path/to/sample/file/sample.mkv':
  Metadata:
    title           : 1917
    ENCODER         : Lavf58.27.104
  Duration: 00:00:10.45, start: 0.000000, bitrate: 34546 kb/s
  Chapters:
    Chapter #0:0: start 0.000000, end 10.426000
      Metadata:
        title           : Chapter 09
  Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn (default)
    Metadata:
      BPS             : 27570428
      NUMBER_OF_FRAMES: 250
      NUMBER_OF_BYTES : 35938054
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:10.427000000
  Stream #0:1(eng): Audio: truehd, 48000 Hz, 7.1, s32 (24 bit) (default)
    Metadata:
      title           : Surround 7.1
      BPS             : 5119597
      NUMBER_OF_FRAMES: 12385
      NUMBER_OF_BYTES : 6672756
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:10.426000000
  *****Stream #0:2(eng): Audio: eac3, 48000 Hz, 7.1, fltp, 1024 kb/s (default)
    Metadata:
      title           : EAC3 7.1 from TrueHD
      ENCODER         : Lavc58.52.100 eac3_eae
      DURATION        : 00:00:10.432000000
  Stream #0:3(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
    Metadata:
      title           : Surround 5.1
      BPS             : 448000
      NUMBER_OF_FRAMES: 326
      NUMBER_OF_BYTES : 584192
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:10.446000000
  Stream #0:4(eng): Audio: aac (LC), 48000 Hz, stereo, fltp
    Metadata:
      title           : Commentary
      BPS             : 113178
      NUMBER_OF_FRAMES: 489
      NUMBER_OF_BYTES : 147585
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:10.433000000
  Stream #0:5(eng): Audio: aac (LC), 48000 Hz, stereo, fltp
    Metadata:
      title           : Commentary
      BPS             : 110146
      NUMBER_OF_FRAMES: 489
      NUMBER_OF_BYTES : 143631
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:10.433000000
  Stream #0:6(eng): Subtitle: subrip (default) (forced)
    Metadata:
      title           : forced srt
      BPS             : 0
      NUMBER_OF_FRAMES: 0
      NUMBER_OF_BYTES : 0
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:00.000000000
  Stream #0:7(eng): Subtitle: hdmv_pgs_subtitle
    Metadata:
      title           : forced
      ENCODING_TYPE   : 0
      COMPRESSION_ALGO: 0
      BPS             : 171809
      NUMBER_OF_FRAMES: 6
      NUMBER_OF_BYTES : 103000
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:07.841000000
  Stream #0:8(eng): Subtitle: hdmv_pgs_subtitle, 1920x1080
    Metadata:
      ENCODING_TYPE   : 0
      COMPRESSION_ALGO: 0
      BPS             : 0
      NUMBER_OF_FRAMES: 1
      NUMBER_OF_BYTES : 30
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:00.834000000
  Stream #0:9(ger): Subtitle: hdmv_pgs_subtitle
    Metadata:
      ENCODING_TYPE   : 0
      COMPRESSION_ALGO: 0
      BPS             : 0
      NUMBER_OF_FRAMES: 0
      NUMBER_OF_BYTES : 0
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:00.000000000
  Stream #0:10(eng): Subtitle: hdmv_pgs_subtitle, 1920x1080
    Metadata:
      ENCODING_TYPE   : 0
      COMPRESSION_ALGO: 0
      BPS             : 99842
      NUMBER_OF_FRAMES: 4
      NUMBER_OF_BYTES : 74957
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:06.340000000
At least one output file must be specified

Plex Transcoder fa235d6-3858 (removed all the configuration output):

./Plex\ Transcoder -i /path/to/sample/file/sample.mkv
ffmpeg version fa235d6-3858 Copyright (c) 2000-2019 the FFmpeg developers
  built with Plex clang version 11.0.1 (https://plex.tv e0c29d5827bc4eaaa2ceb882cbeed224b0960173)

  libavutil      56. 26.100 / 56. 26.100
  libavcodec     58. 52.100 / 58. 52.100
  libavformat    58. 27.104 / 58. 27.104
  libavfilter     7. 49.100 /  7. 49.100
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
[matroska,webm @ 0x7fc684000000] Could not find codec parameters for stream 7 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[matroska,webm @ 0x7fc684000000] Could not find codec parameters for stream 9 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Guessed Channel Layout for Input Stream #0.4 : stereo
Guessed Channel Layout for Input Stream #0.5 : stereo
Input #0, matroska,webm, from '/path/to/sample/file/sample.mkv':
  Metadata:
    title           : 1917
    ENCODER         : Lavf58.27.104
  Duration: 00:00:10.45, start: 0.000000, bitrate: 34546 kb/s
    Chapter #0:0: start 0.000000, end 10.426000
    Metadata:
      title           : Chapter 09
    Stream #0:0: Video: hevc, none(tv, bt2020nc/bt2020/smpte2084), 3840x2160, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 1k tbc (default)
    Metadata:
      BPS             : 27570428
      NUMBER_OF_FRAMES: 250
      NUMBER_OF_BYTES : 35938054
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:10.427000000
    Stream #0:1(eng): Audio: truehd, 48000 Hz, 7.1, s32 (24 bit) (default)
    Metadata:
      title           : Surround 7.1
      BPS             : 5119597
      NUMBER_OF_FRAMES: 12385
      NUMBER_OF_BYTES : 6672756
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:10.426000000
    *****Stream #0:2(eng): Audio: eac3, 48000 Hz, 5.1(side), s16p (default)
    Metadata:
      title           : EAC3 7.1 from TrueHD
      ENCODER         : Lavc58.52.100 eac3_eae
      DURATION        : 00:00:10.432000000
    Stream #0:3(eng): Audio: ac3, 48000 Hz, 5.1(side), s16p, 448 kb/s
    Metadata:
      title           : Surround 5.1
      BPS             : 448000
      NUMBER_OF_FRAMES: 326
      NUMBER_OF_BYTES : 584192
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:10.446000000
    Stream #0:4(eng): Audio: aac (LC), 48000 Hz, stereo
    Metadata:
      title           : Commentary
      BPS             : 113178
      NUMBER_OF_FRAMES: 489
      NUMBER_OF_BYTES : 147585
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:10.433000000
    Stream #0:5(eng): Audio: aac (LC), 48000 Hz, stereo
    Metadata:
      title           : Commentary
      BPS             : 110146
      NUMBER_OF_FRAMES: 489
      NUMBER_OF_BYTES : 143631
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:10.433000000
    Stream #0:6(eng): Subtitle: subrip (default) (forced)
    Metadata:
      title           : forced srt
      BPS             : 0
      NUMBER_OF_FRAMES: 0
      NUMBER_OF_BYTES : 0
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:00.000000000
    Stream #0:7(eng): Subtitle: hdmv_pgs_subtitle
    Metadata:
      title           : forced
      ENCODING_TYPE   : 0
      COMPRESSION_ALGO: 0
      BPS             : 171809
      NUMBER_OF_FRAMES: 6
      NUMBER_OF_BYTES : 103000
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:07.841000000
    Stream #0:8(eng): Subtitle: hdmv_pgs_subtitle, 1920x1080
    Metadata:
      ENCODING_TYPE   : 0
      COMPRESSION_ALGO: 0
      BPS             : 0
      NUMBER_OF_FRAMES: 1
      NUMBER_OF_BYTES : 30
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:00.834000000
    Stream #0:9(ger): Subtitle: hdmv_pgs_subtitle
    Metadata:
      ENCODING_TYPE   : 0
      COMPRESSION_ALGO: 0
      BPS             : 0
      NUMBER_OF_FRAMES: 0
      NUMBER_OF_BYTES : 0
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:00.000000000
    Stream #0:10(eng): Subtitle: hdmv_pgs_subtitle, 1920x1080
    Metadata:
      ENCODING_TYPE   : 0
      COMPRESSION_ALGO: 0
      BPS             : 99842
      NUMBER_OF_FRAMES: 4
      NUMBER_OF_BYTES : 74957
      _STATISTICS_WRITING_APP: mkvmerge v59.0.0 ('Shining Star') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2021-07-27 04:42:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:06.340000000
At least one output file must be specified

Also notice some small info differences. s16p with no bitrate (probably because the older FFmpeg version can’t analyze properly without core extraction?) in Plex Transcoder output. fltp with bitrate (1024 kb/s) in the up-to-date FFmpeg output. Additionally, the up-to-date FFmpeg lists correct colorspace and bit info (hevc Main 10, yuv420p10le), which could be great to see in Plex’s getinfo section to verify 10bit HDR remuxes.

Whether this is a build-time configuration issue, or simply an out-dated version of FFmpeg used by Plex, I’m not sure. Whatever it is, surely the up-to-date FFmpeg handles it properly while Plex Transcoder doesn’t.

In FFmpeg’s changelog I can find some reference to " - truehd_core bitstream filter" being added in version 4.2, and “- bitstream filter for extracting E-AC-3 core” in version 4.0. The latter being quite noticeable.

If ffmpeg/ffprobe ever detects these properly, then so will Plex.

Looks like FFmpeg/FFprobe does detect these properly, after all. Just had to test with current versions. I wonder if this will be updated in the future as it causes incorrect channel layout labeling in Plex’s UI?

2 Likes

Thanks for the test and the info. Plex does update the version of FFMPEG we use from time to time. We can’t be up-to-date all the time since it’s integrated into Plex and not just a dll that we drop in.

I don’t have any info to share on when the next update may be.

2 Likes

Ya I don’t expect it to be an easy process of keeping FFmpeg up-to-date.

Hopefully soon this will change, I’ll keep an eye out for it after each update.

Thanks for your communication.

Just as a little follow up, I’ve managed to convert DTS-HD MA 7.1 to EAC3 7.1, much in the same way as above (TrueHD to EAC3 7.1).

The EAC3 7.1 tracks show as EAC3 5.1 in Plex and older versions of FFmpeg, just as the TrueHD to EAC3 7.1 tracks do above.

For anyone interested in TrueHD 7.1/DTS-HD MA 7.1 to EAC3 7.1, I wrote an interactive UNIX (macOS) bash script that manages various audio conversions in MKVs using FFmpeg/FFprobe and EasyAudioEncoder. It requires a little resource gathering from your Plex installation on your machine to the script’s folder, but once setup its fairly powerful and straight forward. Script and instructions are macOS only, though with some tweaking of the script, and a little exploration of your Plex installation, you could probably configure it on Linux.

In terms of development, this suits my needs, so I won’t be making any changes. Feel free to fork and make it your own if you require something different/more/less.

Also, if this ain’t kosher, MODs let me know. As I see it, the tools are already at our disposal when installed on our system.

More on-topic, the latest update did update the Plex Transcoder (now version be22e26-3961), but the EAC3 7.1 tracks created by itself are still recognized as 5.1(side) as in the above screenshots.

2 Likes

Recent PMS update updated Plex Transcoder to be22e26-3998. Still recognizing EAC3 7.1 created by Plex Transcoder as 5.1(side)

1 Like

It’s not just a problem with files made by EAC/Plex. I have the same issue with E-AC3 made using the Dolby encoder however I don’t have one that lets me choose which E-AC3 profile to create so I can’t pinpoint the issue. Happy to investigate my file if someone tells me what to look for but if the newest ffmpeg fixes it then I guess there’s no need.
I must have re-encoded the audio 3 times trying to figure out why it was only giving me “5.1”.