Jellyfin 12.0

We zijn blij u Jellyfin 12.0 te presenteren, onze nieuwe stabiele release. Deze release zet de koers van 10.11 voort: het voltooien van de databaseconversie, het omzetten van dat nieuwe fundament in echte prestatieverbeteringen, en het eindelijk bieden van de ondersteuning voor boeken en strips die zij al jaren verdienen.

Indien u alleen een korte samenvatting wilt van wat u moet weten om uw systeem te upgraden en draaiende te krijgen, lees dan de sectie "TL;DR" hieronder. Voor een volledige uitleg van alle belangrijke functies en verbeteringen in Jellyfin 12.0 kunt u verder lezen. U kunt de volledige changelogs ook bekijken via de GitHub-releases van de server en webclient.

  • Cody

TL;DR

HET IS ZEER BELANGRIJK DAT U DEZE SECTIE LEEST VOORDAT U UPGRADET NAAR JELLYFIN 12.0! Het niet doen hiervan kan tot problemen leiden. Stel gerust vragen in onze chat als u onzeker bent of tegen problemen aanloopt.

  • Back-ups: Deze release wijzigt het databaseschema en herschrijft actief gegevens bij de eerste opstart. Een back-up is de enige manier om terug te keren naar uw vorige versie. Stop Jellyfin en maak altijd een volledige handmatige back-up van uw gegevens- en configuratiemappen voordat u upgradet.
  • Versievereisten: U moet Jellyfin 10.10.7 of een willekeurige 10.11.x release draaien voordat u upgradet naar 12.0. Upgraden vanuit 10.11.x wordt volledig ondersteund en vereist geen tussenstap. Indien u een oudere versie dan 10.10.7 gebruikt, upgrade dan eerst naar 10.10.7 en daarna naar 12.0.
  • Gebruikersnamen: Controleer uw gebruikersnamen. Gebruikersnamen zijn nu case insensitive (hoofdletterongevoelig). Twee accounts kunnen dus geen namen hebben die alleen verschillen in hoofdlettergebruik. Als u gebruikers heeft die aan dit patroon voldoen, zal de databasemigratie mislukken.
  • Bibliotheekscan: Een volledige scan van de bibliotheek is VERPLICHT na de upgrade. Als onderdeel van de verbetering in hoe alternatieve versies worden opgeslagen, worden versies die Jellyfin automatisch heeft gegroepeerd (niet die u zelf heeft samengevoegd) tijdens de upgrade gewist. Tot u de scan uitvoert, zullen deze versies lijken te ontbreken.
  • Eerste scan: De eerste scan na de upgrade zal aanzienlijk langer duren dan normaal en sommige films kunnen als nieuw toegevoegd verschijnen. Dit is verwacht. Jellyfin controleert nu elk item in uw bibliotheek tegen de bestanden op schijf om resten van vorige versies op te ruimen en foutieve bestanden te corrigeren. Stop de server niet terwijl de migraties worden uitgevoerd.
  • Browsercache: Voer na installatie een harde refresh uit (bijv. Ctrl+Shift+R) en/of wis de webcache van uw Jellyfin-instantie als u UX-anomalieën opmerkt. Foute gecachte assets zijn de hoofdoorzaak van dergelijke problemen.
  • Plugins van derden: Verwijder alle plugins van derden vóór de upgrade. Plugins gebouwd voor 10.11 zullen niet laden op 12.0 en hebben updates van hun auteurs nodig. Officiële plugins zijn wel bijgewerkt voor 12.0.
  • Oude clients: Zeer oude clients van derden zullen stoppen met werken. Ondersteuning voor de legacy /emby/ en /mediabrowser/ adressen is verwijderd, en de verouderde manier van inloggen is nu uitgeschakeld, ook op bestaande servers.
  • Beveiliging: Deze release bevat beveiligingsfixes, dus we raden aan om te upgraden zodra u daar klaar voor bent.
  • Bugs: Zoals altijd bij grote Jellyfin-releases zullen er bugs zijn. Prefix bugrapporten met [12.0] zodat we ze snel kunnen triageren. En nogmaals: maak een back-up.

Waarom 12.0?

De meest zichtbare wijziging is de naam: we laten het hoofdversienummer "10" vallen uit ons naamgevingsschema. Wat 10.12.0 zou zijn geweest, is simpelweg 12.0, en de server rapporteert zijn versie als 12.0.0. 10.11.x was de laatste release-branch die het oude schema gebruikte.

De reden hiervoor is de feedback na 10.11.0. Een release zoals 10.11.0 was naar alle redelijke maatstaven een grote release (het herschreef de bibliotheekdatabase), maar het versienummer presenteerde het als een kleine update. De leidende "10" veranderde nooit en vertelde niets, waardoor "major" releases eruitzagen als "minor" updates. Door dit te schrappen, verandert het eerste getal wanneer de release groot is.

Indien u software onderhoudt die Jellyfin-versiestrings analyseert (zoals een client, monitoring-check, deployment-script of container tag pin), is dit het punt om naar te kijken vóór de upgrade.

Optimalisatie van de nieuwe database

Jellyfin 10.11.0 voltooide de herbouw van de bibliotheekdatabase, wat de deur opende voor het prestatiewerk in deze release. We zijn nog niet klaar, maar u zult een groot verschil merken bij het browsen.

Een van de grootste wijzigingen is hoe afspeellijsten (playlists) en collecties worden opgeslagen. Voorheen werd alles in een afspeellijst bewaard als één grote lijst binnen de lijst zelf, waardoor de database niet in die lijst kon kijken. Om iets te weten te komen, moest de hele lijst worden geladen en uitgepakt. Dit gold voor het tellen van items, het bepalen van de kijkstatus of het tonen van een enkele pagina. Ook bewerken was traag, omdat het toevoegen of verwijderen van één item betekende dat de hele lijst opnieuw geschreven moest worden.

Elk item in een afspeellijst is nu een eigen rij in de database. De database kan nu rijen tellen, één pagina teruggeven en een enkel item toevoegen of verwijderen zonder de rest aan te raken. Dit is een grote verbetering voor grote afspeellijsten. Collecties en boxsets waren op dezelfde manier opgeslagen en hebben dezelfde fix gekregen.

Daarnaast:

  • Het tegelijkertijd verwijderen van een groot aantal items faalt niet langer halverwege.
  • "Continue Watching", "Next Up", herkijken, "Latest Media" voor muziek, artiest-opzoeken en de bekeken aantallen in mappen zouden sneller moeten zijn.
  • Zwaar database-onderhoud wordt niet meer uitgevoerd tijdens een bibliotheekscan, zodat deze twee niet meer concurreren om dezelfde resources.
  • Het meeste hiervan uit zich in het feit dat pagina's die voorheen vastliepen, dat nu niet meer doen.

Let op: dit werk is gericht op hoe Jellyfin uw bibliotheek leest, niet op de bibliotheekscanner zelf. De scanner kan als bijeffect iets sneller zijn, maar het versnellen ervan was dit keer geen doel.

Wat er gebeurt bij de eerste opstart

Zoals gebruikelijk bevat een nieuwe release van Jellyfin meerdere databasemigraties. Deze kunnen enige tijd in beslag nemen, afhankelijk van de grootte van uw bibliotheek en de hoeveelheid opgehoopte foutieve data.

Als u deze stap liever bewust uitvoert dan dat het bij de eerste start gebeurt, accepteert de server nu --mode MigrateSystem. Hiermee wordt de upgrade uitgevoerd waarna de server afsluit zonder de rest van Jellyfin op te starten.

Meerdere versies voor afleveringen

Alternatieve versies waren sinds hun introductie een functie die alleen voor films gold. In 12.0 werken ze nu ook voor afleveringen. Een serie met zowel een broadcast-versie als een extended-versie, of een 1080p- en een 4K-kopie van dezelfde aflevering, kan nu gegroepeerd worden zoals films dat altijd al konden. Dit omvat ook hervatdata die de versie volgt die u daadwerkelijk bekeek.

Dit is ook de reden voor de vereiste scan na de upgrade: om versies correct te laten werken voor afleveringen, moest de manier waarop versiekoppelingen worden opgeslagen worden aangepast, en automatisch opgeloste versies moeten opnieuw worden opgebouwd vanuit de bestanden op schijf.

Boeken en strips, nu echt goed aangepakt

Boeken hebben in Jellyfin vaak een ondergeschikte rol gespeeld ten gunste van videoweergave. Deze release is het begin van een inspanning om dat te veranderen. Het grootste deel van wat de Bookshelf-plugin deed, is nu verplaatst naar de server zelf.

Op de server:

  • Boekmetadata wordt direct gelezen uit OPF- en ComicInfo-bestanden, of uit ComicBookInfo-commentaren, zonder dat hiervoor een plugin nodig is.
  • Posters worden gegenereerd voor EPUB's en elk ondersteund strip-archiefformaat, en externe covers werken voor audioboekbestanden.
  • Naam, index, jaar en serie worden gelezen uit boekbestandsnamen; volumenummers en hoofdstuknummers worden herkend uit stripbestandsnamen.
  • Aantal pagina's wordt geëxtraheerd uit striparchieven en PDF's.
  • Hoofdstukken worden geëxtraheerd uit audioboeken.
  • Bookshelf is gesplitst in aparte GoogleBooks- en ComicVine-providers, en een nieuwe OpenLibrary-plugin biedt metadata en afbeeldingen.
  • ISBN externe ID's en links worden ondersteund.

In de webclient:

  • Er is een moderne bibliotheekindeling voor boeken met weergavetypes en paginering, plus tabbladen voor Auteurs, Collecties en Mappen.
  • Boeken tonen informatie over hun auteurs, en auteurs tonen hun boeken en audioboeken.
  • De leesinterface is herontworpen en gestandaardiseerd voor alle boektypes, met uniform fullscreen-gedrag en swipe-navigatie voor PDF's.
  • Voortgangsindicatoren werken opnieuw voor ondersteunde eBooks; sorteren op indexnummer en releasedatum is beschikbaar; de lettergrootte-selectie voor EPUB's is verbeterd.
  • Achtergrondafspelen van audioboeken werkt op iOS-apparaten.
Opmerking: De Bookshelf-plugin is verouderd (deprecated). De functies ervan zijn samengevoegd in de server of overgezet naar de ComicVine- en GoogleBooks-providers.

Betere aanbevelingen en uitbreidbaar zoeken

De bron voor "meer zoals dit" en de suggestierijen is niet langer vastgelegd. U kiest nu per bibliotheek de bron op dezelfde plek waar u metadata-providers kiest. Zo kunt u één bron gebruiken voor films en een andere voor muziek.

ListenBrainz wordt nu meegeleverd met de server als een van deze bronnen. Als u uw muziekbibliotheek hierop instelt, komen suggesties voor soortgelijke artiesten voort uit echte luisterdata in plaats van alleen uit tags.

Zoeken werkt nu op dezelfde manier: een plugin kan eigen resultaten toevoegen naast die van Jellyfin. Als u Jellyfin tegelijkertijd op een andere plek wilde laten zoeken, is dat nu een plugin in plaats van een fork. Beide systemen zijn beschreven voor plugin-auteurs in de release notes.

De Modern-indeling is nu de standaard

De indeling die als "experimenteel" werd verzonden, is nu simpelweg de Modern indeling. Op desktop en mobiel is dit de standaard voor iedereen die niet expliciet een andere keuze heeft gemaakt. De vorige indeling is nog beschikbaar en heet nu Legacy. Televisies blijven ongewijzigd: TV-apparaten blijven de TV-indeling gebruiken, die nog op de legacy-app draait.

Naast het instellen als standaard, is de indeling verder gepolijst:

  • Alle thema's (Dark, Light, WMC, Blue Radiance, Apple TV en Purple Haze) zijn nu afgeleid van een gedeeld basisthema gebouwd op CSS-variabelen.
  • De bibliotheek-toolbar is samengevoegd met de app-bar, met een sticky bibliotheekheader.
  • Tabbladen voor collecties en afspeellijsten zijn beschikbaar in alle bibliotheken, en collecties verschijnen op item-detailpagina's.
  • De weergaven voor Muziekvideo's, Mixed Media, Collecties/Afspeellijsten en Boeken zijn bijgewerkt. Home Video- en Fotobibliotheken hebben nu standaard tab-opties en een mapweergave.
  • Nieuwe filters voor audio- en ondertitel-talen, een knop om filters te resetten en studio-zoeken.

Wijzigingen die u na de upgrade zult merken

Naast de verwijdering van legacy clients, gedragen enkele zaken zich anders dan in 10.11:

  • Ondertitelinstellingen: Deze worden nu per bibliotheek geconfigureerd in plaats van één keer voor de hele server. De oude server-brede opties bestaan niet meer.
  • Sortering: Sortering is consistenter, wat betekent dat sommige bibliotheken iets anders geordend kunnen zijn dan u gewend bent.
  • Artwork: Artwork wordt niet langer uitgerekt voorbij de werkelijke grootte. Posters met een lage resolutie verschijnen nu in hun werkelijke grootte in plaats van opgeblazen te worden; dit ziet er kleiner uit, maar is scherper.
  • Bestandstypen: .ogg-bestanden worden behandeld als audio, niet als video. Als u .ogg-videobestanden had, worden deze bij de volgende scan opnieuw gesorteerd.
  • Gebruikersnamen: Gebruikersnamen kunnen nu worden gewijzigd tussen hoofd- en kleine letters. Zoals vermeld, kunnen twee accounts geen namen hebben die alleen verschillen in hoofdlettergebruik.
  • Symlinks: Symlinked media worden gevolgd op het moment dat er iets wordt afgespeeld, in plaats van wanneer de bibliotheek wordt gescand.

Beveiliging

Deze release bevat diverse beveiligingsfixes voor zowel de server als de webclient. Enkele hiervan sluiten manieren af waarop een zorgvuldig samengestelde aanvraag bestanden buiten de directories zou kunnen bereiken die Jellyfin hoort te bedienen. Andere fixes voorkomen dat de setup-wizard opnieuw kan worden uitgevoerd op een verkeerd geconfigureerde server zonder in te loggen, wijzen plugin-pakketten met onveilige namen af, passen ouderlijk toezicht toe op meer plaatsen en lossen cross-site scripting problemen in de webclient op.

Nieuwe functies & verbeteringen

User Experience - Web Client

  • Een "nog aan het kijken?" prompt.
  • De toetsen < en > scrubben frame-voor-frame tijdens het afspelen.
  • Hoofdstuknamen verschijnen in de preview-bubble tijdens het slepen over de seekbar; de playback-info overlay is compacter en toont meer details.
  • Mappen kunnen als "afgespeeld" worden gemarkeerd.
  • Een verbeterde "Upcoming" weergave, en "Play All" en "Shuffle" knoppen in serie-bibliotheken.
  • De screensaver wordt onderdrukt tijdens het bekijken van foto's of lezen; een instelling voor de screensaver-tijd is beschikbaar in de Modern-indeling.
  • Crewleden met meerdere rollen worden samengevoegd in één kaart; makers van TV-shows verschijnen op item-details.
  • Een configureerbare vertraging voor de fotodiashow.
  • De webclient cached meer data in de browser, waardoor bezochte schermen sneller terugkomen en artwork niet meer wazig oogt op hoge resoluties.
  • Fixes voor navigatie met game-controllers, toetsenbord-sneltoetsen voor niet-Latijnse toetsenbordindelingen en ondersteuning voor rewind- en fast-forward-knoppen op afstandsbedieningen.

Administrator Experience - Web Client

  • De log-viewer kan logs live volgen in plaats van dat er een refresh nodig is.
  • Sorteren en filteren op de Activiteit-pagina.
  • De bron voor soortgelijke items en aanbevelingen is configureerbaar per bibliotheek.
  • Jellyfin markeert cache-directories nu met CACHEDIR.tag, zodat back-uptools deze kunnen overslaan.
  • Clients kunnen om antwoorden in een specifieke taal vragen.
  • Het databasebestand kan op een andere locatie dan de standaardlocatie worden bewaard.
  • Uitgeschakelde plugins worden niet meer opnieuw ingeschakeld bij herstart.
  • Back-ups falen niet meer direct bij een corrupt record; u krijgt nu een waarschuwing voordat u een back-up herstelt of start terwijl er een bibliotheekscan loopt.
  • Een herstijlde startup-interface die versie- en activiteitsinformatie toont.
  • Collecties en afspeellijsten kunnen worden gefilterd per bibliotheek.
  • Meer filteropties bij het zoeken naar personen, de optie om de originele taal van een titel te prefereren voor audio, en de nieuwe "Collecties" lijst op item-pagina's.
  • Live TV: XMLTV achtergrondafbeeldingen en aflevering-thumbnails worden geïmporteerd; onbereikbare "server-local" streaming URL's worden niet meer teruggestuurd; XMLTV-gids-imports slaan programma's over waarvan de data niet is gewijzigd.
  • Metadata: TVDB ID's werken voor films, AudioDb artiest-zoeken, ReplayGain album gain wordt gelezen uit muziekbestanden, MusicBrainz lookups zijn veerkrachtiger, WEB-DL tags in bestandsnamen worden herkend, en provider ID's kunnen worden ingesteld op seizoen- en afleveringsmapnamen.
  • Acerkrongehaakjes {} en haakjes () worden nu ondersteund (naast vierkante haken []) voor het parsen van Provider Identifier waarden. Nieuwe aliassen: tvdb voor tvdbid, imdb voor imdbid, en tmdb voor tmdbid.
  • De taak "database optimaliseren" analyseert en vacuümeert de DB wanneer deze wordt getriggerd en bij afsluiting.
  • De taak "Personen verversen" ruimt verwijderde personen nu correct op en controleert op updates voor personen zonder afbeeldingen.
  • Live TV: EPG houdt nu rekening met SchedulesDirect API foutcodes. HDHomeRun tuners zullen nu direct play gebruiken op clients die dit ondersteunen. M3U tuners zullen niet langer direct play gebruiken en standaard overschakelen op remuxing.
  • De afbeelding van de afspeellijst-bibliotheek kan nu voor alle gebruikers worden ingesteld via de Metadata Manager. Dubbele tracks zijn nu toegestaan in afspeellijsten.

Transcoding en Media Handling

  • Overstap naar de nieuwe upstream FFmpeg 8.1.
  • Geoptimaliseerde CUDA transposing, OCL scaling, en OCL tonemapping prestaties (specifiek voor Mali GPU's).
  • HLG tonemapping gebruikt nu de EOTF van BT.2446 Methode B.
  • Een spec-conforme dvh1 HLS variant voor Dolby Vision Profiel 5 voor betere apparaatcompatibiliteit.
  • Fix voor een potentiële A/V desync in HLS bij het transcoderen van video terwijl audio wordt geremuxed.
  • Ondertitel-schrijven verloopt nu via SubtitleEdit, wat de oude SSA naar ASS conversie en het bijbehorende verlies van styling voorkomt.
  • VobSub ondertitelondersteuning; externe ondertitels kunnen worden ingebed in MKS tijdens transcoding; de timeout voor ondertitel-extractie is configureerbaar; op afbeeldingen gebaseerde ondertitels kunnen door de client worden gerenderd tijdens remuxing.
  • Een apparaatprofiel-optie voor Android TV-boxen die geen geroteerde video kunnen afhandelen (zodat zijwaarts gefilmde beelden correct worden afgespeeld).
  • Trickplay pikt bestaande bestanden op tijdens de scan in plaats van ze opnieuw te genereren, produceert geen duplicaten meer voor interlaced video, werkt met foutieve timestamps in het bronbestand en ruimt zichzelf op bij falen.
  • Betere apparaatondersteuning in de webclient: Dolby Vision in MKV-bestanden op webOS 25 en nieuwer, AV1 direct streaming op TV-clients, anamorphic video direct play op Tizen, en op iOS zowel achtergrondafspelen met uitgeschakeld scherm als een fix voor audionormalisatie die invloed had op toonhoogte en snelheid.

Wijzigingen voor Client Ontwikkeling

De volgende wijzigingen zijn van toepassing op alle ontwikkelaars van client-applicaties.

HTTP API

  • Verouderde autorisatiemechanismen zijn nu standaard uitgeschakeld.
  • GetItems is nu asynchroon en past recursive toe wanneer filters worden aangevraagd, beperkt tot aanvragen die includeItemTypes bevatten. Dezelfde query kan een ander resultaat geven dan in 10.11.
  • ItemByName responsen zijn beperkt en personen worden gededupliceerd.
  • Nu verouderd (obsolete) maar nog functioneel: GetTrailers (gebruik GetItems met includeItemTypes=Trailer), GetArtists en GetAlbumArtists (gebruik GetPersons), GetArtistByName (gebruik GetPerson), GetMusicGenre (gebruik GetGenre), de muziekgenre instant mix endpoints (gebruik GetInstantMixFromItem), GetRecordingsSeries, en de startup routes (gebruik de configuration endpoints). UserDto.HasPassword is ook verouderd. De HLS controllers zijn verborgen uit de specificatie.
  • Swashbuckle is bijgewerkt naar v10, wat het gegenereerde OpenAPI-document wijzigt. SDK's moeten opnieuw worden gegenereerd.
  • Verwijderde routes: POST /Users/{userId}/EasyPassword, GET /Items/{itemId}/CriticReviews, GET /Environment/NetworkShares, POST /System/MediaEncoder/Path, en GET /LiveTv/Recordings/Groups/{groupId}. GET /QuickConnect/Initiate was een alias voor de POST route; clients die de GET-vorm gebruikten, moeten overstappen op POST.

Plugins

  • De server richt zich nu op .NET 10 en diverse plugin-interfaces zijn gewijzigd. Plugins moeten opnieuw worden geconfigureerd en gebouwd voor 12.0.
  • Nieuwe mogelijkheden voor plugins: resultaten leveren voor zoekopdrachten, similarity- en aanbevelingsdata leveren, comic-metadata leveren, data over niet-uitgezonden en ontbrekende afleveringen leveren, geaggregeerde credits gebruiken voor castleden, hoofdstukken opslaan voor niet-video items (zoals audioboeken), wachtwoordreset afhandelen voor onbekende gebruikersnamen, en eigen geëxtraheerde bestanden opruimen wanneer itemdata wordt geschoond. Live TV plugins kunnen nu de beschikbaarheid van Schedules Direct via de server opvragen.
  • Plugins die werkten met alternatieve versies of inhoud van afspeellijsten vereisen aandacht, aangezien deze niet langer binnen het hoofditem worden bewaard. Er zijn nieuwe bibliotheekmethoden beschikbaar.
  • Belangrijke wijzigingen in interfaces: ISearchEngine, IAuthenticationProvider.HasPassword, delen van IItemRepository, en enkele IUserManager leden.

Uitfasering van interne TLS/SSL-ondersteuning

In de 10.11.0 release notes hebben we aangekondigd dat interne TLS/SSL-ondersteuning in deze release zou worden verwijderd. Deze verwijdering is uitgesteld naar een toekomstige versie. De reden is ongewijzigd: we raden aan om Jellyfin achter een reverse proxy te draaien. Indien u een publiek toegankelijke instantie gebruikt met de ingebouwde TLS van Jellyfin, is dit extra tijd om te migreren, geen uitstel van noodzaak.

Happy Watching!