PM4K / PlexMod for Kodi (18, 19, 20, 21, 22+)

PM4K / PlexMod for Kodi

SOURCES

Code Repository
Issues (post bugs/issues here)
Discussions

Attention!

If you installed the latest stable or beta and have issues displaying posters, go to Settings > Network and enable “Force plex.direct mapping”.

Features (vs. official)

  • Maintained.
  • Very stable.
  • AV1 support
  • Compatible with Kodi 18, 19, 20, 21+ support (21/Omega is preferred)
  • Directplay anything (as long as your setup and Kodi supports it)
  • DirectStream support for every codec, not just AVC/MP3
  • Passthrough audio enhancements (e.g. prefer or force AC3/DTS depending on channel config)
  • Correctly identify and display video/audio streams (Atmos, DV, etc.)
  • Support all (+historic) watched marker styles
  • Add (auto-) intro/credits skipping
  • Add auto recap skipping
  • Modernized theme and assets
  • High performance UI
  • Chapters and virtual chapters in player
  • Optional TV binge-mode
  • Slow connection support (hotels for example)
  • Local/LAN server discovery and option to prefer local servers instead of secure connections
  • Real context-aware background images by default (not blurred to oblivion; configurable)
  • Optional solid-color-background instead of images
  • Optional post-play enhancements (via external addon settings)
  • Forced-subtitle selection configurable (non-forced can be enforced)
  • Improved photo playback/slideshow
  • Better resume and pre-play dialog (HDR/DV support, show resume time)
  • Add horizontal pagination for views
  • Show mark unplayed even if video in progress
  • Better/own PlayerProcessInfo (current stream info) implementation
  • Add vertical round robining for dialogs
  • Make background art blur and opacity configurable; display background art per item
  • Own Estuary-based skin, “Plextuary”, to reduce OSD-hiding-times and remove blurry backdrop while player is paused (install from repository)
  • Customizable player UI
  • Support SDH subtitle streams
  • Vastly improved music and photo handling
  • Path mapping support (SMB/NFS/… instead of HTTP streaming)
  • Automatic plex.direct domain handling (no need for DNS rebind exemption)
  • Selective library hiding per user per server
  • Selective hub hiding
  • Watchlist support

(many older changes have been merged into the official addon; but we’ve departed from the official addon pretty massively)

ko-fi


KNOWN ISSUES

  • Album/Playlist-playback UI somewhat broken (skip-next in player doesn’t work); since Kodi 19; also in official addon; help needed Might be fixed from 0.5.4 onwards.
  • On NVIDIA SHIELD standby Kodi loses its audio passthrough capabilities (SHIELD/Kodi issue). You can circumvent that by using the plugin “Sleepy Watchdog” from the Kodinerds repository to automatically exit Kodi after a timeout. PM4K now has built-in functionality to exit Kodi when the display goes to sleep. Look at the system options tab!
  • Playing audio tracks directly from search results is broken
  • Multi-part media resume is somewhat broken (also see here for watch state issues)

NOTABLE CHANGES

2025

  • Add watchlist support
  • Achieve stability on CoreELEC
  • Massive speedups when rendering huge libraries, collections, playlists

08/2024

  • CoreELEC workarounds
  • Templating engine
  • 16:10, 4:3 support

05/2024:

  • Use new common watched-states instead of unwatched
  • Easy mapping
  • Sections are now movable and hidable

04/2024:

  • Fix DNS rebind issues for Kodi 19 and above
  • Assets updated and player UI theme support
  • Path mapping added (SMB/NFS/local mounts vs. HTTP)
  • Hide all Kodi loading spinners when using 0.7.8 beta and Plextuary

03/2024:

  • Fix any DNS rebind issues, hopefully
  • Drastically improve performance

12/2024:

  • Add Movie reviews
  • Localization fixes for PMS API results (library names, (subtitle-) stream names)
  • Full DirectStream capabilities including not burning in subtitles

Introduction

This is an unofficial partial rewrite and evolution of Plex4Kodi.

The original codebase has been abandoned by the company for years by now.

PM4K aims for a Plex-like user experience but doesn’t necessarily adhere to official guidelines. Its UX is directly based off of user feedback, while retaining the Plex optics.

It is still based off of the original P4K source and critical bugfixes might be PR’d back, depending on the severity.

Installation (recommended)

  • Add https://pm4k.eu/ (or https://pannal.github.io/dontpanickodi/) to your Kodi installation as a source in file manager (Hit Add source in File Manager, click on the selected “<None>” in the list, enter https://pm4k.eu, OK, down, enter a name, hit OK)

  • Go to Settings->Addons, choose “Install from zip file”, choose the file source you added and install the repository

  • Install Plex via Settings->Addons->Install from repository->Don’t Panic->Video add-ons->Plex

  • Optional, recommended: Install Plextuary via Settings->Addons->Install from repository->Don’t Panic->Look and Feel->Skin->Plextuary

Installation (old stable only) - HEAVILY OUTDATED

  • Install “PM4K for Kodi” from the official Kodi repository
  • Install Plextuary skin using the above

Develop install:

Kodi Repository GitHub Source

Translation

You can help! Join the translation effort at POEditor (thanks for the free open source license, guys).

Changelog

1.3.19

Player / Playback

  • Core/Player: Possibly regain compatibility with Audio Offset Manager
  • Player: Adjust resume point by user setting
  • Player: Embedded subtitles: Fix parsing mis-tagged Kodi subtitle offset (stream tagged as “pt (BR)” for example gets parsed by Kodi as “pt-”, which is invalid)
  • Player: Avoid “skipping intro” blip when starting fresh with automatically skipping behind intro on start
  • Player: After playback, wait 0.5s to allow for enough time for codec teardown (might hang with a black screen due to kodi dialogs otherwise)
  • Player: Don’t error on close when seekdialog is already deleted
  • Player: Only fix embedded subtitles by short seekback if we’re not CE p3i >= T2 (T2 fixes this issue already)
  • Core/Player: Don’t end up with a broken UI when playback failed due to missing file (wait for the failure dialog to be dismissed by the user, for up to 10 seconds)
  • Core/Player: Fix double pausing on Alternate Seek and edge case (both cosmetic)
  • Core/Player: Only switch LAV modes if not already LAV Full or SB

Seek / SeekDialog

  • CoreELEC/SeekFix: Store reported seek player time and use it, if it massively differs from what the player tells us
  • CoreELEC/SeekFix: Stabilize fast seek fix (thanks @peaceoutt32)
  • CoreELEC/SeekFix: Wait until player actually paused when pausing for seek
  • CoreELEC/SeekFix: Prefer reported seek time over reported current player time if set and valid
  • CoreELEC/Seek back on start/SeekDialog: Implement a blackout screen during seeking back on start
  • Core/Player/Blackout: Show blackout until seek completely done
  • Core/Player: SeekBackOnStart: Add delay between forward and backward seek to give decoders time to stabilize (fixes VC-1 24p HW stuttering at least); default: 500ms
  • SeekDialog/Episodes/Movies: Increase scroll speed for too-long titles (5/15 to 35)
  • SeekDialog: Don’t react to SELECT/ENTER events on skip marker buttons during seek
  • SeekDialog: Allow pressing UP on the big seek chapter list with chapters disabled to access the skip marker button
  • Player/Seekdialog: Pre-skip markers before the resume point to avoid race conditions with tick()

Seamless Branching / LAV / Codecs

  • Core: Detect CE U3k builds above B9 that implement the alternative LAV filters for future auto-fixing of seamless branching titles
  • Core/Player: Auto switch to LAV Full/SB if possible (CoreELEC U3k B9+ detected)
  • Core/SB: Update seamless branching titles (thanks @Korbus)
  • Core: Detect avdvplus as dynamic seamless branching fix enabled build, starting with R2
  • Core: Detect CoreELEC p3i build as auto seamless branching fix capable build
  • VideoInfo: Show seamless branching state on audio streams of affected videos
  • Core/Codecs: Improve JOC audio detection substantially in some cases; lower JOC bitrate likelihood to 736kbit due to Plex server calculation bug (was 768)

Episodes

  • Episodes: Fill episodes after deletion (thanks @andybkma)
  • Episodes: Fix long scrolling episode titles cutting off remaining time pill
  • Episodes: Fix deleting an episode created a pagination placeholder
  • Episodes: Drastically improve initial loading time of episode view (> x10)
  • Episodes: Reduce wait on initial episode select
  • Episodes: Fix To Show and To Section in rare circumstances
  • Episodes: Be more resilient against missing item data and hung connections when closing window
  • Episodes: Delay initial busy state for 2.5 seconds
  • Episodes: Use thread for changing background on initial load
  • Episodes: Improve load times by batch fetching all to-be-reloaded episodes’ data in one go
  • Episodes: Optimize task load order
  • Episodes: Improve resilience against closing during initial load
  • Episode: During initial load, wait up to 4 seconds before executing user actions and debounce other input during that time

Watchlist

  • Watchlist: Adhere to new plex.tv watchlist limit of 100 items (was: 300; unannounced)
  • Watchlist: Fix watchlisted shows “To Show” menu option error on other than current server
  • Watchlist: Fix fully watched TV Shows not properly removed from Watchlist
  • Core/Watchlist: Show notification once an item has been automatically successfully removed from the watchlist
  • Core/Watchlist: Check for item watchlist existence before blindly trying to remove it
  • Watchlist/Movies: Don’t attempt to set codec info on watchlist items

Home / Hubs

  • Home: Resolve old fixme for update exit event
  • Home/LibraryHubs: Use poster view for in progress TV/Movie library hubs (was 16x9 view)
  • Home/LibraryHubs: Add “Remove from continue watching” option to TV/Movie library’s hubs in progress items as well
  • Home/Main/UserSelect: Refresh home users when receiving a 401 from plex.tv when switching home users, as its protected bit might have changed (pin set), retry two times
  • Home: Fix when entering a library quickly without showing its hubs, returning would show the wrong hubs
  • Home: Reinitialize properly and update hubs when GoHome action was triggered by Home button bind
  • Home: Consolidate multi list iteration for no reason
  • Home: Fix hub stops paginating when returning from library hubs to home hubs without clean update

Library

  • Library: Add PostersCompact and PostersSmallCompact views with no text (thanks @Rick_Williams)
  • Library: Go home when screensaver is activated (saves CPU usage)
  • LibraryWindow: Fix chunk callback edge case resulting in infinite recursion (rare case, when closing)

Movies

  • Movies: Reload video info after clearing cache or refreshing metadata PMS-side
  • Movies: Skip cache when reloading video info on reinit (returning from playback) (only when cache active)

Shows / Seasons

  • Show/Seasons: Don’t show fully watched state when an on-deck episode is being re-watched
  • Episodes/Movies/Shows: Include or exclude directors in cast lists

PostPlay

  • PostPlay: Fix wrong next-up item after re-playing the previously played item (e.g. played EP2, replaying EP2 from post-play, EP4 will be next up)

Settings (AddonSettings / User Interface / Video)

  • Settings: Fix ‘Video play completion behaviour’ options and translations
  • AddonSettings: CoreELEC Resume Seek Wait: Unclamp further down to 10ms, actually set correct default of 100ms
  • AddonSettings: Add “Use alternate seek” prefer reported time; default: On
  • AddonSettings: Add “Use alternate seek” wait for valid player time; default: Off
  • Settings: Add setting to blackout the screen while seeking back to start (Default: Off, CE/LG: On)
  • Settings/User Interface: Add setting to include or exclude directors in cast lists (user-setting, default: On (include))
  • Settings: Add “Ensure Kodi Addon position” (default: On)
  • Settings: Add setting to return home when screensaver is activated on a library screen (default: on)
  • Settings/Video: Add setting for auto seamless branching LAV mode fix
  • Settings/Videoplayer: Add setting to adjust resume points negatively on resume, to avoid lost content due to keyframes/seek behaviour (default: -3.5s)
  • AddonSettings: Add “Seamless branching LAV mode (CoreELEC U3k B9+)”, default: LAV SB
  • AddonSettings: Allow specifying a custom background color (when dynamic backgrounds are disabled); overrides preset colors if set
  • AddonSettings: Make Seek back on start delay configurable
  • Main: Allow not showing any played/unplayed indicators at all
  • Settings: Extend User Interface/Played indicators with option “None”

Core / Internal

  • Core: Ensure we’re updating our lastused value by running our plugin endpoint with a stub value after exiting
  • Plugin-Endpoint: Support stub-run
  • Core: Do not update lastused value when ran from plugin endpoint initially
  • Core: Re-jig waitForOpen
  • Core/SignIn/Auth: Fix wonky first start of plugin (home shown briefly after device auth and user select)
  • Core: Future-proof template engine (ibis) (thanks @tuffghost)
  • Core: Fix compatibility with Python 3.14 (3.14.2) (might break certain assumptions) (U3k B10)
  • Core/Mixins: Implement TasksMixin
  • Core/AddonSettings: Reduce default requests cache expiry from 7 days to 3 (increasing sqlite db size could yield diminishing returns)
  • Core/Plexobjects: On data retrieval error, clear cache for item(s)
  • PlexObjects: ListItems() and reload(): Allow returning and using raw etree data instead of parsing elements
  • Seasons/Episodes/Movies: Postpone less important tasks to speed up initial load
  • Main/Core: Show busy background on user switch

Theme Music

  • ThemeMusic: Only locally cache theme music if server is remote (not on local LAN nor plex.tv/watchlist)
  • ThemeMusic: When fading, only use sync/wait on final setVolume value, not on the intermediates (reduces blocking)

Translations

  • i18n: Update Spanish and Hungarian translations

1.0.5d

  • Core/Plex.direct: Only check native resolving of hostnames containing plex.direct
  • Core/Plex.direct: Reset mapped hosts if the user skips the confirmation dialog
  • Core/Plex.direct: Fix long-existing issue with multiple servers in certain circumstances not triggering plex.direct host mapping check
  • Core/Plex.direct: Force mapping if requested
  • Core/GDM: GDM could still be reported as active under certain circumstances
  • Core/MyPlex: Consider a device that is product=“Plex Media Server” as a server as well, even if it doesn’t provide the correct attributes (can happen; very rare)
  • Core/PlexNet/CoreELEC: Properly report device and platform parameters to Plex.tv
  • Player: Don’t throw away progress data during consecutive watch sessions; properly represent watched state in current video playlist during those
  • Player: Honor “Never show Post Play” properly even when an episode has ended
  • Player/Timeline: Never allow timeline reporting below 0 seconds
  • Player: SeekBehind: Never allow seek target to be < 0
  • Player/SeekDialog/AltSeekFix: Never react to seek attempts while we’re waiting for a seek to happen
  • Player/MDE: If we don’t want a subtitle, report it properly to the Plex server (still bugged, probably server-side)
  • Libraries: Move filter options out of the header area to fix overlapping music player and long filter descriptions
  • Libraries: Unify and optimize play/filter/jumplist/scrollbar navigation
  • Libraries/Listviews/Squares: Autoscroll long description texts
  • Libraries/Photos: Fix PhotoDirectory browsing
  • Library/Movies: Add filters for Writer, Producer, Editions, Audio Language, Subtitle Language, Folder Location (only if admin)
  • Library/Shows: Add filters for Director, Writer, Producer; correctly separate Studio and Network filters
  • Libraries: Store subfilter states
  • Libraries: Re-select currently selected items in filter dropdowns
  • Libraries: When re-opening applied filters, re-open all subfilter dropdowns until we reach our current one
  • Libraries: Cache subfilter content
  • Libraries: Depending on which “side” of the library view we are, when pressing “up”, select either the left buttons or the right buttons
  • Libraries: Enable fast navigation through subfilter lists via scrollbar
  • Library/Movies: Allow filtering by HDR and DOVI; allow multiple boolean filters at the same time
  • Library/Photos: Fix filtering
  • Libraries: Allow filter clearing for boolean filters
  • Libraries/Movies: Add “year” and “progress” sort types
  • Libraries: Shows/Movies use sort order from PlexWeb
  • Libraries: Movies: Show current sort reference value if possible in addition to movie year
  • Libraries: Photos: Properly implement PlexWeb sort; fix display
  • Libraries/PosterSmall: Fix vertical cutoff
  • Libraries/Posters/PostersSmall: Scale and position scrollbar appropriately when moving down
  • Libraries: Re-select currently used item type and sort attribute in dropdowns
  • Dropdown: Allow opening a sublist by pressing RIGHT
  • Dropdown: Show scrollbar if a (child-)dropdown needs scrolling
  • Dropdown: Fix shadow size; perfect shadow positioning
  • PostPlay: Remove leftover bifurcation line
  • SeekDialog: Be smarter about playerprocessinfo/playerdebug/PM4K stream info (press left/right)
  • Settings: Make the combined continue watching/ondeck hub default enabled
  • Settings: Add setting “Force plex.direct mapping” (default: False)
  • Settings: Sanitize defaults (“Loop Theme Music” off vs on, “Home: Resume in-progress items” off vs on)
  • Settings: Temporarily remove “custom” theme setting as it’s been broken for a while now
  • Settings: Rename “Episodes: Skip Post Play screen” to “Episodes: Continuous playback” to make functionality clearer
  • AddonSettings: widen maximum for “Use alternate seek” wait for seek to 5000 (was 2500)

Older changes

33 Likes
Plex addon for kodi
Plex addon for KODI 20 Not Working
Plex-For-Kodi Add-on
Plex For Kodi, Missing functionality
Plex on Fire Cube home screen promoting adult content
Plex addon for KODI
Are there any Plex HTPC client devices that support HDR10+
Files with both HDR10+ & DoVi Profile 8.1 metadata show blank/black screen
Time to wake up plex-for-kodi addon
How do I access my local Plex server on my NAS in Ubuntu
Refresh Rate Switch don’t working panel stays on 60 Hz
Yet another hardware recommendation request for HTPC
Plex Client on Zidoo Z9X Pro – Features and Compatibility
Unable to cast to Rasplex clients
NAS Empfehlung gesucht
Plex HTPC Support for older Windows Versions
How can I get Plex to play the next file in playlist or collection automatically?
Plex auf Raspberry PI3 zeigt keine Bilder mehr an
Plex-media-player 2.58.1 loading indefinitely for any Movie/TV show. Web works fine
Compatibiliti of 1.40.2 server version with rasplex
SRT Untertitel Font wechsel
Plex HTPC on LINUX ARM64 is possible?
Please add a DV P7 -> P8 conversion feature in Android TV app
Using the Plex Add-on in Kodi, for 5.1 FLAC playback on Nvidia Shield
PlexKodiConnect: Kodi Plex Integration Done Right
PlexKodiConnect: Kodi Plex Integration Done Right
How can I install the plex app (not server) on debian arm64
Plex HTPC build for aarch64 on flathub
Always transcoding (web, smart TV with Tizen) while no transcoding (Android devices, Windows 11 app)
Sideload old Plex app
Watched Checkmark VS Unwatched Orange Corner
Several media collection not shown in movies
Something happened to the way Plex scanned / categorized music?
Umstieg von Kodi zu Plex
Files with both HDR10+ & DoVi Profile 8.1 metadata show blank/black screen
Correctly identify & display Dolby Atmos, dts:X, and dts-HD MA audio tracks in Plex clients
Stuttering on XBox Series X
How can I get Plex to play the next file in playlist or collection automatically?
Please explain passthrough to me
Plex wont load anything on kodi 19, vero 4k+

The participation is low! Please participate!

Download P4K Kodi19 Testing branch: Kodi19 Branch Snapshot
Download P4K Kodi19 with all the awesomeness

2 Likes

Where should error reports go with your custom additions? Into the same GH project?

Sure, that’d be fine, at least for the unmerged changes. I’ve enabled the issue tracker there.

1 Like

Hi, some general feedback on the version with the additional updates etc. I’m using Kodi 18.4 on a Sony Bravia TV.

  • Cannot view photos in photo libraries - I just get the generic background image. Videos in photo libraries actually playback ok
  • When viewing a video it is not possible to use the timeline to skip backwards or forwards - video stutters but returns back to the original position

I think these are easily reproducible but if it would help to open a github issue let me know.

EDIT by the way its great to see some work on Plex for Kodi, much appreciated! Kodi works best for 4K on my tv and can always be relied on

1 Like

These are actually not easy to reproduce as the behaviour doesn’t appear neither on Windows nor OSMC. A Github issue would help, as well as logs.

1 Like

Stumbled across this, looks like great work. Plex is the only add on I use. I was trying to get it installed on Kodi with Apple TV but so far no such luck. Couldn’t figure out how to get the zip file over to install it.

I think this works only with Desktop players and not with hardware platforms like ATV and Roku, etc.

1 Like

That’s a shame. I was looking for a solution I thought I had found it.

I don’t think that’s true. You might not be able to install the preview version, yes.

But you can install the official release version, because it is available in the official add-on repository. It can be installed right from inside Kodi.

2 Likes

Trying “awesomeness” version.

Kodi is version 18.5 on LibreElec 19.2.0
Hardware Asus Chromebox with external USB dac for audio

So far have tried running a large random music mix.
tried a movie trailer followed by a movie play… all good.

Seems so much faster than the default addon version. Not as clunky,

If I bounce out of it and back to Kodi main, I can’t get back to the addon, does not start. I suspect this may be due to my having KodiPlexConnect enabled?

anyway, let me know what specifically you’d like tested if anything.

Nice to see someone working on this stuff.

Wishlist: more music stuff ie. plexamp integration, random shuffle radios

thx -bruce.

I can install the usual plex add on but not this due to the method.

I’ll need to figure out how to get it in a repository for kodi to take it from there.

I test it on a nvidia shield with latest kodi 19 nightly, glad to have this addon updated, very nice job. No crash, art is back, god job. Now, If only you could implement the audio theme like the native plex for android tv does, it would be perfect.

Can I ask how you got the add on installed on shield? Do you save to device first?

Yeah, I saved the zip to a network share mounted on the shield. Then in kodi, addon, install from zip.

I still can’t get this to work on my Apple TV. Can’t get the file to install. Is it on a repo or can anyone put it on one? I tried but got stuck with it all.

I tried out this plugin again, and it seems to work mostly fine with the exception that for the first 20-ish seconds of any video there is no subtitles. Anyone else noticed something like that?
Using Kodi 18.5 and this version of the addon https://github.com/pannal/plex-for-kodi/archive/develop_kodi1819.zip

3 Likes

@sensei321 I do not experience that behaviour using an MP4 with (external) SRT subtitles on Kodi 18.5. Using a movie which has subtitles pretty much from the start.

Thanks @panni for your fork, it seems to have improved slow artwork loading. Shame Plex does not update the official kodi plugin anymore.

1 Like

Hi, Ik had al diverse plex addons geprobeert, maar allerlei install fouten, zowel install vanuit .zip of repository. maar deze werkt op mijn net geinstalleerde nieuwste Matrix Kodi fantastisch.

Interesting. I think the files I used were mkv with internal subs. I’ll check some more.