Share decoder live sources and bound web playback startup

This commit is contained in:
2026-10-12 20:59:30 +02:00
parent 92052d588f
commit cecd5b5625
13 changed files with 579 additions and 37 deletions
+15 -1
View File
@@ -1,6 +1,6 @@
# Enigma2 dla Jellyfin 12.2
Lokalne rozszerzenie wtyczki Enigma2 6.0.0.0, wersja 7.0.1.0. Zachowuje identyfikator wtyczki, nazwę usługi, konfigurację połączenia, natywne strumienie, nagrania i timery dekodera. Profile transkodowania pozostają na dekoderze.
Lokalne rozszerzenie wtyczki Enigma2 6.0.0.0, wersja 7.0.4.0. Zachowuje identyfikator wtyczki, nazwę usługi, konfigurację połączenia, natywne strumienie, nagrania i timery dekodera. Profile transkodowania pozostają na dekoderze.
## Funkcje
@@ -61,3 +61,17 @@ Wersja 7.0.1.0: kliknięcie nazwy kanału na stronie dodatku uruchamia natywny o
Po skopiowaniu skryptu do `/tmp/decoder-channel-playback.js` uruchomić `install-web-playback.py` w CT100191; instalator zachowuje kopie index/config i wpisuje dodatek do istniejącej listy plugins. Po aktualizacji pakietu jellyfin-web trzeba ponownie uruchomić instalator. W otwartej przeglądarce wykonać Ctrl+Shift+R. Działanie dotyczy Jellyfin Web; natywne aplikacje Android TV mają własne sterowanie. Test Edge: wybór TVP INFO HD jednym kliknięciem, odpowiedź PlaybackInfo 200 i odtwarzanie video z rosnącym currentTime, bez przycisku Play.
Test `test-native-playback.cjs`: kliknięcie narożnika grafiki kanału TVP INFO HD w natywnym `/livetv?tab=2`, bez trafienia w przycisk Play, uruchamia wideo (PASS). Stanowisko: izolowany Edge headless, konto testowe usuwane w finally.
## Współdzielenie transmisji i błędy odtwarzania — 12.10.2026
Wersja 7.0.4.0 współdzieli jedno połączenie HTTP z odbiornikiem między analizą metadanych i odbiorcami danego kanału. Lokalny relay ma losowy identyfikator oraz akceptuje tylko połączenia loopback; zewnętrzne odtwarzacze korzystają z natywnego API Jellyfina. Bufor historii jest ograniczony do 2 MiB, kolejki klientów do 128 bloków, liczba klientów kanału do 16. Zakończenie jednego odbiorcy nie zatrzymuje pozostałych; po ostatnim połączeniu źródło jest zamykane po 15 sekundach.
Wtyczka wykonuje własne współdzielone badanie rzeczywistych metadanych strumienia. Limit 15 sekund kończy również uruchomiony przez wtyczkę ffprobe; wynik sukcesu jest buforowany 30 sekund, błędu 3 sekundy. MediaSourceInfo przekazuje natywnemu odtwarzaczowi zidentyfikowane indeksy i wyłącza kolejne probing. Nie zmienia się systemowych wrapperów ffmpeg/ffprobe ani konfiguracji Jellyfina.
Moduł web domyślnie otwiera Telewizję w zakładce Kanały (tab=2), zachowując jawnie wybraną zakładkę. Zapobiega podwójnemu uruchomieniu podczas oczekiwania, otwiera natywny OSD i udostępnia przycisk „Zatrzymaj i wróć do kanałów” oraz Escape. Brak obrazu przez 25 sekund kończy próbę i wraca do listy. Działanie przy błędzie nie stanowi potwierdzenia prawidłowej transmisji z odbiornika.
Do aktualizacji wyłącznie DLL używa się `deploy-plugin-only.py` w CT100191 po dostarczeniu artefaktu do `/tmp/Jellyfin.Plugin.Enigma2.dll`. Flaga `--maintenance-approved` pozwala wykonać uzgodniony restart przy aktywnym odtwarzaniu. Skrypt zachowuje poprzednią wtyczkę i sprawdza niezmienione hashe konfiguracji serwera, wrapperów oraz index/config web. Moduł JS aktualizuje się osobno w istniejącym `/usr/share/jellyfin/web/decoder-channel-playback.js`; nie uruchamiać ponownie instalatora web przy naprawie ograniczonej do wtyczki. Ostatnia kopia wdrożenia: `/var/lib/jellyfin/decoder-plugin-backups/plugin-only-20261012T183340Z`.
Testy konsolowe przeszły: współdzielenie probe, anulowanie pojedynczego odbiorcy, limit czasu, brak wideo, jeden upstream dla dwóch odbiorców relay, odmowa dostępu zewnętrznego oraz zwolnienie ostatniego połączenia. `test-web-bridge.cjs` sprawdza domyślną zakładkę, OSD, Escape, deduplikację i spóźnione zakończenie. `verify.py` potwierdził aktywną 7.0.4.0, 216 kanałów i izolację preferencji/uprawnień. `test-web-player.cjs` pozwala ustawić nazwę przez DECODER_TEST_CHANNEL i sprawdza rzeczywisty obraz oraz wyjście w Edge.
Bieżące próby TVP 1 HD i TVP 2 HD: domyślne Kanały i wyjście PASS, obraz NO_FRAME_FROM_SOURCE, bez błędów JS. Bezpośrednie żądanie TVP1 z CT100191 do portu 8001, z pominięciem wtyczki i odtwarzacza, otrzymało HTTP 200 i 0 bajtów po około 5,3 s. Dla TVP2 test web nie uzyskał obrazu; nie potwierdzono identycznej przyczyny. Bieżące service reference w natywnej bazie są zgodne z OpenWebif: TVP1 3ABD:514:13E oraz TVP2 C22:1E78:71. Dodatkową ręczną próbę 3D66:2C88:13E błędnie opisano jako TVP2; jest to TV PULS HD i nie stanowi dowodu dla TVP2. Nie potwierdzono przywrócenia obrazu. Odczyt logów dekodera wykazał dodatkowo zatrzymania GUI przez runlevel 4→3 o 20:44, 20:45, 20:47 i 20:48 CEST; Enigma obsługuje porty 80 i 8001, więc te przerwy wyjaśniają wcześniejsze Connection refused. Źródła poleceń restartów oraz przyczyny pustej transmisji nie przypisano do LNB ani OSCam bez dalszych dowodów. W ramach tej naprawy nie zmieniano ani nie restartowano odbiornika.