All Activity
- Past hour
-
dscmv joined the community
-
Takiyao joined the community
-
Hi, Is there any chance someone could fix this please?
-
OneOfaKindDPC joined the community
-
ray993563@gmail.com joined the community
-
Cheo27 joined the community
-
Saad_1997 joined the community
-
CrackEmpfindlich joined the community
-
mansooral123 joined the community
-
Fanny1993 joined the community
-
Hi. Can you try searching for our standard android app (Just "Emby" on Amazon and "Emby for Android on Google) on the same device's app store and see how that compares? Thanks.
-
Of interest: https://www.themoviedb.org/list/5101-movie-collections?view=grid https://the-jh-movie-collection-official.fandom.com/wiki/Lists_of_films https://www.whatsafterthemovie.com/movies/list
- Today
-
media deletions are not logged in admin Dashboard > Activity
justinrh replied to justinrh's topic in General/Windows
I deleted 2 movies I recorded yesterday. "Last Train From Gun Hill" was not changed in any way before deletion. I don't see any errors in the log for deletion. "Law Abiding Citizen" I renamed the file (to *-ts.ts) and created another version (*-mkv.mkv) and I do see errors in the log after deletion. So maybe the is simply renaming the file since you didn't see an issue with multi-version. But I defer to your expert log analysis. (And, as a reminder of the other multi-version deletion problem, Emby still shows the item in the library 15min and counting after deleting it.) embyserver.txt -
SamES started following Can't remove an item from Continue Watching on Apple TV anymore?
-
Can't remove an item from Continue Watching on Apple TV anymore?
SamES replied to te5s3rakt's topic in Apple TV
Thanks. Yes, it was there but got lost in the changes to update the home screen. Fixed for the next release. -
Invalid id and password error - Amazon Fire Stick
Abobader replied to Zubalea's topic in General/Windows
Hello Zubalea, ** This is an auto reply ** Please wait for someone from staff support or our members to reply to you. It's recommended to provide more info, as it explain in this thread: Thank you. Emby Team -
Zubalea started following Invalid id and password error - Amazon Fire Stick
-
Running emby from the Amazon Fire Stick. Been doing that for years. A few months ago I started getting getting a message "Invalid ID and Password" error when login in to Emby. It works fine except for the error as it logs me in anyway. I also see the "failed to login attempt" on the Emby server dashboard. I tried reinstalling the app and clearing the cache. I even redid the login credentials. Still get the error. Any ideas? Thank you
-
No, old school I'm afraid.
-
Optimising Screen Updates and User Experience in the GenericEdit Framework
ginjaninja replied to ginjaninja's topic in Developer API
Thanks @softworkzfor your time, apologies for using an ai to complement my thoughts / understanding; i am trying to understand why when i tell a genericitemlist to have a certain icon or status or button status, the end result of what the user sees, does not feel deterministic (despite the server doing what it needs to do perfectly) eg a row which is NEVER told to have a status of Inprogress in any of the code, ends up having an inprogress status in the client UI (a spinning circle in other words); noise from a nearby row (which was in progress). (I am using UIBaseClasses from the SDK demo). So at the risk of outstaying my welcome, ive had another bite at the cherry at using an ai to aid understanding how to use a 'tracker' with locks as 'a single point of truth' to guarantee the client is showing the "real picture". To try and gain good will, i maintain it is not posted blindly it has been built up over my (admittedly naïve) observations/testing with ai support. Would you say any elements of this summary/understanding rings true or false or unnecessary. The Three-Layer Scope & Lifecycles To achieve absolute UI robustness and flawless navigation hydration, your system separations must be mapped across three distinct, decoupled lifecycles. Custom Framework Architecture & Scopes ┌────────────────────────────────────────────────────────────────────────┐ │ 1. GLOBAL PERMANENT APPLICATION SCOPE │ │ (Instantiated once at Emby startup. Lives 24/7 in system RAM) │ │ │ │ ┌──────────────────────────────┐ ┌──────────────────────────────┐ │ │ │ Domain Task Services │ │ Thread-Locked Trackers │ │ │ │ • Executes business logic ├───►│ • Single source of truth │ │ │ │ • │ │ • Passive data storage ONLY │ │ │ └──────────────────────────────┘ └──────────────┬───────────────┘ │ └─────────────────────────────────────────────────────┼──────────────────┘ │ Injected on Page Request ▼ ┌────────────────────────────────────────────────────────────────────────┐ │ 2. TRANSIENT RE-RENDERING ROUTER SCOPE │ │ (Short-lived. Created when user opens dashboard, killed on exit) │ │ │ │ ┌──────────────────────────────────────────────────────────────────┐ │ │ │ ControllerBase : IPluginUIPageController │ │ │ │ • MainPageController : ControllerBase │ │ │ │ • TabPageController : ControllerBase │ │ │ │ │ │ │ │ [The Core Factory Hook] │ │ │ │ └──► Emby executes native: CreateDefaultPageView() │ │ │ └────────────────────────────────┬─────────────────────────────────┘ │ └───────────────────────────────────┼────────────────────────────────────┘ │ Lazily executes active tab lambda ▼ ┌────────────────────────────────────────────────────────────────────────┐ │ 3. STATELESS RENDER SCOPE │ │ (Short-lived. Destroyed and fully reconstructed on every single push)│ │ │ │ ┌──────────────────────────────────────────────────────────────────┐ │ │ │ PluginPageView : PluginViewBase, IPluginUIView │ │ │ │ • AddMoviePageView : PluginPageView │ │ │ │ │ │ │ │ [The Component Data Model Hook] │ │ │ │ ├──► Reads state snapshot, wipes rows, populates list │ │ │ │ └──► Injects fresh layout: this.ContentData = new AddMovieUI(); │ │ │ └──────────────────────────────────────────────────────────────────┘ │ └────────────────────────────────────────────────────────────────────────┘ The Two Operational Pathways To State Change Data mutations inside the trackers are driven by two entirely separate execution flows. Both channels alter state uniformly within a thread-safe synchronization gate. Interaction vs Automation Processing Streams [ PATHWAY A: USER INTERACTION ] [ PATHWAY B: BACKGROUND AUTOMATION ] ┌───────────────────────────┐ ┌─────────────────────────────────┐ │ User Clicks UI Button │ │ Scheduled Task / Disk Poller │ └─────────────┬─────────────┘ └────────────────┬────────────────┘ │ │ ▼ Sends packed data string ▼ Triggers automatically ┌───────────────────────────┐ │ │ PluginPageView Subclass │ │ │ • Overrides RunCommand() │ │ └─────────────┬─────────────┘ │ │ │ ▼ Extracts IDs & dispatches │ ┌───────────────────────────┐ │ │ Domain Task Service │◄───────────────────────────────┘ │ (Runs core business logic)│ └─────────────┬─────────────┘ │ ▼ Updates data values via C# Thread Lock ┌───────────────────────────┐ │ Thread-Locked Tracker │ └───────────────────────────┘ The Double-Ended Synchronization Gate (Read/Write Locks) Because your background domain services (running on asynchronous worker threads) and Emby's page-generation requests (running on web server UI threads) happen in parallel, a mutual exclusion fence must guard both entry and exit points. Using the exact same memory traffic-light object (_stateLock), the tracker enforces an Atomic Transaction pattern to ensure data is never read or broadcast while it is fragmented. BACKGROUND WORKER THREAD WEB SERVER UI THREAD (Running Automated Operations) (Executing Emby Page Fetch) ┌──────────────────────────────────┐ ┌──────────────────────────────────┐ │ 1. Opens transaction payload │ │ │ ├──────────────────────────────────┤ │ │ │ 2. ACQUIRES WRITER LOCK │ │ │ │ (Traffic light turns RED) │ │ │ │ │ │ │ │ 3. Writing fresh data, progress, │ │ │ │ and modifying arrays... │ │ 4. Client HTTP request hits the │ │ │ │ server router. │ │ │ ├──────────────────────────────────┤ │ │ │ 5. Executes View Factory and │ │ │ │ calls: tracker.GetSnapshot() │ │ │ ├──────────────────────────────────┤ │ │ │ 6. BLOCKED BY READER LOCK │ │ │ │ (Traffic light is RED!) │ │ │ │ Thread pauses dead at gate... │ ├──────────────────────────────────┤ │ │ │ 7. FINISHES TRANSACTION │ │ │ │ Releases lock. Light turns │ │ │ │ GREEN. Raises StateChanged │ │ │ └──────────────────────────────────┘ │ │ ▼ Wakes up instantly! ┌──────────────────────────────────┐ │ 8. ACQUIRES READER LOCK │ │ (Traffic light is GREEN) │ │ 9. Safely copies complete, │ │ "whole and complete" snapshot.│ │ 10. Releases lock & draws rows. │ └──────────────────────────────────┘ The Writer Lock (The Commit): When a domain service needs to push updates, it packages the fields into a local, isolated temporary DTO bundle and commits them all at once inside a single lock (_stateLock) statement. The tracker never exposes properties mid-update. The Reader Lock (The HTTP GET Interceptor): The HTTP GET network command itself doesn't know what a lock is. However, your view constructor invokes tracker.GetSnapshot(), which forces the web server's UI thread through a matching lock (_stateLock) barrier. The Guard Reality: If the background worker thread is halfway through altering item status indicators, the UI thread handling the browser's fetch request is physically frozen at the gate processor line. It safely waits, preventing the generation of a corrupt or "torn" ContentData payload. The Client ID Deficit & Element Reconciliation Rules Emby's client engine does not maintain stable, persistent element IDs for structural containers like GenericListContainer or row items like GenericListItem. Because the client cannot reliably track if an item updates silently, shifts positions, or gets deleted, partial layout updates are completely impossible. The Destructive Rebuild Strategy [ Service Updates Tracker ] │ ▼ [ Push Scheduler Evaluates ] │ ▼ Passes 500ms Speed Gate? [ Target View Instance Fired: RaiseUIViewInfoChanged() ] │ ▼ Client receives WebSocket, sends HTTP GET ┌───────────────────────────────────────────────────────────────────────┐ │ CONTROLLER FACTORY LAYER (ControllerBase) │ │ │ │ • Emby executes: Task<IPluginUIView> CreateDefaultPageView(); │ │ • Triggering your tab lambda closure to construct a fresh View. │ └───────────────────────────────┬───────────────────────────────────────┘ │ ▼ Completely pristine memory initialization ┌───────────────────────────────────────────────────────────────────────┐ │ STATELESS VIEW FACTORY GENERATION STEP (PluginPageView) │ │ │ │ 1. Pulls immutable TrackerSnapshot │ │ 2. Instantiates completely clean UI arrays and list elements │ │ 3. Assigns brand-new data container: ContentData = new AddMovieUI() | └───────────────────────────────┬───────────────────────────────────────┘ │ ▼ Returns entire layout payload as fresh JSON ┌───────────────────────────────────────────────────────────────────────┐ │ CLIENT-SIDE DOM CLOBBERING │ │ │ │ 1. Client drops old layout fragment entirely due to missing IDs │ │ 2. Draws brand-new list structure from scratch instantly │ └───────────────────────────────────────────────────────────────────────┘ The User Action Interception Rules Because elements are completely destroyed and re-drawn without stable client-side tracking IDs, user buttons must carry their own identification context to pass back to the server. Where the Logic Sits: Interaction interception is completely stripped from the MainPageController. It runs natively inside your PluginPageView subclass by overriding the native SDK hook: public override Task<IPluginUIView> RunCommand(string itemId, string commandId, string data). Self-Contained Parameter Packing: To bypass the client-side ID limitation, every row-level button encodes its target domain unique ID and list index directly into its payload properties (e.g., CommandId = "SELECT", Data1 = string.Format("Select_{0}_{1}", entry.Id, i)). The Split Rule: The RunCommand method intercepts the postback string, splits it using token parameters (e.g., data.Split('_')), and cleanly forwards the separated context (Id and Index) to the long-lived business logic services, bypassing the controllers completely. The Client-Protection Gating Rule (Push Throttling) Because your stateless architecture drops and completely clobbers the layout on every update, rapid sequential data updates (like progress bars) will cause severe UI lag on low-powered client hardware. The push scheduler enforces a rigid 2 Hz speed limit blindly. The Safe Refresh Limit: Pushing updates must be restricted to a maximum of 2 times per second (2 Hz / 500ms minimum window) for fast-moving progress. The Implementation: The system pipes all tracker mutations through a time-gated scheduler. If the data tracker changes at 50ms intervals, the scheduler updates the in-memory values silently but drops the UI push request until the 500ms throttle timer expires. The Navigation Interceptor (Bypassing the Throttle): While progress ticks are throttled, direct user navigation (opening the page fresh, returning, or switching tabs) always bypasses the timer because Emby forces an immediate invocation of CreateDefaultPageView(), ensuring instant UI visibility. The Network Refresh and Redraw Loop When RaiseUIViewInfoChanged() fires blindly outside the tracker lock, it triggers a precise network and rendering chain reaction through the Emby core framework: [ UiPushScheduler ] ────► Calls activeView.RaiseUIViewInfoChanged() │ ▼ Fires underlying native SDK event ┌────────────────────────────────────────────────────────────────────────┐ │ 1. EMBY SERVER CORE (WebSocket Gateway) │ │ • Bundles a basic notify frame: {"Type": "UIViewInfoChanged", ...} │ │ • Broadcasts this raw frame out to all connected WebSockets. │ └───────────────────────────────────────────┬────────────────────────────┘ │ WebSocket Frame sent over Network ▼ ┌────────────────────────────────────────────────────────────────────────┐ │ 2. EMBY CLIENT APP (Chrome Browser ) │ │ • Receives the WebSocket frame. │ │ • Checks: "Am I currently displaying this view context?" │ │ ├───► (No) --> DISCARDS packet. End of loop. │ │ └───► (Yes) --> Fires automatic HTTP GET back to server for layout.│ └───────────────────────────────────────────┬────────────────────────────┘ │ HTTP GET /emby/UI/View?PageId=X ▼ ┌────────────────────────────────────────────────────────────────────────┐ │ 3. EMBY SERVER ROUTER & CONTROLLERS (MainPageController Initialization)│ │ • Catches HTTP request. Instantiates MainPageController. │ │ • Identifies which Tab was active via incoming URL variables. │ │ • NATIVE SDK EXECUTION: Calls: CreateDefaultPageView() │ └───────────────────────────────────────────┬────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────────────────────┐ │ 4. STATELESS TAB VIEW (The Final Render) │ │ • View Constructor reads an immutable snapshot: tracker.GetSnapshot()│ │ • Completely wipes old row listings to avoid ghosting or misalignment.│ │ • Maps fresh snapshot variables into clean UI components. │ │ • Sets content data property: ContentData = new AddMovieUI(); │ └───────────────────────────────────────────┬────────────────────────────┘ │ HTTP Response returns JSON Layout ▼ [ Emby Client App ] ────► Completely re-draws the Screen instantly. Core Robustness Rules (Why It Doesn't Break) ────────────────────────────────────────────────────────────────────────┘ Thread-Safe Locks (No Race Conditions): Mutating data fields inside the tracker uses a C# lock. Short-lived view factories consume a snapshot DTO (TrackerSnapshot), guaranteeing background threads never disrupt layout iteration or throw collection enumeration exceptions. Blind Push Throttling: Restricting layout broadcasts to 500ms, shields the client app from rendering loops. Heavy view generation runs only when a user is actively staring at the screen and responding to the network call. No Memory Leaks: Placing all background intervals, task hooks, and polling events inside permanent services completely cleans your view controllers, eliminating memory leaks from lingering handlers. Deterministic UI Layouts: Because the active tab factory completely wipes and regenerates your components from a unified state on every update, Emby's lack of stable client element IDs can never cause duplicate entries or misaligned rows. Bulletproof Navigation State: Whether a user stays on the page, switches tabs, or logs out and returns hours later, the freshly built view controller fetches directly from the continuous tracker, drawing accurate layouts every time. maybe if none of this is making sense, i will need to provide an example (of code) of the client ui going wrong. thanks again. Implementing some of this thinking has resulted in a stable ui but that could be pure coincidence without understanding. -
te5s3rakt started following Can't remove an item from Continue Watching on Apple TV anymore?
-
Can't remove an item from Continue Watching on Apple TV anymore?
te5s3rakt posted a topic in Apple TV
I could swear I used to be able to do this. I used to do it all the time. But now the option doesn't come up in the context menu anymore? Is this server controlled? Or was it removed? Running app version 2.0.7 (1) on Apple TV 4K. -
Je précise qu'il s'agit s'agit d'un nas QNAP TS-464
-
I'd recommend checking official Emby forums regularly for updates on plugins, as community members often share workarounds or new developments.
-
Plugin: EmbyCredits, detect end credits and add auto skip.
Babatom replied to yocker's topic in Plugins
Oh man, thanks a lot -
Plugin: EmbyCredits, detect end credits and add auto skip.
yocker replied to yocker's topic in Plugins
-
Roadmax started following Démarrage Emby éteint
-
Emby éteint, je ne trouve pas de solution pour allumer le server sans réinstaller une mise à jour. Y en a t'il une autre ?
-
When you click on them / open them, what do the server logs say? Is there an error? Can the server not read the files at all? We'll need some logs to get a clearer view.
-
Plugin: EmbyCredits, detect end credits and add auto skip.
Babatom replied to yocker's topic in Plugins
I installed it via the plugin store, but I'm still on v2.65.0; there's no way to trigger it manually, is there? -
People selling access to their server, making it a kind of Netflix services. The plugin then made it possible for them to sell hourly basis and automate it.
-
Janier182 started following Luke
-
I finally resolved the issue. It was caused by using NFS to store the service's database. I migrated everything, and performance is now perfect. Interestingly, however, the older version 4.8.11 does not experience a slowdown due to NFS. I tested it, and this issue is unrelated to the playback queue size. I disabled all transcoding when I ran the tests in the video above. Please feel free to ask if you need any further information.
- 6 replies
-
- docker
- slow performance
-
(and 1 more)
Tagged with:
-
I finally resolved the issue. It was caused by using NFS to store the service's database. I migrated everything, and performance is now perfect. Interestingly, however, the older version 4.8.11 does not experience a slowdown due to NFS. I tested it, and this issue is unrelated to the playback queue size. I disabled all transcoding when I ran the tests in the video above. Please feel free to ask if you need any further information.
- 6 replies
-
- docker
- slow performance
-
(and 1 more)
Tagged with:
-
Visual Indicator for Added (Stop when possible) Recording Time
Luke replied to PowerCC's topic in Feature Requests
OK we'll make the change. Thanks ! -
Upgraded to 80 devices but Emby is still only showing 50
jccrumpler1 replied to jccrumpler1's topic in MacOS
I have emailed them. I guess I will wait until they reply to my email. Thanks -
Upgraded to 80 devices but Emby is still only showing 50
Luke replied to jccrumpler1's topic in MacOS
Hi, please email billingsupport@emby.media Thanks ! -
jccrumpler1 started following Upgraded to 80 devices but Emby is still only showing 50
-
I canceled my 50 devices and upgraded to 80 premiere devices. Why after a restart is it still showing only 50 devices?
-
Hi, are you possibly confusing the password for this website vs the password for your user on your server? On your personal server you manage your own users and they have their own passwords on your server. So they are not "with Emby". Or perhaps you meant the software and not us/website.
