Skip to content

[BUG] Music analysis fails on E-AC3/Atmos tracks: transcoder launched without EAE_ROOT #460

Open

Description

@macmenot

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Plex Media Server's scheduled music analysis (sonic analysis and loudness analysis) fails for every track whose audio is Dolby Digital Plus / Atmos (E-AC3). Each run spams docker logs plex with a full ffmpeg banner plus:

[eac3_eae @ 0x...] No EAE watchfolder set!
[aist#0:0/eac3 @ 0x...] Error while opening decoder: Generic error in an external library
Error opening output files: Generic error in an external library

and the server log shows:

INFO  - [Butler/MusicAnalysis] CodecManager: starting EAE at "/run/plex-temp/pms-<uuid>/EasyAudioEncoder"
ERROR - [Butler/MusicAnalysis] Error decoding analysis input files (exit code: 187)

The tracks are never analysed, so the failure repeats on every maintenance run. Playback transcoding of the same files works fine.

Root cause is upstream in Plex Media Server, not this image: the MusicAnalysis job starts EasyAudioEncoder (EAE) but launches Plex Transcoder without the EAE_ROOT environment variable, so the eac3_eae decoder has no watch folder. Playback transcodes do get EAE_ROOT set, which is why only analysis is affected.

Expected Behavior

Music analysis completes for E-AC3 / Atmos tracks like it does for every other codec.

Steps To Reproduce

  1. Run the image with a Music library containing E-AC3 (Dolby Atmos) .m4a tracks.
  2. Enable "Analyze audio tracks for sonic features" and/or "Analyze audio tracks for loudness" in Settings -> Library.
  3. Wait for the scheduled task, or trigger it with curl -X POST "http://localhost:32400/butler/MusicAnalysis?X-Plex-Token=...".
  4. Observe the errors above in docker logs plex and Plex Media Server.log.

Workaround (verified working): the analysis transcoder inherits the server's environment, so a static EAE_ROOT pointing at a persistently running EAE makes the analysis succeed. I run EAE from a custom init script and set the variable on the container:

# /path/to/plex-init/10-eae.sh, mounted at /custom-cont-init.d
#!/bin/bash
EAE_ROOT="${EAE_ROOT:-/run/plex-temp/eae}"
CODECS="/config/Library/Application Support/Plex Media Server/Codecs"
BIN="$(ls -t "${CODECS}"/EasyAudioEncoder-*/EasyAudioEncoder/EasyAudioEncoder 2>/dev/null | head -1)"
[[ -z "${BIN}" ]] && exit 0
mkdir -p "${EAE_ROOT}" && chown abc:abc "${EAE_ROOT}"
cd "${EAE_ROOT}" || exit 0
s6-setuidgid abc setsid "${BIN}" >/dev/null 2>&1 < /dev/null &
-e EAE_ROOT=/run/plex-temp/eae
-v /path/to/plex-init:/custom-cont-init.d:ro

After this, the transcoder logs Stream #0:0 -> #0:0 (eac3 (eac3_eae) -> pcm_s16le (native)) and all Atmos tracks get sonic and loudness data.

I appreciate this is a Plex bug rather than an image bug. I'm raising it here so the workaround is discoverable, and in case you'd consider either documenting it or offering an opt-in (for example, start EAE when EAE_ROOT is set). Happy for this to be closed as upstream if not.

Environment

- OS: Debian GNU/Linux (kernel 7.0.0-22-generic), x86-64
- How docker service was installed: distro's package manager
- Image: ghcr.io/linuxserver/plex 1.43.4.10903-e5521bd8c

CPU architecture

x86-64

Docker creation

docker run -d \
  --name=plex \
  --net=host \
  -e PUID=1000 \
  -e PGID=1000 \
  -e VERSION=docker \
  --restart unless-stopped \
  ghcr.io/linuxserver/plex

Container logs

Side data:
      audio service type: main
  Stream #0:1[0x0]: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 389x599 [SAR 1:1 DAR 389:599], 90k tbr, 90k tbn (attached pic)
[eac3_eae @ 0x77dd5d79bc00] No EAE watchfolder set!
[aist#0:0/eac3 @ 0x77dd5d7c0b00] Error while opening decoder: Generic error in an external library
[aost#0:0/pcm_s16le @ 0x77dd5d773040] Error initializing a simple filtergraph
Error opening output file track-0000.wav.
Error opening output files: Generic error in an external library
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions