Repository navigation
[BUG] Music analysis fails on E-AC3/Atmos tracks: transcoder launched without EAE_ROOT #460
Description
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
- Run the image with a Music library containing E-AC3 (Dolby Atmos)
.m4atracks. - Enable "Analyze audio tracks for sonic features" and/or "Analyze audio tracks for loudness" in Settings -> Library.
- Wait for the scheduled task, or trigger it with
curl -X POST "http://localhost:32400/butler/MusicAnalysis?X-Plex-Token=...". - Observe the errors above in
docker logs plexandPlex 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-e5521bd8cCPU 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/plexContainer 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 libraryMetadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsIssues
Activity