From 2f4b94f757b9391a3d9dabf114acec42b14765f9 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Thu, 1 Sep 2022 21:00:11 -0300 Subject: [PATCH 01/25] Trying out logic to fetch EAE --- worker/app/start.sh | 24 +++++++++++++++++++ .../etc/cont-init.d/92-install-dependencies | 4 ++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/worker/app/start.sh b/worker/app/start.sh index a579557..9fbc6c8 100644 --- a/worker/app/start.sh +++ b/worker/app/start.sh @@ -37,6 +37,30 @@ echo "Codec location => ${CODEC_PATH}" mkdir -p ${CODEC_PATH} cd ${CODEC_PATH} +if [ "$EXP_EAE_SUPPORT" == "true" ] +then + EAE_VERSION=1785 # fixed for now + echo "Downloading EasyAudioEncoder version => ${EAE_VERSION}" + UUID=$(cat /proc/sys/kernel/random/uuid) + # download eae definition to eae.xml + curl -s -o eae.xml "https://plex.tv/api/codecs/easyaudioencoder?build=${CLUSTERPLEX_PLEX_CODEC_ARCH}&deviceId=${UUID}&oldestPreviousVersion=${CLUSTERPLEX_PLEX_VERSION}&version=${EAE_VERSION}" + + # extract codec url + EAE_CODEC_URL=$(grep -Pio 'Codec url="\K[^"]*' eae.xml) + echo "EAE_CODEC_URL => ${EAE_CODEC_URL}" + echo "Downloading EasyAudioEncoder" + curl -s -o "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" "${EAE_CODEC_URL}" + echo "Decompressing EasyAudioEncoder" + unzip "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" -d "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}" + # extract license key + echo "Extracting License Key" + EAE_LICENSE_KEY=$(grep -Po 'license="([A-Za-z0-9]{10}\s\K[A-Za-z0-9]{60}\s[A-Za-z0-9]{64})' eae.xml) + EAE_LICENSE_CONTENT="lifetime ${EAE_LICENSE_KEY}" + EAE_LICENSE_PATH="/codecs/EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}/EasyAudioEncoder/eae-license.txt" + echo "License Path output => ${EAE_LICENSE_PATH}" + echo $EAE_LICENSE_CONTENT >> $EAE_LICENSE_PATH +fi + #original list: libhevc_decoder libh264_decoder libdca_decoder libac3_decoder libmp3_decoder libaac_decoder libaac_encoder libmpeg4_decoder libmpeg2video_decoder liblibmp3lame_encoder liblibx264_encoder; do cat /app/codecs.txt | while read line do diff --git a/worker/docker-mod/root/etc/cont-init.d/92-install-dependencies b/worker/docker-mod/root/etc/cont-init.d/92-install-dependencies index c076703..ac0ea50 100644 --- a/worker/docker-mod/root/etc/cont-init.d/92-install-dependencies +++ b/worker/docker-mod/root/etc/cont-init.d/92-install-dependencies @@ -7,8 +7,8 @@ else echo "**** install runtime packages ****" echo "**** apt-get update ****" apt-get update - echo "**** install binutils, libatomic1, file ****" - apt-get install -y binutils libatomic1 file + echo "**** install binutils, libatomic1, file, unzip ****" + apt-get install -y binutils libatomic1 file unzip echo "**** install 'n' ****" curl -L https://raw.githubusercontent.com/tj/n/master/bin/n -o n echo "**** install nodejs ****" From 79ae2ef7379958164975f11b40b6c393462fb5f1 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Thu, 1 Sep 2022 21:10:59 -0300 Subject: [PATCH 02/25] fixing license path --- worker/app/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worker/app/start.sh b/worker/app/start.sh index 9fbc6c8..ddb36d5 100644 --- a/worker/app/start.sh +++ b/worker/app/start.sh @@ -56,7 +56,7 @@ then echo "Extracting License Key" EAE_LICENSE_KEY=$(grep -Po 'license="([A-Za-z0-9]{10}\s\K[A-Za-z0-9]{60}\s[A-Za-z0-9]{64})' eae.xml) EAE_LICENSE_CONTENT="lifetime ${EAE_LICENSE_KEY}" - EAE_LICENSE_PATH="/codecs/EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}/EasyAudioEncoder/eae-license.txt" + EAE_LICENSE_PATH="${CODEC_PATH}/EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}/EasyAudioEncoder/eae-license.txt" echo "License Path output => ${EAE_LICENSE_PATH}" echo $EAE_LICENSE_CONTENT >> $EAE_LICENSE_PATH fi From 40ff6d3c784b1fee9141e6d7dd653d9af2e4bc0e Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Thu, 1 Sep 2022 21:20:19 -0300 Subject: [PATCH 03/25] Update start.sh --- worker/app/start.sh | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/worker/app/start.sh b/worker/app/start.sh index ddb36d5..90f4d9e 100644 --- a/worker/app/start.sh +++ b/worker/app/start.sh @@ -40,25 +40,31 @@ cd ${CODEC_PATH} if [ "$EXP_EAE_SUPPORT" == "true" ] then EAE_VERSION=1785 # fixed for now - echo "Downloading EasyAudioEncoder version => ${EAE_VERSION}" - UUID=$(cat /proc/sys/kernel/random/uuid) - # download eae definition to eae.xml - curl -s -o eae.xml "https://plex.tv/api/codecs/easyaudioencoder?build=${CLUSTERPLEX_PLEX_CODEC_ARCH}&deviceId=${UUID}&oldestPreviousVersion=${CLUSTERPLEX_PLEX_VERSION}&version=${EAE_VERSION}" - # extract codec url - EAE_CODEC_URL=$(grep -Pio 'Codec url="\K[^"]*' eae.xml) - echo "EAE_CODEC_URL => ${EAE_CODEC_URL}" - echo "Downloading EasyAudioEncoder" - curl -s -o "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" "${EAE_CODEC_URL}" - echo "Decompressing EasyAudioEncoder" - unzip "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" -d "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}" - # extract license key - echo "Extracting License Key" - EAE_LICENSE_KEY=$(grep -Po 'license="([A-Za-z0-9]{10}\s\K[A-Za-z0-9]{60}\s[A-Za-z0-9]{64})' eae.xml) - EAE_LICENSE_CONTENT="lifetime ${EAE_LICENSE_KEY}" - EAE_LICENSE_PATH="${CODEC_PATH}/EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}/EasyAudioEncoder/eae-license.txt" - echo "License Path output => ${EAE_LICENSE_PATH}" - echo $EAE_LICENSE_CONTENT >> $EAE_LICENSE_PATH + if [ -d "${CODEC_PATH}/EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}" ] + then + echo "EasyAudioEncoder already present" + else + echo "Downloading EasyAudioEncoder version => ${EAE_VERSION}" + UUID=$(cat /proc/sys/kernel/random/uuid) + # download eae definition to eae.xml + curl -s -o eae.xml "https://plex.tv/api/codecs/easyaudioencoder?build=${CLUSTERPLEX_PLEX_CODEC_ARCH}&deviceId=${UUID}&oldestPreviousVersion=${CLUSTERPLEX_PLEX_VERSION}&version=${EAE_VERSION}" + + # extract codec url + EAE_CODEC_URL=$(grep -Pio 'Codec url="\K[^"]*' eae.xml) + echo "EAE_CODEC_URL => ${EAE_CODEC_URL}" + echo "Downloading EasyAudioEncoder" + curl -s -o "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" "${EAE_CODEC_URL}" + echo "Decompressing EasyAudioEncoder" + unzip "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" -d "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}" + # extract license key + echo "Extracting License Key" + EAE_LICENSE_KEY=$(grep -Po 'license="([A-Za-z0-9]{10}\s\K[A-Za-z0-9]{60}\s[A-Za-z0-9]{64})' eae.xml) + EAE_LICENSE_CONTENT="lifetime ${EAE_LICENSE_KEY}" + EAE_LICENSE_PATH="${CODEC_PATH}/EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}/EasyAudioEncoder/eae-license.txt" + echo "License Path output => ${EAE_LICENSE_PATH}" + echo $EAE_LICENSE_CONTENT >> $EAE_LICENSE_PATH + fi fi #original list: libhevc_decoder libh264_decoder libdca_decoder libac3_decoder libmp3_decoder libaac_decoder libaac_encoder libmpeg4_decoder libmpeg2video_decoder liblibmp3lame_encoder liblibx264_encoder; do From a3ea7148c4626feab2221765c48e7978a301fcd4 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Thu, 1 Sep 2022 21:22:32 -0300 Subject: [PATCH 04/25] Update start.sh --- worker/app/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worker/app/start.sh b/worker/app/start.sh index 90f4d9e..349201d 100644 --- a/worker/app/start.sh +++ b/worker/app/start.sh @@ -56,7 +56,7 @@ then echo "Downloading EasyAudioEncoder" curl -s -o "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" "${EAE_CODEC_URL}" echo "Decompressing EasyAudioEncoder" - unzip "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" -d "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}" + unzip -o "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" -d "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}" # extract license key echo "Extracting License Key" EAE_LICENSE_KEY=$(grep -Po 'license="([A-Za-z0-9]{10}\s\K[A-Za-z0-9]{60}\s[A-Za-z0-9]{64})' eae.xml) From 46e6427a481bae5fe4236a627d2a2af16cbb9575 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Thu, 1 Sep 2022 21:28:21 -0300 Subject: [PATCH 05/25] simplifying EAE path --- worker/app/start.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/worker/app/start.sh b/worker/app/start.sh index 349201d..0c38823 100644 --- a/worker/app/start.sh +++ b/worker/app/start.sh @@ -41,7 +41,7 @@ if [ "$EXP_EAE_SUPPORT" == "true" ] then EAE_VERSION=1785 # fixed for now - if [ -d "${CODEC_PATH}/EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}" ] + if [ -d "${CODEC_PATH}/EasyAudioEncoder" ] then echo "EasyAudioEncoder already present" else @@ -56,12 +56,12 @@ then echo "Downloading EasyAudioEncoder" curl -s -o "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" "${EAE_CODEC_URL}" echo "Decompressing EasyAudioEncoder" - unzip -o "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" -d "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}" + unzip -o "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" -d "EasyAudioEncoder" # extract license key echo "Extracting License Key" EAE_LICENSE_KEY=$(grep -Po 'license="([A-Za-z0-9]{10}\s\K[A-Za-z0-9]{60}\s[A-Za-z0-9]{64})' eae.xml) EAE_LICENSE_CONTENT="lifetime ${EAE_LICENSE_KEY}" - EAE_LICENSE_PATH="${CODEC_PATH}/EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}/EasyAudioEncoder/eae-license.txt" + EAE_LICENSE_PATH="${CODEC_PATH}/EasyAudioEncoder/EasyAudioEncoder/eae-license.txt" echo "License Path output => ${EAE_LICENSE_PATH}" echo $EAE_LICENSE_CONTENT >> $EAE_LICENSE_PATH fi From 0e4f80adcba995a6fef7c4635569971e6035c6a4 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Thu, 1 Sep 2022 22:06:52 -0300 Subject: [PATCH 06/25] Update start.sh --- worker/app/start.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/worker/app/start.sh b/worker/app/start.sh index 0c38823..1c37e68 100644 --- a/worker/app/start.sh +++ b/worker/app/start.sh @@ -41,7 +41,7 @@ if [ "$EXP_EAE_SUPPORT" == "true" ] then EAE_VERSION=1785 # fixed for now - if [ -d "${CODEC_PATH}/EasyAudioEncoder" ] + if [ -d "${CODEC_PATH}/EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}" ] then echo "EasyAudioEncoder already present" else @@ -56,12 +56,12 @@ then echo "Downloading EasyAudioEncoder" curl -s -o "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" "${EAE_CODEC_URL}" echo "Decompressing EasyAudioEncoder" - unzip -o "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" -d "EasyAudioEncoder" + unzip -o "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" -d "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}" # extract license key echo "Extracting License Key" - EAE_LICENSE_KEY=$(grep -Po 'license="([A-Za-z0-9]{10}\s\K[A-Za-z0-9]{60}\s[A-Za-z0-9]{64})' eae.xml) - EAE_LICENSE_CONTENT="lifetime ${EAE_LICENSE_KEY}" - EAE_LICENSE_PATH="${CODEC_PATH}/EasyAudioEncoder/EasyAudioEncoder/eae-license.txt" + EAE_LICENSE_KEY=$(grep -Po 'license="\K([A-Za-z0-9]{10}\s[A-Za-z0-9]{60}\s[A-Za-z0-9]{64})' eae.xml) + EAE_LICENSE_CONTENT="${EAE_LICENSE_KEY}" + EAE_LICENSE_PATH="${CODEC_PATH}/EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}/EasyAudioEncoder/eae-license.txt" echo "License Path output => ${EAE_LICENSE_PATH}" echo $EAE_LICENSE_CONTENT >> $EAE_LICENSE_PATH fi From f4adc2b78addc31ea37d531a5728746dee1f5a30 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Thu, 1 Sep 2022 22:19:03 -0300 Subject: [PATCH 07/25] Update start.sh --- worker/app/start.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/worker/app/start.sh b/worker/app/start.sh index 1c37e68..16bd999 100644 --- a/worker/app/start.sh +++ b/worker/app/start.sh @@ -41,7 +41,7 @@ if [ "$EXP_EAE_SUPPORT" == "true" ] then EAE_VERSION=1785 # fixed for now - if [ -d "${CODEC_PATH}/EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}" ] + if [ -d "${CODEC_PATH}/EasyAudioEncoder" ] then echo "EasyAudioEncoder already present" else @@ -56,12 +56,12 @@ then echo "Downloading EasyAudioEncoder" curl -s -o "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" "${EAE_CODEC_URL}" echo "Decompressing EasyAudioEncoder" - unzip -o "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" -d "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}" + unzip -o "EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}.zip" -d "EasyAudioEncoder" # extract license key echo "Extracting License Key" EAE_LICENSE_KEY=$(grep -Po 'license="\K([A-Za-z0-9]{10}\s[A-Za-z0-9]{60}\s[A-Za-z0-9]{64})' eae.xml) EAE_LICENSE_CONTENT="${EAE_LICENSE_KEY}" - EAE_LICENSE_PATH="${CODEC_PATH}/EasyAudioEncoder-${EAE_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}/EasyAudioEncoder/eae-license.txt" + EAE_LICENSE_PATH="${CODEC_PATH}/EasyAudioEncoder/EasyAudioEncoder/eae-license.txt" echo "License Path output => ${EAE_LICENSE_PATH}" echo $EAE_LICENSE_CONTENT >> $EAE_LICENSE_PATH fi From 4b8afe13d8b011ad0c1c7e55a1b9cd3938cfe2de Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Fri, 2 Sep 2022 00:38:36 -0300 Subject: [PATCH 08/25] Initial implementation of EAE on worker --- worker/app/start.sh | 3 ++- worker/app/worker.js | 28 ++++++++++++++++++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/worker/app/start.sh b/worker/app/start.sh index 16bd999..f3aca77 100644 --- a/worker/app/start.sh +++ b/worker/app/start.sh @@ -79,8 +79,9 @@ do fi done -export FFMPEG_EXTERNAL_LIBS="/codecs/${CLUSTERPLEX_PLEX_CODECS_VERSION}-${CLUSTERPLEX_PLEX_CODEC_ARCH}/" +export FFMPEG_EXTERNAL_LIBS="${CODEC_PATH}/" export PLEX_MEDIA_SERVER_INFO_MODEL="${INTERNAL_PLEX_MEDIA_SERVER_INFO_MODEL}" +export EAE_EXECUTABLE="${CODEC_PATH}/EasyAudioEncoder/EasyAudioEncoder/EasyAudioEncoder" cd /app diff --git a/worker/app/worker.js b/worker/app/worker.js index 6618117..60d96ae 100644 --- a/worker/app/worker.js +++ b/worker/app/worker.js @@ -4,6 +4,8 @@ const STAT_CPU_OPS_DURATION = process.env.STAT_CPU_OPS_DURATION || 1000 const ORCHESTRATOR_URL = process.env.ORCHESTRATOR_URL || 'http://localhost:3500' const TRANSCODER_PATH = process.env.TRANSCODER_PATH || '/usr/lib/plexmediaserver/' const TRANSCODER_NAME = process.env.TRANSCODER_NAME || 'Plex Transcoder' +const EXP_EAE_SUPPORT = process.env.EXP_EAE_SUPPORT || "false" +const EXP_EAE_EXECUTABLE = process.env.EXP_EAE_EXECUTABLE || "" // hwaccel decoder: https://trac.ffmpeg.org/wiki/HWAccelIntro const FFMPEG_HWACCEL = process.env.FFMPEG_HWACCEL || false @@ -11,6 +13,7 @@ var app = require('express')(); var server = require('http').createServer(app); var socket = require('socket.io-client')(ORCHESTRATOR_URL); var cpuStat = require('cpu-stat'); +var fs = require('fs'); const { spawn, exec } = require('child_process'); const { v4: uuid } = require('uuid'); const { fib, dist } = require('cpu-benchmark'); @@ -78,7 +81,7 @@ socket.on('worker.task.request', taskRequest => { var processedEnvironmentVariables = processEnv(taskRequest.payload.env) - var child + var child, childEAE if (taskRequest.payload.args[0] === 'testpayload') { console.log(`args => ${JSON.stringify(taskRequest.payload.args)}`) console.log(`env => ${JSON.stringify(processedEnvironmentVariables)}`) @@ -95,13 +98,27 @@ socket.on('worker.task.request', taskRequest => { } } + if (EXP_EAE_SUPPORT == "true") { + if (!fs.existsSync(processedEnvironmentVariables.EAE_ROOT)){ + console.log(`Experimental EAE Support - Creating EAE_ROOT destination`) + fs.mkdirSync(processedEnvironmentVariables.EAE_ROOT, { recursive: true }); + } + console.log(`Experimental EAE Support - Spawning EasyAudioEncoder at ${EXP_EAE_EXECUTABLE}, cwd => ${processedEnvironmentVariables.EAE_ROOT}`) + childEAE = spawn(EXP_EAE_EXECUTABLE, {}, { + cwd: processedEnvironmentVariables.EAE_ROOT, + env: processedEnvironmentVariables + }); + } else { + childEAE = null + } + child = spawn(TRANSCODER_PATH + TRANSCODER_NAME, taskRequest.payload.args, { cwd: taskRequest.payload.cwd, env: processedEnvironmentVariables }); } - taskMap.set(taskRequest.taskId, child) + taskMap.set(taskRequest.taskId, { transcodeProcess: child, eaeProcess: childEAE }) child.stdout.pipe(process.stdout); child.stderr.pipe(process.stderr); @@ -140,8 +157,11 @@ socket.on('worker.task.request', taskRequest => { socket.on('worker.task.kill', data => { let taskEntry = taskMap.get(data.taskId) if (taskEntry) { - console.log(`Killing child process for task ${data.taskId}`) - taskEntry.kill() + console.log(`Killing child processes for task ${data.taskId}`) + taskEntry.transcodeProcess.kill() + if (taskEntry.eaeProcess != null) { + taskEntry.eaeProcess.kill() + } console.log('Removing process from taskMap') taskMap.delete(data.taskId) } From 5f0cdcb03145529906c90a7ebadcdf36d460f04b Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Fri, 2 Sep 2022 00:48:29 -0300 Subject: [PATCH 09/25] Small fix related to EXP_EAE_EXECUTABLE --- worker/app/start.sh | 2 +- worker/app/worker.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/worker/app/start.sh b/worker/app/start.sh index f3aca77..1b0d081 100644 --- a/worker/app/start.sh +++ b/worker/app/start.sh @@ -81,7 +81,7 @@ done export FFMPEG_EXTERNAL_LIBS="${CODEC_PATH}/" export PLEX_MEDIA_SERVER_INFO_MODEL="${INTERNAL_PLEX_MEDIA_SERVER_INFO_MODEL}" -export EAE_EXECUTABLE="${CODEC_PATH}/EasyAudioEncoder/EasyAudioEncoder/EasyAudioEncoder" +export EXP_EAE_EXECUTABLE="${CODEC_PATH}/EasyAudioEncoder/EasyAudioEncoder/EasyAudioEncoder" cd /app diff --git a/worker/app/worker.js b/worker/app/worker.js index 60d96ae..955b38a 100644 --- a/worker/app/worker.js +++ b/worker/app/worker.js @@ -103,7 +103,7 @@ socket.on('worker.task.request', taskRequest => { console.log(`Experimental EAE Support - Creating EAE_ROOT destination`) fs.mkdirSync(processedEnvironmentVariables.EAE_ROOT, { recursive: true }); } - console.log(`Experimental EAE Support - Spawning EasyAudioEncoder at ${EXP_EAE_EXECUTABLE}, cwd => ${processedEnvironmentVariables.EAE_ROOT}`) + console.log(`Experimental EAE Support - Spawning EasyAudioEncoder from "${EXP_EAE_EXECUTABLE}", cwd => ${processedEnvironmentVariables.EAE_ROOT}`) childEAE = spawn(EXP_EAE_EXECUTABLE, {}, { cwd: processedEnvironmentVariables.EAE_ROOT, env: processedEnvironmentVariables From c67613638bfc19155b5f298050625a7ea81e3ebd Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Fri, 2 Sep 2022 00:58:30 -0300 Subject: [PATCH 10/25] adding EAE logging and error handling --- worker/app/worker.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/worker/app/worker.js b/worker/app/worker.js index 955b38a..52328b4 100644 --- a/worker/app/worker.js +++ b/worker/app/worker.js @@ -108,6 +108,12 @@ socket.on('worker.task.request', taskRequest => { cwd: processedEnvironmentVariables.EAE_ROOT, env: processedEnvironmentVariables }); + childEAE.stdout.pipe(process.stdout); + childEAE.stderr.pipe(process.stderr); + childEAE.on('error', (err) => { + console.error('EAE failed:') + console.error(err) + }) } else { childEAE = null } From 26febd5df712d6928b994ac44720490a4e67bbda Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Fri, 2 Sep 2022 01:18:25 -0300 Subject: [PATCH 11/25] Update worker.js --- worker/app/worker.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/worker/app/worker.js b/worker/app/worker.js index 52328b4..93ed533 100644 --- a/worker/app/worker.js +++ b/worker/app/worker.js @@ -103,6 +103,7 @@ socket.on('worker.task.request', taskRequest => { console.log(`Experimental EAE Support - Creating EAE_ROOT destination`) fs.mkdirSync(processedEnvironmentVariables.EAE_ROOT, { recursive: true }); } + /* console.log(`Experimental EAE Support - Spawning EasyAudioEncoder from "${EXP_EAE_EXECUTABLE}", cwd => ${processedEnvironmentVariables.EAE_ROOT}`) childEAE = spawn(EXP_EAE_EXECUTABLE, {}, { cwd: processedEnvironmentVariables.EAE_ROOT, @@ -114,6 +115,7 @@ socket.on('worker.task.request', taskRequest => { console.error('EAE failed:') console.error(err) }) + */ } else { childEAE = null } From 0b39acee9966e54ad3cdfe27931ef0ed9de9a366 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Fri, 2 Sep 2022 01:37:35 -0300 Subject: [PATCH 12/25] Update worker.js --- worker/app/worker.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/worker/app/worker.js b/worker/app/worker.js index 93ed533..89eabe7 100644 --- a/worker/app/worker.js +++ b/worker/app/worker.js @@ -103,19 +103,24 @@ socket.on('worker.task.request', taskRequest => { console.log(`Experimental EAE Support - Creating EAE_ROOT destination`) fs.mkdirSync(processedEnvironmentVariables.EAE_ROOT, { recursive: true }); } - /* + console.log(`Experimental EAE Support - Spawning EasyAudioEncoder from "${EXP_EAE_EXECUTABLE}", cwd => ${processedEnvironmentVariables.EAE_ROOT}`) - childEAE = spawn(EXP_EAE_EXECUTABLE, {}, { + childEAE = spawn(EXP_EAE_EXECUTABLE, [], { cwd: processedEnvironmentVariables.EAE_ROOT, env: processedEnvironmentVariables }); childEAE.stdout.pipe(process.stdout); childEAE.stderr.pipe(process.stderr); childEAE.on('error', (err) => { - console.error('EAE failed:') + console.error('Experimental EAE Support - EAE failed:') console.error(err) }) - */ + childEAE.on('close', () => { + console.log('Experimental EAE Support - Closing') + }) + childEAE.on('exit', () => { + console.log('Experimental EAE Support - Exiting') + }) } else { childEAE = null } From 97281031c9bd5058fb3871739a1991ea7e156c09 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Fri, 2 Sep 2022 13:40:14 -0300 Subject: [PATCH 13/25] Adding unzip to custom worker docker image --- worker/extended-image/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worker/extended-image/Dockerfile b/worker/extended-image/Dockerfile index 4a1d54c..eb61261 100644 --- a/worker/extended-image/Dockerfile +++ b/worker/extended-image/Dockerfile @@ -5,8 +5,8 @@ LABEL maintainer="pabloromeo" RUN echo "**** install runtime packages ****" && \ echo "**** apt-get update ****" && \ apt-get update && \ - echo "**** install binutils ****" && \ - apt-get install -y binutils libatomic1 && \ + echo "**** install binutils libatomic1 unzip ****" && \ + apt-get install -y binutils libatomic1 unzip && \ echo "**** install 'n' ****" && \ curl -L https://raw.githubusercontent.com/tj/n/master/bin/n -o n && \ echo "**** install nodejs ****" && \ From 44dd2b005a1486a71879fd4a710c7d10ed9dd1ac Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Fri, 2 Sep 2022 23:15:29 -0300 Subject: [PATCH 14/25] Add arm64 build targets --- .github/workflows/main.yml | 6 +++--- worker/app/worker.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7753ef4..aad5fd1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -78,7 +78,7 @@ jobs: with: context: ./pms file: ./pms/extended-image/Dockerfile - platforms: linux/amd64,linux/arm/v7 # linux/arm64 + platforms: linux/amd64,linux/arm64,linux/arm/v7 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta_pms.outputs.tags }} labels: ${{ steps.meta_pms.outputs.labels }} @@ -147,7 +147,7 @@ jobs: with: context: ./worker file: ./worker/extended-image/Dockerfile - platforms: linux/amd64,linux/arm/v7 # linux/arm64 + platforms: linux/amd64,linux/arm64,linux/arm/v7 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta_worker.outputs.tags }} labels: ${{ steps.meta_worker.outputs.labels }} @@ -215,7 +215,7 @@ jobs: uses: docker/build-push-action@v3 with: context: ./orchestrator - platforms: linux/amd64,linux/arm/v7 # linux/arm64 + platforms: linux/amd64,linux/arm64,linux/arm/v7 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta_orchestrator.outputs.tags }} labels: ${{ steps.meta_orchestrator.outputs.labels }} diff --git a/worker/app/worker.js b/worker/app/worker.js index 89eabe7..27f7553 100644 --- a/worker/app/worker.js +++ b/worker/app/worker.js @@ -98,7 +98,7 @@ socket.on('worker.task.request', taskRequest => { } } - if (EXP_EAE_SUPPORT == "true") { + if (EXP_EAE_SUPPORT == "true" && EXP_EAE_EXECUTABLE != "") { if (!fs.existsSync(processedEnvironmentVariables.EAE_ROOT)){ console.log(`Experimental EAE Support - Creating EAE_ROOT destination`) fs.mkdirSync(processedEnvironmentVariables.EAE_ROOT, { recursive: true }); From 32f669abd13df98c802dba6ecc9f07bc70ba2445 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Sat, 3 Sep 2022 11:14:39 -0300 Subject: [PATCH 15/25] Add creating of /codecs in the dockermod --- worker/docker-mod/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/worker/docker-mod/Dockerfile b/worker/docker-mod/Dockerfile index 58290fd..7095f31 100644 --- a/worker/docker-mod/Dockerfile +++ b/worker/docker-mod/Dockerfile @@ -3,6 +3,7 @@ FROM alpine as buildstage LABEL maintainer="pabloromeo" RUN mkdir -p /root-layer/app +RUN mkdir -p /root-layer/codecs # copy local files COPY /docker-mod/root/ /root-layer/ From 56f9945fe64d428b47c7f99cbdce227f0f194d42 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Sat, 3 Sep 2022 11:22:52 -0300 Subject: [PATCH 16/25] Update Dockerfile --- worker/docker-mod/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/worker/docker-mod/Dockerfile b/worker/docker-mod/Dockerfile index 7095f31..92a640d 100644 --- a/worker/docker-mod/Dockerfile +++ b/worker/docker-mod/Dockerfile @@ -4,6 +4,7 @@ LABEL maintainer="pabloromeo" RUN mkdir -p /root-layer/app RUN mkdir -p /root-layer/codecs +RUN chmod 666 /root-layer/codecs # copy local files COPY /docker-mod/root/ /root-layer/ From 94655575c433696c3417821280a9e64671447141 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Sat, 3 Sep 2022 11:32:53 -0300 Subject: [PATCH 17/25] Update Dockerfile --- worker/docker-mod/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worker/docker-mod/Dockerfile b/worker/docker-mod/Dockerfile index 92a640d..ac4a1be 100644 --- a/worker/docker-mod/Dockerfile +++ b/worker/docker-mod/Dockerfile @@ -4,7 +4,7 @@ LABEL maintainer="pabloromeo" RUN mkdir -p /root-layer/app RUN mkdir -p /root-layer/codecs -RUN chmod 666 /root-layer/codecs +RUN chown abc:abc /root-layer/codecs # copy local files COPY /docker-mod/root/ /root-layer/ From caa059d3beaec32144a69b60b9e590ca56633182 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Sat, 3 Sep 2022 11:44:04 -0300 Subject: [PATCH 18/25] Update Dockerfile --- worker/docker-mod/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worker/docker-mod/Dockerfile b/worker/docker-mod/Dockerfile index ac4a1be..fe769e0 100644 --- a/worker/docker-mod/Dockerfile +++ b/worker/docker-mod/Dockerfile @@ -4,11 +4,11 @@ LABEL maintainer="pabloromeo" RUN mkdir -p /root-layer/app RUN mkdir -p /root-layer/codecs -RUN chown abc:abc /root-layer/codecs # copy local files COPY /docker-mod/root/ /root-layer/ COPY /app /root-layer/app +COPY /codecs /root-layer/codecs FROM scratch From f28cff41be529604a5dbae6e8f182720dfa24c9c Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Sat, 3 Sep 2022 11:47:11 -0300 Subject: [PATCH 19/25] Create info.txt --- worker/codecs/info.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 worker/codecs/info.txt diff --git a/worker/codecs/info.txt b/worker/codecs/info.txt new file mode 100644 index 0000000..3e80abc --- /dev/null +++ b/worker/codecs/info.txt @@ -0,0 +1 @@ +This is where Plex codecs will be placed \ No newline at end of file From 45f06cd9f6e09eaf48736a0389cebbde5290f351 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Sat, 3 Sep 2022 12:00:36 -0300 Subject: [PATCH 20/25] trying to create /codecs as abc --- worker/codecs/info.txt | 1 - worker/docker-mod/Dockerfile | 2 -- worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir | 4 ++++ 3 files changed, 4 insertions(+), 3 deletions(-) delete mode 100644 worker/codecs/info.txt create mode 100644 worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir diff --git a/worker/codecs/info.txt b/worker/codecs/info.txt deleted file mode 100644 index 3e80abc..0000000 --- a/worker/codecs/info.txt +++ /dev/null @@ -1 +0,0 @@ -This is where Plex codecs will be placed \ No newline at end of file diff --git a/worker/docker-mod/Dockerfile b/worker/docker-mod/Dockerfile index fe769e0..58290fd 100644 --- a/worker/docker-mod/Dockerfile +++ b/worker/docker-mod/Dockerfile @@ -3,12 +3,10 @@ FROM alpine as buildstage LABEL maintainer="pabloromeo" RUN mkdir -p /root-layer/app -RUN mkdir -p /root-layer/codecs # copy local files COPY /docker-mod/root/ /root-layer/ COPY /app /root-layer/app -COPY /codecs /root-layer/codecs FROM scratch diff --git a/worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir b/worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir new file mode 100644 index 0000000..a8ab8ed --- /dev/null +++ b/worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir @@ -0,0 +1,4 @@ +#!/usr/bin/with-contenv bash + +echo "**** Setting up codecs directory ****" +s6-setuidgid abc mkdir -p /codecs \ No newline at end of file From fec383664c505952aae56f02b683b3974c4f8613 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Sat, 3 Sep 2022 12:04:29 -0300 Subject: [PATCH 21/25] Update 95-setup-codecs-dir --- worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir b/worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir index a8ab8ed..e305ae9 100644 --- a/worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir +++ b/worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir @@ -1,4 +1,5 @@ #!/usr/bin/with-contenv bash echo "**** Setting up codecs directory ****" -s6-setuidgid abc mkdir -p /codecs \ No newline at end of file +mkdir -p /codecs +chown abc /codecs From adc1eeff40cf7a959dfaedb1025692ca7c9d7fc7 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Sat, 3 Sep 2022 12:22:53 -0300 Subject: [PATCH 22/25] Update 95-setup-codecs-dir --- worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir b/worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir index e305ae9..b91bbd4 100644 --- a/worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir +++ b/worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir @@ -2,4 +2,4 @@ echo "**** Setting up codecs directory ****" mkdir -p /codecs -chown abc /codecs +chown abc:abc /codecs From 712ea108d4083d79875055bba6445dec60cf0406 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Sat, 3 Sep 2022 12:26:24 -0300 Subject: [PATCH 23/25] Update 95-setup-codecs-dir --- .../root/etc/cont-init.d/95-setup-codecs-dir | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir b/worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir index b91bbd4..1372156 100644 --- a/worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir +++ b/worker/docker-mod/root/etc/cont-init.d/95-setup-codecs-dir @@ -1,5 +1,11 @@ #!/usr/bin/with-contenv bash echo "**** Setting up codecs directory ****" -mkdir -p /codecs -chown abc:abc /codecs +if [ -d "/codecs" ] +then + echo "Directory already present" +else + echo "Creating /codecs and changing ownership" + mkdir -p /codecs + chown abc:abc /codecs +fi From 4963751e9346ef9d0504a08d058f72cd50a9bb36 Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Sat, 3 Sep 2022 18:05:23 -0300 Subject: [PATCH 24/25] Preparing changes for release --- worker/app/start.sh | 12 +++++++----- worker/app/worker.js | 23 ++++++++++++++--------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/worker/app/start.sh b/worker/app/start.sh index 1b0d081..9f9ddb6 100644 --- a/worker/app/start.sh +++ b/worker/app/start.sh @@ -5,11 +5,13 @@ cd /usr/lib/plexmediaserver CLUSTERPLEX_PLEX_VERSION=$(strings "pms_original" | grep -P '^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)-[0-9a-f]{9}') CLUSTERPLEX_PLEX_CODECS_VERSION=$(strings "Plex Transcoder" | grep -Po '[0-9a-f]{7}-[0-9]{4}$') CLUSTERPLEX_PLEX_EAE_VERSION=$(printf "eae-`strings "pms_original" | grep -P '^EasyAudioEncoder-eae-[0-9a-f]{7}-$' | cut -d- -f3`-42") +EAE_VERSION=1785 # fixed for now echo "CLUSTERPLEX_PLEX_VERSION => '${CLUSTERPLEX_PLEX_VERSION}'" echo "CLUSTERPLEX_PLEX_CODECS_VERSION => '${CLUSTERPLEX_PLEX_CODECS_VERSION}'" -echo "CLUSTERPLEX_PLEX_EAE_VERSION => '${CLUSTERPLEX_PLEX_EAE_VERSION}'" +echo "CLUSTERPLEX_PLEX_EAE_VERSION (extracted) => '${CLUSTERPLEX_PLEX_EAE_VERSION}'" echo "PLEX_ARCH => '${PLEX_ARCH}'" +echo "EAE_VERSION => '${EAE_VERSION}'" CLUSTERPLEX_PLEX_CODEC_ARCH="${PLEX_ARCH}" INTERNAL_PLEX_MEDIA_SERVER_INFO_MODEL="" @@ -37,10 +39,10 @@ echo "Codec location => ${CODEC_PATH}" mkdir -p ${CODEC_PATH} cd ${CODEC_PATH} -if [ "$EXP_EAE_SUPPORT" == "true" ] +if [ "$EAE_SUPPORT" == "false" ] then - EAE_VERSION=1785 # fixed for now - + echo "EAE_SUPPORT is turned off => ${EAE_SUPPORT}, skipping EasyAudioEncoder download" +else if [ -d "${CODEC_PATH}/EasyAudioEncoder" ] then echo "EasyAudioEncoder already present" @@ -81,7 +83,7 @@ done export FFMPEG_EXTERNAL_LIBS="${CODEC_PATH}/" export PLEX_MEDIA_SERVER_INFO_MODEL="${INTERNAL_PLEX_MEDIA_SERVER_INFO_MODEL}" -export EXP_EAE_EXECUTABLE="${CODEC_PATH}/EasyAudioEncoder/EasyAudioEncoder/EasyAudioEncoder" +export EAE_EXECUTABLE="${CODEC_PATH}/EasyAudioEncoder/EasyAudioEncoder/EasyAudioEncoder" cd /app diff --git a/worker/app/worker.js b/worker/app/worker.js index 27f7553..1f41ce3 100644 --- a/worker/app/worker.js +++ b/worker/app/worker.js @@ -4,11 +4,16 @@ const STAT_CPU_OPS_DURATION = process.env.STAT_CPU_OPS_DURATION || 1000 const ORCHESTRATOR_URL = process.env.ORCHESTRATOR_URL || 'http://localhost:3500' const TRANSCODER_PATH = process.env.TRANSCODER_PATH || '/usr/lib/plexmediaserver/' const TRANSCODER_NAME = process.env.TRANSCODER_NAME || 'Plex Transcoder' -const EXP_EAE_SUPPORT = process.env.EXP_EAE_SUPPORT || "false" -const EXP_EAE_EXECUTABLE = process.env.EXP_EAE_EXECUTABLE || "" +const EAE_SUPPORT = process.env.EAE_SUPPORT || "true" +const EAE_EXECUTABLE = process.env.EAE_EXECUTABLE || "" // hwaccel decoder: https://trac.ffmpeg.org/wiki/HWAccelIntro const FFMPEG_HWACCEL = process.env.FFMPEG_HWACCEL || false +// Settings debug info +console.log(`EAE_SUPPORT => ${EAE_SUPPORT}`) +console.log(`EAE_EXECUTABLE => ${EAE_EXECUTABLE}`) +console.log(`FFMPEG_HWACCEL => ${FFMPEG_HWACCEL}`) + var app = require('express')(); var server = require('http').createServer(app); var socket = require('socket.io-client')(ORCHESTRATOR_URL); @@ -98,28 +103,28 @@ socket.on('worker.task.request', taskRequest => { } } - if (EXP_EAE_SUPPORT == "true" && EXP_EAE_EXECUTABLE != "") { + if (EAE_SUPPORT == "true" && EAE_EXECUTABLE != "") { if (!fs.existsSync(processedEnvironmentVariables.EAE_ROOT)){ - console.log(`Experimental EAE Support - Creating EAE_ROOT destination`) + console.log(`EAE Support - Creating EAE_ROOT destination`) fs.mkdirSync(processedEnvironmentVariables.EAE_ROOT, { recursive: true }); } - console.log(`Experimental EAE Support - Spawning EasyAudioEncoder from "${EXP_EAE_EXECUTABLE}", cwd => ${processedEnvironmentVariables.EAE_ROOT}`) - childEAE = spawn(EXP_EAE_EXECUTABLE, [], { + console.log(`EAE Support - Spawning EasyAudioEncoder from "${EAE_EXECUTABLE}", cwd => ${processedEnvironmentVariables.EAE_ROOT}`) + childEAE = spawn(EAE_EXECUTABLE, [], { cwd: processedEnvironmentVariables.EAE_ROOT, env: processedEnvironmentVariables }); childEAE.stdout.pipe(process.stdout); childEAE.stderr.pipe(process.stderr); childEAE.on('error', (err) => { - console.error('Experimental EAE Support - EAE failed:') + console.error('EAE Support - EAE failed:') console.error(err) }) childEAE.on('close', () => { - console.log('Experimental EAE Support - Closing') + console.log('EAE Support - Closing') }) childEAE.on('exit', () => { - console.log('Experimental EAE Support - Exiting') + console.log('EAE Support - Exiting') }) } else { childEAE = null From 1d0a52bc87b09949a5ac3405ed985e8dceef558f Mon Sep 17 00:00:00 2001 From: Pablo Romeo Date: Sat, 3 Sep 2022 18:18:39 -0300 Subject: [PATCH 25/25] Update README.md Add documentation around EAE_SUPPORT environment variable. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 79d7cd4..873ca09 100644 --- a/README.md +++ b/README.md @@ -356,6 +356,7 @@ The image extends the [LinuxServer Plex](https://hub.docker.com/r/linuxserver/pl | Parameter | Function | | :----: | --- | | `FFMPEG_HWACCEL` | Allows a [hwaccel decoder](https://trac.ffmpeg.org/wiki/HWAccelIntro) to be passed to ffmpeg such as `nvdec` or `dvxa2` | +| `EAE_SUPPORT` | "true" or "false", controls usage of EasyAudioEncoder (Default = "true") | | `LISTENING_PORT` | Port where workers expose the internal healthcheck | | `STAT_CPU_INTERVAL` | Frequency at which the worker sends stats to the orchestrator (in ms). Default 2000 | | `ORCHESTRATOR_URL` | The url where the orchestrator service can be reached (ex: http://plex-orchestrator:3500) |