Skip to content

EasyAudioEncoder v2001 license has expired, possible workaround discovered? #343

@MatthewStockdale

Description

@MatthewStockdale

Describe the bug
It appears that the EasyAudioEncoder version 2001 license has expired.

from worker startup today

[custom-init] No custom files found, skipping...
Starting Plex Media Server. . . (you can ignore the libusb_init error)
CLUSTERPLEX_PLEX_VERSION => '1.42.2.10156-f737b826c'
CLUSTERPLEX_PLEX_CODECS_VERSION => '46f74ab-560174306fe167a5978a79dd'
CLUSTERPLEX_PLEX_EAE_VERSION (extracted) => 'eae--42'
PLEX_ARCH => 'amd64'
EAE_VERSION => '2001'
CLUSTERPLEX_PLEX_CODEC_ARCH => linux-x86_64-standard
Codec location => /codecs/46f74ab-560174306fe167a5978a79dd-linux-x86_64-standard
Found EAE_VERSION.txt => 2001
EAE is up to date

When attempting to transcode

ffmpeg version 46f74ab-560174306fe167a5978a79dd Copyright (c) 2000-2022 the FFmpeg developers
  built with Plex clang version 11.0.1 (https://plex.tv 9b997da8e5b47bdb4a9425b3a3b290be393b4b1f)
  configuration: --disable-static --enable-shared --disable-libx264 --disable-hwaccels --disable-protocol=concat --external-decoder=h264 --enable-debug --enable-muxers --enable-libxml2 --fatal-warnings --disable-gmp --disable-avdevice --disable-bzlib --disable-sdl2 --disable-decoders --disable-devices --disable-encoders --disable-ffprobe --disable-ffplay --disable-doc --disable-iconv --disable-lzma --disable-schannel --disable-linux-perf --disable-mediacodec --enable-eae --disable-protocol='udp,udplite' --arch=x86_64 --target-os=linux --strip=true --cc=x86_64-linux-musl-clang --pkg-config=/home/runner/_work/plex-conan/plex-conan/plexconantool/plex-pkg-config --pkg-config-flags=--static --windres=llvm-windres --enable-cuda-llvm --enable-libdrm --enable-opencl --enable-cross-compile --ar=llvm-ar --nm=llvm-nm --ranlib=llvm-ranlib --extra-ldflags='-Wl,-rpath,/home/runner/_work/plex-conan/plex-conan/.conan/data/libpciaccess/0.17-6/plex/main/package/7763a87432c78a82fd36373080b064286892cea3/lib -Wl,-rpath,/home/runner/_work/plex-conan/plex-conan/.conan/data/libdrm/2.4.120-4/plex/main/package/ba4ee9fcf280d38ea7457f18301aac09908b7976/lib -Wl,-rpath,/home/runner/_work/plex-conan/plex-conan/.conan/data/intel-gmmlib/22.3.19-0/plex/main/package/d7d5d1f35ff92a8c39da6b47605055e839a42a9c/lib -Wl,-rpath,/home/runner/_work/plex-conan/plex-conan/.conan/data/libva/2.21.0-7/plex/main/package/f0f4893209b867ce448a96e25ef4d6b158311557/lib -Wl,-rpath,/home/runner/_work/plex-conan/plex-conan/.conan/data/iconv/1.16-36/plex/main/package/da4999666f4b1709dd93ae40fffdb2c6f130b23f/lib -Wl,-rpath,/home/runner/_work/plex-conan/plex-conan/.conan/data/openssl/3.1.1-2cf4e90-4/plex/main/package/121b5d655884b039b2c06c747f3d73ef7b698b66/lib -Wl,-rpath,/home/runner/_work/plex-conan/plex-conan/.conan/data/libpciaccess/0.17-6/plex/main/package/7763a87432c78a82fd36373080b064286892cea3/lib -Wl,-rpath,/home/runner/_work/plex-conan/plex-conan/.conan/data/libdrm/2.4.120-4/plex/main/package/ba4ee9fcf280d38ea7457f18301aac09908b7976/lib -Wl,-rpath,/home/runner/_work/plex-conan/plex-conan/.conan/data/intel-gmmlib/22.3.19-0/plex/main/package/d7d5d1f35ff92a8c39da6b47605055e839a42a9c/lib -Wl,-rpath,/home/runner/_work/plex-conan/plex-conan/.conan/data/libva/2.21.0-7/plex/main/package/f0f4893209b867ce448a96e25ef4d6b158311557/lib -Wl,-rpath,/home/runner/_work/plex-conan/plex-conan/.conan/data/iconv/1.16-36/plex/main/package/da4999666f4b1709dd93ae40fffdb2c6f130b23f/lib -Wl,-rpath,/home/runner/_work/plex-conan/plex-conan/.conan/data/openssl/3.1.1-2cf4e90-4/plex/main/package/121b5d655884b039b2c06c747f3d73ef7b698b66/lib -m64 -L/home/runner/_work/plex-conan/plex-conan/.conan/data/opus/1.2.1-38/plex/main/package/64edc78a49b81c2615dad7b22a9ac90cc029860a/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/libvorbis/1.3.5-42/plex/main/package/76eba14299c6c14bf4759b1da21aec07c9ca1a2f/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/dav1d/1.0.0-18/plex/main/package/4d954bcc6be6a68b775ef1b1bae9dd65e4e237ff/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/ffnvcodec/11.1.5.3-43d9170-0/plex/main/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/openssl/3.1.1-2cf4e90-4/plex/main/package/121b5d655884b039b2c06c747f3d73ef7b698b66/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/x264/161-1086f45-33/plex/main/package/64edc78a49b81c2615dad7b22a9ac90cc029860a/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/zvbi/0.2.35-64/plex/main/package/7366a567f554439fb9e7a3415c9d1c2ea2b75360/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/libass/0.17.3-4/plex/main/package/d81dbed7e8ad560c9ec55240308ceb55b203927d/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/mp3lame/3.98.4-37/plex/main/package/64edc78a49b81c2615dad7b22a9ac90cc029860a/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/intel-media-driver/24.1.5-8/plex/main/package/692c8a3a5ee1dcef32efca7f6d273cefdb94118c/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/intel-vaapi-driver/2.4.1-45/plex/main/package/72e89cd6576e82e7fa9cf563da5f492cd43a05f4/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/opencl-icd-loader/v2024.05.08-861b68b-0/plex/main/package/ce07721293871305120600790e13d0480da9bff7/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/libogg/1.3.2-38/plex/main/package/64edc78a49b81c2615dad7b22a9ac90cc029860a/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/iconv/1.16-36/plex/main/package/da4999666f4b1709dd93ae40fffdb2c6f130b23f/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/fribidi/1.0.12-6/plex/main/package/464531ac2a3f2ab2167bd10d1214603bc8116983/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/harfbuzz/4.2.1-9/plex/main/package/53415d552ac96104f622ffa8d8530937a40b4271/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/libva/2.21.0-7/plex/main/package/f0f4893209b867ce448a96e25ef4d6b158311557/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/intel-gmmlib/22.3.19-0/plex/main/package/d7d5d1f35ff92a8c39da6b47605055e839a42a9c/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/fontconfig/2.14.0-9/plex/main/package/aacc2a7710dfa87ed80d4eea45b80c93243fe456/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/libdrm/2.4.120-4/plex/main/package/ba4ee9fcf280d38ea7457f18301aac09908b7976/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/libxml2/2.9.11-e1bcffea-17/plex/main/package/33406d37abb556848190dcd6097a9849aa894baf/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/freetype2/2.12.1-30/plex/main/package/82a00e1e4cc2e8878bb79ae9b5e2235fd8280e6a/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/expat/2.6.4-0/plex/main/package/64edc78a49b81c2615dad7b22a9ac90cc029860a/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/libuuid/1.0.3-32/plex/main/package/841d526523d3550ac4d52807df94cbbedce37e2c/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/libpciaccess/0.17-6/plex/main/package/7763a87432c78a82fd36373080b064286892cea3/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/libpthread-stubs/0.4-39/plex/main/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/bzip2/1.0.6-42/plex/main/package/618bb3c469051b52e1349cf1a297263df374d15a/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/libpng/1.6.37-45/plex/main/package/33406d37abb556848190dcd6097a9849aa894baf/lib -L/home/runner/_work/plex-conan/plex-conan/.conan/data/zlib/1.2.11-36/plex/main/package/64edc78a49b81c2615dad7b22a9ac90cc029860a/lib -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -g2 -gdwarf-4 -Wl,--build-id=sha1 -flto=thin -fwhole-program-vtables -Wl,--icf=all -Wl,--threads=6 -Wl,-O2 -l:libgcompat.so.0 -Wl,-rpath,'\''XORIGIN/../lib'\'' -Wl,-rpath,'\''XORIGIN/lib'\'' -Wl,--thinlto-cache-dir=/home/runner/_work/plex-conan/plex-conan/.conan/data/ffmpeg/2.0-46f74ab83e-0/plex/main/build/d17660f7512a62e64743f73949dbd3a0155eeb35/lto_cache/' --extra-libs= --enable-decoder=png --enable-decoder=apng --enable-decoder=bmp --enable-decoder=mjpeg --enable-decoder=thp --enable-decoder=gif --enable-decoder=dirac --enable-decoder=ffv1 --enable-decoder=ffvhuff --enable-decoder=huffyuv --enable-decoder=libdav1d --enable-decoder=av1 --enable-decoder=rawvideo --enable-decoder=zero12v --enable-decoder=ayuv --enable-decoder=r210 --enable-decoder=v210 --enable-decoder=v210x --enable-decoder=v308 --enable-decoder=v408 --enable-decoder=v410 --enable-decoder=y41p --enable-decoder=yuv4 --enable-decoder=ansi --enable-decoder=alac --enable-decoder=flac --enable-decoder=vorbis --enable-decoder=opus --enable-decoder=pcm_f32be --enable-decoder=pcm_f32le --enable-decoder=pcm_f64be --enable-decoder=pcm_f64le --enable-decoder=pcm_lxf --enable-decoder=pcm_s16be --enable-decoder=pcm_s16be_planar --enable-decoder=pcm_s16le --enable-decoder=pcm_s16le_planar --enable-decoder=pcm_s24be --enable-decoder=pcm_s24le --enable-decoder=pcm_s24le_planar --enable-decoder=pcm_s32be --enable-decoder=pcm_s32le --enable-decoder=pcm_s32le_planar --enable-decoder=pcm_s8 --enable-decoder=pcm_s8_planar --enable-decoder=pcm_u16be --enable-decoder=pcm_u16le --enable-decoder=pcm_u24be --enable-decoder=pcm_u24le --enable-decoder=pcm_u32be --enable-decoder=pcm_u32le --enable-decoder=pcm_u8 --enable-decoder=pcm_alaw --enable-decoder=pcm_mulaw --enable-decoder=ass --enable-decoder=dvbsub --enable-decoder=dvdsub --enable-decoder=ccaption --enable-decoder=pgssub --enable-decoder=jacosub --enable-decoder=microdvd --enable-decoder=movtext --enable-decoder=mpl2 --enable-decoder=pjs --enable-decoder=realtext --enable-decoder=sami --enable-decoder=ssa --enable-decoder=stl --enable-decoder=subrip --enable-decoder=subviewer --enable-decoder=text --enable-decoder=vplayer --enable-decoder=webvtt --enable-decoder=xsub --enable-decoder=eac3_eae --enable-decoder=truehd_eae --enable-decoder=mlp_eae --enable-encoder=flac --enable-encoder=alac --enable-encoder=libvorbis --enable-encoder=libopus --enable-encoder=mjpeg --enable-encoder=png --enable-encoder=rawvideo --enable-encoder=wrapped_avframe --enable-encoder=ass --enable-encoder=dvbsub --enable-encoder=dvdsub --enable-encoder=movtext --enable-encoder=ssa --enable-encoder=subrip --enable-encoder=text --enable-encoder=webvtt --enable-encoder=xsub --enable-encoder=pcm_f32be --enable-encoder=pcm_f32le --enable-encoder=pcm_f64be --enable-encoder=pcm_f64le --enable-encoder=pcm_s8 --enable-encoder=pcm_s8_planar --enable-encoder=pcm_s16be --enable-encoder=pcm_s16be_planar --enable-encoder=pcm_s16le --enable-encoder=pcm_s16le_planar --enable-encoder=pcm_s24be --enable-encoder=pcm_s24le --enable-encoder=pcm_s24le_planar --enable-encoder=pcm_s32be --enable-encoder=pcm_s32le --enable-encoder=pcm_s32le_planar --enable-encoder=pcm_u8 --enable-encoder=pcm_u16be --enable-encoder=pcm_u16le --enable-encoder=pcm_u24be --enable-encoder=pcm_u24le --enable-encoder=pcm_u32be --enable-encoder=pcm_u32le --enable-encoder=h264_vaapi --enable-encoder=hevc_vaapi --enable-encoder=h264_nvenc --enable-encoder=hevc_nvenc --enable-encoder=eac3_eae --enable-hwaccel=av1_vaapi --enable-hwaccel=av1_nvdec --prefix=/home/runner/_work/plex-conan/plex-conan/.conan/data/ffmpeg/2.0-46f74ab83e-0/plex/main/build/d17660f7512a62e64743f73949dbd3a0155eeb35/transcoder-install --enable-libzvbi --enable-openssl --enable-libass --enable-libopus --enable-libvorbis --enable-libdav1d --extra-cflags='-m64 -O3 -fdata-sections -ffunction-sections -fno-omit-frame-pointer -g2 -gdwarf-4 -fcommon -flto=thin -fwhole-program-vtables -I/home/runner/_work/plex-conan/plex-conan/.conan/data/opus/1.2.1-38/plex/main/package/64edc78a49b81c2615dad7b22a9ac90cc029860a/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/libvorbis/1.3.5-42/plex/main/package/76eba14299c6c14bf4759b1da21aec07c9ca1a2f/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/dav1d/1.0.0-18/plex/main/package/4d954bcc6be6a68b775ef1b1bae9dd65e4e237ff/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/ffnvcodec/11.1.5.3-43d9170-0/plex/main/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/openssl/3.1.1-2cf4e90-4/plex/main/package/121b5d655884b039b2c06c747f3d73ef7b698b66/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/x264/161-1086f45-33/plex/main/package/64edc78a49b81c2615dad7b22a9ac90cc029860a/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/zvbi/0.2.35-64/plex/main/package/7366a567f554439fb9e7a3415c9d1c2ea2b75360/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/libass/0.17.3-4/plex/main/package/d81dbed7e8ad560c9ec55240308ceb55b203927d/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/mp3lame/3.98.4-37/plex/main/package/64edc78a49b81c2615dad7b22a9ac90cc029860a/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/intel-media-driver/24.1.5-8/plex/main/package/692c8a3a5ee1dcef32efca7f6d273cefdb94118c/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/libogg/1.3.2-38/plex/main/package/64edc78a49b81c2615dad7b22a9ac90cc029860a/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/iconv/1.16-36/plex/main/package/da4999666f4b1709dd93ae40fffdb2c6f130b23f/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/fribidi/1.0.12-6/plex/main/package/464531ac2a3f2ab2167bd10d1214603bc8116983/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/harfbuzz/4.2.1-9/plex/main/package/53415d552ac96104f622ffa8d8530937a40b4271/include/harfbuzz -I/home/runner/_work/plex-conan/plex-conan/.conan/data/libva/2.21.0-7/plex/main/package/f0f4893209b867ce448a96e25ef4d6b158311557/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/intel-gmmlib/22.3.19-0/plex/main/package/d7d5d1f35ff92a8c39da6b47605055e839a42a9c/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/opencl-headers/v2024.05.08-8275634-0/plex/main/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/fontconfig/2.14.0-9/plex/main/package/aacc2a7710dfa87ed80d4eea45b80c93243fe456/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/libdrm/2.4.120-4/plex/main/package/ba4ee9fcf280d38ea7457f18301aac09908b7976/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/libdrm/2.4.120-4/plex/main/package/ba4ee9fcf280d38ea7457f18301aac09908b7976/include/libdrm -I/home/runner/_work/plex-conan/plex-conan/.conan/data/libxml2/2.9.11-e1bcffea-17/plex/main/package/33406d37abb556848190dcd6097a9849aa894baf/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/libxml2/2.9.11-e1bcffea-17/plex/main/package/33406d37abb556848190dcd6097a9849aa894baf/include/libxml2 -I/home/runner/_work/plex-conan/plex-conan/.conan/data/freetype2/2.12.1-30/plex/main/package/82a00e1e4cc2e8878bb79ae9b5e2235fd8280e6a/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/expat/2.6.4-0/plex/main/package/64edc78a49b81c2615dad7b22a9ac90cc029860a/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/libuuid/1.0.3-32/plex/main/package/841d526523d3550ac4d52807df94cbbedce37e2c/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/libpciaccess/0.17-6/plex/main/package/7763a87432c78a82fd36373080b064286892cea3/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/bzip2/1.0.6-42/plex/main/package/618bb3c469051b52e1349cf1a297263df374d15a/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/libpng/1.6.37-45/plex/main/package/33406d37abb556848190dcd6097a9849aa894baf/include -I/home/runner/_work/plex-conan/plex-conan/.conan/data/zlib/1.2.11-36/plex/main/package/64edc78a49b81c2615dad7b22a9ac90cc029860a/include -DLIBXML_STATIC -DFRIBIDI_LIB_STATIC -DNDEBUG'
  libavutil      57. 24.102 / 57. 24.102
  libavcodec     59. 25.100 / 59. 25.100
  libavformat    59. 20.101 / 59. 20.101
  libavfilter     8. 29.100 /  8. 29.100
  libswscale      6.  6.100 /  6.  6.100
  libswresample   4.  6.100 /  4.  6.100
Rescanning for external libs: '/codecs/46f74ab-560174306fe167a5978a79dd-linux-x86_64-standard/'
Loading external lib /codecs/46f74ab-560174306fe167a5978a79dd-linux-x86_64-standard/liblibmp3lame_encoder.so
Loading external lib /codecs/46f74ab-560174306fe167a5978a79dd-linux-x86_64-standard/libmxpeg_decoder.so
Dolby, Dolby Digital, Dolby Digital Plus, Dolby TrueHD and the double D symbol are trademarks of Dolby Laboratories.
License has expired.
EAE Support - Exiting
Removing EAE PID file
EAE Support - Closing

This ultimately results in a failed transcode with a misleading error message

[truehd_eae @ 0x7f3b23a48500] EAE watchfolder is not writable: /run/plex-temp/pms-88a99144-1d4f-4f2b-8adb-1f19d3734ce6/EasyAudioEncoder/Convert to WAV (to 8ch or less)/r15zljzjambf6smogcojh9mo_1070-0-test.tmp
Stream mapping:
  Stream #0:0 (hevc) -> hwupload:default (graph 0)
  Stream #0:1 (truehd_eae) -> aresample:default (graph 1)
  Stream #0:3 (pgssub) -> scale:default (graph 0)
  hwupload:default (graph 0) -> Stream #0:0 (hevc_vaapi)
  aresample:default (graph 1) -> Stream #0:1 (aac)
Error while opening decoder for input stream #0:1 : Generic error in an external library
[AVIOContext @ 0x7f3b2b312980] Statistics: 20648109 bytes read, 5 seeks
Transcoder exit: child process exited with code 1
Completed transcode
Removing process from taskMap
Transcoder close: child process exited with code 1

but I believe this is because the library isn't creating the "Covert to WAV (to 8ch or less)" directory on load because of the expiration.

Possible Workaround

I looked into the codecs directory on the pms server deployed by the helm chart (linuxserver/plex:1.42.2.10156-f737b826c-ls282), and there is an eae-license.txt file in the EasyAudioEncoder directory alongside the binary that begins with "lifetime xxxxxxxxx xxxxx". This differs from the license file created in the workers which begins with a numeric value "1750708536 xxxxx xxxxx". I believe this is a unix epoch timestamp that translates to June 23rd 2025.

If you replace the license file in the worker with that from the pms server, the library loads correctly and transcoding works again.

While I won't put the contents of the working license file here for obvious reasons, I will note that the key appears to be identical to that from an unrelated standalone plex server I have running elsewhere. However, it's possible that this is getting created during runtime because I have a lifetime plexpass.

If there were a way to copy in that license key, or possibly accept an environment variable with the contents of the file and overwrite the version that gets downloaded, that may prevent this from happening in the future, although if there is a newer version of EAE it would be great to give the workers access to it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions