Hur upptäcker och synkroniserar Jellyfin ändringar mellan enheter?

Eva Wong är Teknisk skribent och den boende fixaren på ZimaSpace. En livslång nörd med en passion för hemma-labb och öppen källkod, hon specialiserar sig på att översätta komplexa tekniska koncept till tillgängliga, praktiska guider. Eva tror att självhosting ska vara roligt, inte skrämmande. Genom sina handledningar ger hon gemenskapen verktyg att avmystifiera hårdvaruinstallationer, från att bygga sin första NAS till att bemästra Docker-containrar.

Jellyfin samordnar de flesta ändringar mellan enheter via en central server, som upptäcker biblioteksuppdateringar, sparar delat tillstånd och visar det resulterande läget för klienterna.

En telefon, tv, webbläsare och surfplatta förhandlar normalt inte direkt med varandra om vilket mediebibliotek som är korrekt. De kommunicerar med samma Jellyfin-server, som ansvarar för indexerade biblioteksmetadata och användarspecifikt tillstånd, till exempel visningsförlopp. Filupptäckt, uppspelningsuppdateringar och klientuppdateringar är separata steg som sammanstrålar hos en serverbaserad auktoritet, så enheterna brukar överensstämma efter att servern har godkänt ändringen och varje klient har uppdaterats.

Servern är den gemensamma auktoriteten, inte de enskilda klienterna

Klienterna visar biblioteksvyer och skickar användaråtgärder, men den beständiga gemensamma katalogen finns på servern. Den arkitekturen gör att en tv och en telefon kan visa samma objekt utan att hela databasen kopieras mellan enheterna. Varje klient kan cachelagra presentationsdata, men den auktoritativa posten för biblioteksinnehåll och användarens visningsförlopp förblir centraliserad.

En medieserver är normalt auktoriteten för vad som faktiskt är tillgängligt och vad som har spelats upp av dess lokala användare. En användbar modell för informationskälla betraktar medieservern för uppspelning som åtskild från portabla spårningssystem. Samma princip förklarar Jellyfin-klienter: de samordnas kring serverns tillstånd i stället för att utse en vinnare bland jämställda enheter.

Den här modellen förenklar hanteringen av konflikter eftersom det finns en plats där godkända ändringar blir beständiga. En klient kan tillfälligt visa inaktuella cachelagrade data, men den blir inte en andra likvärdig databas bara för att den ännu inte har uppdaterats. Samordning innebär att återföra klientens vy till serverns godkända tillstånd.

Ändringar i filsystemet blir biblioteksdata genom serverbaserad upptäckt

När en mediefil läggs till, ersätts, byter namn eller tas bort ändras först lagringen, inte Jellyfin-katalogen. Servern måste upptäcka filsystemshändelsen genom en genomsökning, en övervakningsutlösare eller en automatiseringssignal, granska den berörda sökvägen och uppdatera sin indexerade representation. Först efter den lagringen kan klienterna ta emot den nya biblioteksvyn.

Riktade automatiseringsverktyg som riktade biblioteksuppdateringar finns eftersom upptäckten kan utlösas mer precist än genom att vänta på en bred schemalagd genomsökning. Den arkitektoniska principen är oförändrad: en filhändelse blir en serverbaserad biblioteksuppdatering innan den blir en gränssnittsändring mellan enheter.

Detta skiljer lagringens tillstånd från katalogens tillstånd under upptäcktsperioden. En fil kan finnas på disken medan klienterna fortfarande inte ser den, eller så kan ett indexerat objekt finnas kvar en kort stund tills borttagningen har behandlats. Att mäta tiden från filsystemsändring till uppdatering av serverindexet skiljer sig därför från att mäta hur snabbt en klient uppdateras efter att servern redan har sparat ändringen.

Visningsförloppet återgår till samma serverbaserade användartillstånd

Visningsförlopp följer en annan indata väg än filsystemsupptäckt. Mediefilen ändras inte när en tittare når minut fyrtio; klienten rapporterar uppspelningsstatus kopplad till den autentiserade användaren, och servern sparar den användarspecifika uppdateringen. En annan enhet som är inloggad på samma konto kan senare fråga efter det gemensamma servertillståndet och fortsätta från den godkända positionen.

Det är därför Jellyfin kan synkronisera visningshistorik mellan enheter på olika klienter utan att kopiera en lokal förloppsfil direkt mellan tv:n och telefonen. Båda enheterna samordnas eftersom de läser och skriver via samma användarpost på servern, inte för att de utför peer-to-peer-samordning.

Den observerbara gränsen är när skrivningen sker. Om en enhet blir frånkopplad innan dess uppdatering av visningsförloppet når servern kan en annan enhet med rätta visa det äldre servervärdet. När anslutningen återställs beror slutresultatet på vilken uppdatering applikationen godkänner och i vilken ordning. Lokalt visningsförlopp i offlineläge ska inte förväxlas med ett redan sparat gemensamt tillstånd.

Klienter samordnas genom att uppdatera från servern, inte genom att slå samman data med varandra

Efter att servern har sparat en ändring behöver klienterna fortfarande en uppdatering, händelse, navigeringsåtgärd eller efterföljande begäran som hämtar det nya tillståndet. En tv kan behålla ett inaktuellt affischrutnät i minnet medan en webbläsare redan visar uppdateringen. Den tillfälliga skillnaden är ett problem med presentationscache, såvida servern själv inte innehåller motstridiga poster.

Klienternas mångfald gör skillnaden tydlig eftersom olika Jellyfin-klienter kan visa samma server med olika gränssnitt och uppspelningsbeteenden. Om en klient verkar inaktuell medan en annan är aktuell bör du först kontrollera serverns tillstånd och sedan uppdatera eller ansluta om den avvikande klienten innan du betraktar skillnaden som en databas konflikt.

Den här skillnaden är viktig vid felsökning. Om två klienter inte överensstämmer ska du först fråga efter eller granska serverns tillstånd. Om servern har det förväntade värdet och bara en klient är inaktuell är uppdatering eller cachebeteende den troliga gränsen. Om servern själv saknar uppdateringen bör du undersöka upptäckt, behörigheter eller skrivhändelsen innan du skyller på den andra klienten.

Felgräns: Separata servrar samordnar inte automatiskt sina databaser

Modellen med en central auktoritet gäller inom en enda Jellyfin-serverinstans. Om ett hushåll kör två fristående servrar kan var och en samla på sig egna användare, visningsstatus, metadataändringar och ändringar i biblioteksdatabasen. Det finns inget generellt antagande om att databaserna kommer att upptäcka varandra och slås samman på ett säkert sätt bara för att de pekar på liknande mediefiler.

Verktyg för kommunikation mellan servrar, som uttrycklig synkronisering av visningsstatus, finns just eftersom oberoende medieservrar behöver en uttrycklig samordningsmekanism för gemensamt visningsförlopp. Verktyget kan synkronisera en definierad delmängd av tillståndet; det förvandlar inte två fullständiga Jellyfin-databaser till ett transparent kluster med flera huvudservrar.

Samma gräns gäller offlineenheter. En klient kan behålla en inaktuell lokal vy, men den bör inte betraktas som en auktoritativ databas som manuellt ska slås samman med Jellyfin. När flera skrivande komponenter eller servrar introduceras bör du definiera vilket tillstånd som är auktoritativt, vilka fält som synkroniseras och hur motstridiga uppdateringar löses innan du kallar designen ”samordnad”.

Genomför ett fyrastegstest av samordningen mellan två enheter

Använd två klienter som är inloggade med samma testanvändare och ett känt medieobjekt. Lägg först till eller byt namn på en testfil och mät tiden tills servern upptäcker den. Bekräfta sedan att båda klienterna får den nya katalogstatusen efter uppdatering. Ändra därefter visningsförloppet på klient A och bekräfta att klient B får det godkända servervärdet. Starta slutligen om servern och kontrollera att det sparade tillståndet finns kvar.

Den interna förklaringen av konsekvens för samtidiga tillstånd beskriver den kompletterande databasgränsen: godkända skrivningar behöver regler för transaktioner och ordningsföljd så att överlappande aktivitet inte visar halvfärdiga uppdateringar. Testet mellan enheter lägger till tidsaspekterna för upptäckt och klientuppdatering ovanpå den garantin för beständigt tillstånd.

Testet är godkänt först när servern är samma observerbara auktoritet efter varje steg: lagringsändringar indexeras en gång, båda klienterna samordnas kring samma biblioteksresultat, användarens visningsförlopp dupliceras eller förloras inte och en omstart återställer inte en sparad uppdatering. Om oenighet kvarstår ska du identifiera om avbrottet inträffade vid upptäckt, serverskrivning, klientuppdatering eller vid gränsen mellan separata servrar.

Vanliga frågor

Synkroniserar Jellyfin-klienter direkt med varandra?

Normalt inte. En telefon, tv, webbläsare och surfplatta samordnas via Jellyfin-servern: klienterna skickar uppdateringar till servern och läser senare serverns tillstånd. Om klienterna betraktas som jämställda repliker kan vanliga uppdateringsfördröjningar se ut som konflikter som egentligen inte finns.

Varför kan en Jellyfin-klient visa inaktuella biblioteksdata?

Servern kan redan ha sparat en biblioteks- eller uppspelningsändring medan en klient fortfarande visar en äldre cachelagrad vy. Bekräfta serverns tillstånd från en annan klient eller webbgränssnittet och uppdatera eller anslut om den avvikande klienten innan du undersöker upptäckts- eller databasproblem.

Kan två separata Jellyfin-servrar automatiskt synkronisera visningsförlopp?

Separata Jellyfin-servrar bildar inte automatiskt ett system med flera huvudservrar för tillstånd. Om samma användare måste kunna överföra visningshistorik mellan oberoende servrar bör du använda ett uttryckligt synkroniseringsflöde med en definierad informationskälla och testa konfliktbeteendet innan du förlitar dig på det.

Teknik- och AI-hubb

Mer att läsa

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.