pabloromeo / clusterplex

ClusterPlex is an extended version of Plex, which supports distributed Workers across a cluster to handle transcoding requests.
MIT License
472 stars 36 forks source link

EAC3 Audio - License has expired #289

Closed llajas closed 7 months ago

llajas commented 7 months ago

Describe the bug Hi! Thanks for the work on this project. Recently it was brought to my attention that multiple streams were failing on transcode. I was able to test and reproduce the issue and noticed that it only occurred on transcoded media with EAC3 encoded Dolby audio. Upon closer look at the worker logs, I noticed a message pointing towards a license expiration:

Received task request
Setting hwaccel to nvdec
EAE_ROOT => "/tmp/pms-ab2ecbc6-a424-4a77-8bea-240b21c404d6/EasyAudioEncoder"
EAE Support - Creating EAE_ROOT destination => /tmp/pms-ab2ecbc6-a424-4a77-8bea-240b21c404d6/EasyAudioEncoder
EAE Support - Spawning EasyAudioEncoder from "/codecs/ad47460-4673-linux-x86_64-standard/EasyAudioEncoder/EasyAudioEncoder/EasyAudioEncoder", cwd => /tmp/pms-ab2ecbc6-a424-4a77-8bea-240b21c404d6/EasyAudioEncoder
EAE Support - Writing PID file
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 the following error:

eac3_eae @ 0x7fbf26614740] EAE watchfolder is not writable: /tmp/pms-da07d764-40a5-4242-a83a-a3658b771a9c/EasyAudioEncoder/Convert to WAV (to 8ch or less)/72786E24-0CFF-44A8-94C8-A27506ECF163_13859-0-test.tmp
Stream mapping:
  Stream #0:0 (h264) -> scale:default (graph 0)
  Stream #0:1 (eac3_eae) -> aresample:default (graph 1)
  format:default (graph 0) -> Stream #0:0 (libx264)
  aresample:default (graph 1) -> Stream #0:1 (aac)
  Stream #0:2 -> #1:0 (subrip (native) -> webvtt (native))
Error while opening decoder for input stream #0:1 : Generic error in an external library
[AVIOContext @ 0x7fbf2d1ba1c0] Statistics: 207904 bytes read, 2 seeks
Transcoder exit: child process exited with code 1
Completed transcode
Removing process from taskMap
Transcoder close: child process exited with code 1

After digging through the repo, I saw that there was a prior issue which is the same as what is described here - 'https://github.com/pabloromeo/clusterplex/issues/244'.

While I understand the bash scripting here at play, I unfortunately don't know where to obtain the latest version of the EAE to submit a pull request to update the hardcoded value for testing.

To Reproduce Steps to reproduce the behavior:

  1. Attempt to play any media with Dolby EAC3 audio encoding
  2. Player receives an error when attempting to transcode (Direct play/stream works fine, as expected).

Expected behavior Media plays and dispatches the transcode job to a worker pod with the applicable and up-to-date codec.

Screenshots N/A

Desktop (please complete the following information):

Additional context As mentioned, this seems to be a duplicate of 'https://github.com/pabloromeo/clusterplex/issues/244'. I'm more than happy to submit a PR if there is a known source for the latest EAE codec release (Although I'm sure given the bash script that there have been prior attempts at automating this šŸ™‚ ). I don't think it matters, but my deployment is through ArgoCD/Helm and is in REMOTE only mode to dispatch the jobs to worker nodes equipped w/ a Nvidia GPU. Let me know if any other details are required here for debugging. Happy to provide what I have.

pabloromeo commented 7 months ago

Good catch! I'll try to update to a more recent version ASAP. Unfortunately no, there is no official source that can be tracked, so it's a bit of trial and error and seeing which version gets installed by a standalone Plex install at the moment.

pabloromeo commented 7 months ago

Try the latest version: https://github.com/pabloromeo/clusterplex/releases/tag/v1.4.10

EAE has been updated to version 2001.

llajas commented 7 months ago

@pabloromeo works like a charm after updating. Thank you! šŸ»