Mac Player stuttering video playback

Server Version#: 1.41.4.9463
Player Version#: 1.108.1.307-dd5b87aa
<If providing server logs please do NOT turn on verbose logging, only debug logging should be enabled>

Somewhere between player 1.106.0.276 and 1.108.1.307 the Mac player started stuttering during playback. I can’t find older versions to download to find the exact regression point, but if I roll back to 1.06 the issue goes away until I get forced to auto update (can I disable that?).

This seems to happen for any video regardless of frame rate, codec, resolution, etc. It will play smoothly and then for a few seconds seem to be at about half the frame rate or less, then become normal again. This will repeat every 10 seconds or so.

I have Enable Refresh Rate Switching enabled but leave my display settings to 24 FPS by default, so it will only occasionally switch to 25, 30, etc for certain TV shows. Disabling this doesn’t seem to change anything.

If I had to guess, 1.107.2 might be where this was introduced, since the release notes say “Corrected playback of HDR content on MacOS” though I’m not playing any HDR content.

Can I download that specific version to test? I don’t see links to old versions.

Nobody else is experiencing this? I had to roll back to an old version and disable auto-updating because it would keep forcing me to a new version that stutters.

YES ! Thank you, I have an old macbook and now the app has become unusable and I have to use the web player via google chrome in order to be able to watch anything without the app to stutter like crazy !

In the dev team, any tips on why this issue ?

I noticed this on my M4 Mini with everything I played tonight. Turning off both Use Hardware Decoding and Enable Refresh Rate Switching seems to let it work properly. If either one is enabled I get the stuttering.

The problem happens on my M4 Mini but not my M2 15" Macbook Air. Both are currently on Mac OS 15.3.1 and Plex 1.41.4.9463.

Thanks for the hint on “Use Hardware Decoding” and “Enable Refresh Rate Switching” combined causing an issue. I’ve downgraded to an older version temporarily since I want to be able to use these features.

Is there any idea from the Plex team why this is happening and how to fix it?

Since this issue has been confirmed by others, is this something which can be addressed in a future update?

Similar problem here with my M1 using server version Version 1.41.6.9606. Plays fine and then stops, with the orange ring turning. Sometimes it resumes, sometimes it doesn’t. I used my mac exclusively for Plex Serving except for some browsing occasionally.

I was wondering whether it didn’t have the power but this happens with light weight, low- bit-rate x264 so it’s a neither transcoding problem nor a bandwidth. I should mention that all my devices are hard wired with 1GBs ethernet. It’s happened with my Apple TV, Roku, and Samsung Plex clients so the common denominator is the server software.

I’ll try the tricks mentioned about. Thx.

I had to roll back to a much earlier version of the Plex app to avoid the stuttering. Has there been an update to fix this yet?

Same problem.
Deactivating hardware acceleration and VRR switching helps.

It also appears to work better in windowed mode than in full-screen or maximised mode.
However, switching to low quality in the playback settings doesn’t help.

Mac Mini 2018 i5, 8 GB.

Any official statement?

I looked into this yesterday and it appears to have been a change in how MPV is built when we upgraded it. Several things changed in MacOS rendering so I’m not totally surprised that something like this happened but we missed that it occurred because it was working (and seems we were testing on machines that were too performant to notice the change).

In short, if you use HTPC and look at the debug overlay, you’ll see videotoolbox-copy (the same occurs in Plex for Mac but you’d have to look at the logs to see this). That means it is using videotoolbox for hardware decoding (which is correct) but the -copy means the after the hardware has decoded the picture, the picture must be copied from the GPU to the CPU and then back to the GPU for display. This is why disabling hardware acceleration may help as it skips that first copy.

I’ve gotten the newer MPV to build locally enabling videotoolbox-gl which is MPV’s mechanism to display the decoded picture directly in OpenGL without the copy to CPU and back. This is what was used previously and got lost. It required some modifications to MPV as it seems that it was not intended to build with the option without building the standalone application whereas we just want the library.

Ah great news that there’s progress on understanding the cause. I’ve been living on a very old version of Plex, so it will be great to get an update that fixes this.

I can confirm the issue is not present in PlexHTPC-1.59.0.121-1c051efb-universal. The bug appears somewhere between HTPC version 1.59 and 1.70, which was the next time I “updated”.

Be sure to save old versions of all Plex software as old versions are not made available for download. PM me if you would like a link to the old version

With the info above on MPV copying between GPU/CPU/GPU, and the other linked related issues, is enough known about this issue now to fix it?

Nope. they’re too LAZY. Tried to run me in circles submitting logs for the same (known) issue.

1 Like

I wish we had an update to the Plex player app. The issue is quite annoying ad it’s a bit sad to see Plex stutter and/or use massive resources on local, passthrough content, when the TV+ app plays 4k without ever triggering the fans on my Mac.

I peeked inside the app and it doesn’t look like mpv is integrated as a standalone executable. It’s probably integrated in the Plex executables, which implies that even though mpv is open source, we can’t re-compile it on our own and replace the copy in the Plex app. We have to wait for an update :frowning:

I fixed this a couple months ago and it just need someone to make the release. HTPC has had a release cycle with the fix since then. Sadly I no longer work for Plex so I can no longer help in this regard.

It’s a separate library. See libmpv2.dylib in the Frameworks dir. MPV is compiled under the LPGL license and so linking it into the binary is a violation of the license. That’s why it is a separate library and the LGPL requires that users be able to substitute the library. In fact, I had made a post on how to do this on Windows: HTPC Tips and Tricks - #3 by gbooker02 . So if you are willing to build yourself (and deal with app signatures), then you can use your own MPV.

You may be able to take the MPV out of the current HTPC app but you would likely also need to grab its libav* and PlexMediaServer.framework as well as I think FFmpeg was bumped since then. Even then this particular combination may not work.

1 Like

gbooker02, thanks a million for taking the time to provide all the details. Much appreciated.

I hope the fix will make it in soon (and I might try to toy around with the library in the meanwhile).

(and if anyone is interested, you can use Homebrew to compile mpv - with mpvlib - automatically and with the proper OpenGL options - much easier than having to do it by hand).

I built mpv and its library using Homebrew: brew install mpv

I renamed the library inside Plex, then symlinked the newly built one there: sudo ln -s /usr/local/Cellar/mpv/0.40.0_2/lib/libmpv.2.dylib /Applications/Plex.app/Contents/Frameworks/

And Plex seems happy. It’s launching and playing movies at least, implying I didn’t really break anything too badly :-> I’ll have to test to see if there are real improvements.

The Homebrew-gnerated build seems fairly up to date, with ffmpeg 7.1.1 and the videotoolbox-gl options:

[cplayer] mpv v0.40.0 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects

[cplayer] libplacebo version: v7.351.0

[cplayer] FFmpeg version: 7.1.1

[cplayer] FFmpeg library versions:

[cplayer] libavcodec 61.19.101

[cplayer] libavdevice 61.3.100

[cplayer] libavfilter 10.4.100

[cplayer] libavformat 61.7.100

[cplayer] libavutil 59.39.100

[cplayer] libswresample 5.3.100

[cplayer] libswscale 8.3.100

[cplayer] Configuration: -Dbuild-date=false -Dhtml-build=enabled -Djavascript=enabled -Dlibmpv=true -Dlua=luajit -Dlibarchive=enabled -Duchardet=enabled -Dvulkan=enabled -Dprefix=/usr/local/Cellar/mpv/0.40.0_2 -Ddatadir=/usr/local/Cellar/mpv/0.40.0_2/share/mpv -Dlibdir=/usr/local/Cellar/mpv/0.40.0_2/lib -Dmandir=/usr/local/Cellar/mpv/0.40.0_2/share/man -Dsysconfdir=/usr/local/etc/mpv -Dbuildtype=release -Dwrap_mode=nofallback

[cplayer] List of enabled features: avfoundation bsd-fstatfs cocoa coreaudio cplugins darwin ffmpeg gl gl-cocoa glob glob-posix gpl iconv javascript jpeg lcms2 libarchive libass libavdevice libbluray libdl libplacebo luajit mac-thread-name macos-10-15-4-features macos-11-3-features macos-11-features macos-12-features macos-cocoa-cb macos-media-player macos-touchbar posix posix-shm rubberband rubberband-3 swift uchardet vapoursynth vector videotoolbox-gl videotoolbox-pl vk-khr-display vulkan zimg zimg-st428 zlib