Spaces:
Running
Running
Hermes Agent commited on
Commit ·
9f9c93c
1
Parent(s): 415ebcc
fix(playback): enable video encoding to eliminate black screen during video playback and fix _search_candidates import
Browse files- apex/combined-entrypoint.sh +4 -3
- apex/tg_streamer.py +1 -0
- apex/ui/abyss.css +17 -2
- apex/ui/spotlight-loader.js +0 -1
apex/combined-entrypoint.sh
CHANGED
|
@@ -238,7 +238,7 @@ for bcfg in "$LOCAL_ROOT/config/branding.xml" "/data/jellyfin/config/branding.xm
|
|
| 238 |
fi
|
| 239 |
done
|
| 240 |
|
| 241 |
-
# Configure encoding.xml for direct play / stream remuxing
|
| 242 |
ENCODING_XML="$LOCAL_ROOT/config/encoding.xml"
|
| 243 |
python3 - "$ENCODING_XML" <<'PY'
|
| 244 |
import sys
|
|
@@ -253,7 +253,7 @@ content = """<?xml version="1.0" encoding="utf-8"?>
|
|
| 253 |
<EnableThrottling>true</EnableThrottling>
|
| 254 |
<ThrottleDelaySeconds>180</ThrottleDelaySeconds>
|
| 255 |
<HardwareAccelerationType>none</HardwareAccelerationType>
|
| 256 |
-
<EnableVideoEncoding>
|
| 257 |
<EnableAudioEncoding>true</EnableAudioEncoding>
|
| 258 |
<AllowVideoStreamCopy>true</AllowVideoStreamCopy>
|
| 259 |
<AllowAudioStreamCopy>true</AllowAudioStreamCopy>
|
|
@@ -263,7 +263,8 @@ path.parent.mkdir(parents=True, exist_ok=True)
|
|
| 263 |
path.write_text(content.strip(), encoding="utf-8")
|
| 264 |
PY
|
| 265 |
cp -f "$ENCODING_XML" "/data/jellyfin/config/encoding.xml" 2>/dev/null || true
|
| 266 |
-
|
|
|
|
| 267 |
|
| 268 |
echo "[HEALTH] Jellyfin starting in background (local datadir)..."
|
| 269 |
launch_jellyfin
|
|
|
|
| 238 |
fi
|
| 239 |
done
|
| 240 |
|
| 241 |
+
# Configure encoding.xml for direct play / stream remuxing and video playback
|
| 242 |
ENCODING_XML="$LOCAL_ROOT/config/encoding.xml"
|
| 243 |
python3 - "$ENCODING_XML" <<'PY'
|
| 244 |
import sys
|
|
|
|
| 253 |
<EnableThrottling>true</EnableThrottling>
|
| 254 |
<ThrottleDelaySeconds>180</ThrottleDelaySeconds>
|
| 255 |
<HardwareAccelerationType>none</HardwareAccelerationType>
|
| 256 |
+
<EnableVideoEncoding>true</EnableVideoEncoding>
|
| 257 |
<EnableAudioEncoding>true</EnableAudioEncoding>
|
| 258 |
<AllowVideoStreamCopy>true</AllowVideoStreamCopy>
|
| 259 |
<AllowAudioStreamCopy>true</AllowAudioStreamCopy>
|
|
|
|
| 263 |
path.write_text(content.strip(), encoding="utf-8")
|
| 264 |
PY
|
| 265 |
cp -f "$ENCODING_XML" "/data/jellyfin/config/encoding.xml" 2>/dev/null || true
|
| 266 |
+
sed -i 's|<EnableVideoEncoding>false</EnableVideoEncoding>|<EnableVideoEncoding>true</EnableVideoEncoding>|g' "$ENCODING_XML" "/data/jellyfin/config/encoding.xml" 2>/dev/null || true
|
| 267 |
+
echo "[JELLYFIN] Configured high-performance video encoding & direct stream remux in $ENCODING_XML"
|
| 268 |
|
| 269 |
echo "[HEALTH] Jellyfin starting in background (local datadir)..."
|
| 270 |
launch_jellyfin
|
apex/tg_streamer.py
CHANGED
|
@@ -59,6 +59,7 @@ from apex_stream.organize import (
|
|
| 59 |
tv_show_root,
|
| 60 |
)
|
| 61 |
from apex_stream.tmdb_meta import (
|
|
|
|
| 62 |
best_tmdb_match,
|
| 63 |
build_episode_nfo,
|
| 64 |
build_movie_nfo,
|
|
|
|
| 59 |
tv_show_root,
|
| 60 |
)
|
| 61 |
from apex_stream.tmdb_meta import (
|
| 62 |
+
_search_candidates,
|
| 63 |
best_tmdb_match,
|
| 64 |
build_episode_nfo,
|
| 65 |
build_movie_nfo,
|
apex/ui/abyss.css
CHANGED
|
@@ -3325,8 +3325,7 @@ header.MuiAppBar-root [class*="serverName"],
|
|
| 3325 |
.cardPadder,
|
| 3326 |
.cardBox,
|
| 3327 |
.card-withdetails,
|
| 3328 |
-
.innerCardContainer
|
| 3329 |
-
.backdropImage {
|
| 3330 |
image-rendering: auto !important;
|
| 3331 |
image-rendering: high-quality !important;
|
| 3332 |
-webkit-backface-visibility: hidden;
|
|
@@ -3334,6 +3333,22 @@ header.MuiAppBar-root [class*="serverName"],
|
|
| 3334 |
transform: translateZ(0);
|
| 3335 |
}
|
| 3336 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3337 |
/* 13. Android & Mobile Perfection */
|
| 3338 |
@media (max-width: 959px) {
|
| 3339 |
.MuiDrawer-modal .MuiDrawer-paper,
|
|
|
|
| 3325 |
.cardPadder,
|
| 3326 |
.cardBox,
|
| 3327 |
.card-withdetails,
|
| 3328 |
+
.innerCardContainer {
|
|
|
|
| 3329 |
image-rendering: auto !important;
|
| 3330 |
image-rendering: high-quality !important;
|
| 3331 |
-webkit-backface-visibility: hidden;
|
|
|
|
| 3333 |
transform: translateZ(0);
|
| 3334 |
}
|
| 3335 |
|
| 3336 |
+
.backdropImage {
|
| 3337 |
+
image-rendering: auto !important;
|
| 3338 |
+
image-rendering: high-quality !important;
|
| 3339 |
+
}
|
| 3340 |
+
|
| 3341 |
+
/* Ensure video player elements always render on top without backdrop interference */
|
| 3342 |
+
#videoOsdPage,
|
| 3343 |
+
.videoPlayerContainer,
|
| 3344 |
+
.htmlvideoplayer {
|
| 3345 |
+
z-index: 99999 !important;
|
| 3346 |
+
}
|
| 3347 |
+
body:has(#videoOsdPage) #abyss-spotlight-backdrop,
|
| 3348 |
+
body.videoPlayerContainerVisible #abyss-spotlight-backdrop {
|
| 3349 |
+
display: none !important;
|
| 3350 |
+
}
|
| 3351 |
+
|
| 3352 |
/* 13. Android & Mobile Perfection */
|
| 3353 |
@media (max-width: 959px) {
|
| 3354 |
.MuiDrawer-modal .MuiDrawer-paper,
|
apex/ui/spotlight-loader.js
CHANGED
|
@@ -49,7 +49,6 @@
|
|
| 49 |
els[i].setAttribute(BACKDROP_MARK_ATTR, "true");
|
| 50 |
els[i].style.backgroundImage = 'url("' + url + '")';
|
| 51 |
els[i].style.imageRendering = 'auto';
|
| 52 |
-
els[i].style.transform = 'translateZ(0)';
|
| 53 |
}
|
| 54 |
});
|
| 55 |
}
|
|
|
|
| 49 |
els[i].setAttribute(BACKDROP_MARK_ATTR, "true");
|
| 50 |
els[i].style.backgroundImage = 'url("' + url + '")';
|
| 51 |
els[i].style.imageRendering = 'auto';
|
|
|
|
| 52 |
}
|
| 53 |
});
|
| 54 |
}
|