iwalton3 / plex-mpv-shim

Cast media from Plex Mobile and Web apps to MPV. (Unofficial)
MIT License
363 stars 20 forks source link

Not working with newest plex media server version #24

Closed Puff0 closed 3 years ago

Puff0 commented 3 years ago

With the newest plex media version installed (1.20.2.3402), mpv shim won't connect to either the plex windows client or web client. The "select a player" button lists plex mpv shim as connectable but when you click it nothing happens. I reverted back to version (1.20.1.3252) and it works.

iwalton3 commented 3 years ago

I wonder if https://greasyfork.org/en/scripts/398049-mpv-shim-local-connection still works or if that has suffered bitrot too?

Puff0 commented 3 years ago

I just upgraded back to 1.20.2.3402 and with the extension it works even though my server is local. But unfortunately that doesn't help with the desktop app.

iwalton3 commented 3 years ago

Of course. But what that tells me is something has likely gone very, very wrong. The control via the web app historically proxied through the Plex server, but the desktop app shouldn’t need that.

LAP87 commented 3 years ago

I can also chime in and say that it isn't working anymore since i updated the server this morning, sad, i had just fallen in love with the plex mpv shim, benching Fairy Tail anime which defaults to song/signs and english dub, MPV shim auto-setting the -correct- lang/sub was amazing to me.

iwalton3 commented 3 years ago

Yeah I'm going to have to spin up a dev environment and look at this soon.

iwalton3 commented 3 years ago

I have tested this and unfortunately I have nothing good to report. So the way that Plex casting works is it advertises using a UDP protocol. The Plex clients can then listen for these messages and then talk to the client by connecting over HTTP.

Of course, a web application can't connect directly to these Plex clients over HTTP, as web apps are only allowed to communicate with HTTPS servers unless they run insecurely. (Additionally there is the same origin policy, but CORS could be used to bypass that.) Plex works around this issue by proxying the traffic to the clients through the local Plex server and also discovering clients using the Plex server.

In this latest Plex server update, that endpoint on the Plex server responds with a 404: image

This affects not only MPV Shim, but also casting from web to Plex Media Player and to the mobile app. For the mean time, you can still cast to MPV Shim by using the Local Connection script or by using the iOS app. I'm not sure about Android.

I'm unsure if the casting API being removed is a mistake, but there isn't really an easy way around it. There is a long-poll based API that Plex Web uses to advertise itself, but it is a lot of work to implement and would require you to log into the MPV Shim client with your Plex credentials. The removal of the navigation buttons in the iOS app seem to suggest that the cast API is not a priority or may be being deprecated.

Pull requests are welcome to implement the other API, but I don't plan on working on it any time soon. I would suggest contacting Plex and asking why this API has been removed. For now the workarounds are:

If you like the MPV Shim client, the Jellyfin variant is fully working and has many features that are not possible to implement in the Plex version.

enchained commented 3 years ago

@iwalton3 Oh, that's too bad, I hope it's really just a bug since it doesn't work between the official players too. Did you report that to Plex somehow? Please tell if they'll reach out.

I'm using iPad to switch to TV and back so it doesn't affect me YET, but will hold off on updating the server for now. Could you please elaborate on the "The removal of the navigation buttons in the iOS app"? I'm using the beta and didn't notice anything, which buttons are you talking about?

I haven't used Jellyfin, but was curious to see which extra features it has. Whoa, Syncplay? I'm using it daily! Is it one of those that are not possible to implement for Plex? And the Discord activity is cool too. I must definitely look into the Jellyfin, I guess the time has finally come. I hope it can run with the same libraries as Plex without conflicts.

iwalton3 commented 3 years ago

I have not reported anything yet, but it looks like some people might have posted about it on the forum. My hope is that it is a bug affecting all clients that’ll be fixed, and not deprecation of the cast proxy API.

The navigation button issue is that you can’t open the menu for the arrow buttons from the mobile app anymore, which makes it impossible to access the application menu from mobile.

If you want to try Jellyfin, you can run it with the same library structure as Plex with no conflict.

enchained commented 3 years ago

The navigation button issue is that you can’t open the menu for the arrow buttons from the mobile app anymore, which makes it impossible to access the application menu from mobile.

Still not sure what you're talking about, I guess I didn't use that feature or the issue is not present in my version. Which version number of the app is affected? Is this something during the cast specifically? Arrows as the ones for video playback skipping?

If you want to try Jellyfin, you can run it with the same library structure as Plex with no conflict.

That's great, thanks.

LAP87 commented 3 years ago

I'm trying out Jellyfin right now on Win10, but all my content is on an rclone drive mount and adding media is either taking a really long time, or it hangs at a certain part.. So i'll probably stick with Plex, not impressed with Jellyfin tbh.

Puff0 commented 3 years ago

Just wanted to add some good news as of version 1.20.3.3421 of plex the issue is fixed. Its in beta right now so you need a plex pass to download the update. I tried it and so far through my testing it seems to be all good now. So your theory of them accidentally removing the api was right, I have no idea how they somehow break crucial parts of their code with every release. Thanks for the quick response though I will close the issue once they official release the update and I can test it more or if you would like you can close the issue now.

Thanks again!

Puff0 commented 3 years ago

Closing this issue since its fixed with the release of plex media server 1.20.3.3437. If anyone else is having the issue described, make sure you try to upgrade your server to the most recent version. Thanks a lot for your hard work on this program!

skydiscover commented 3 years ago

Sorry to post in an old thread, but I encountered a very similar issue with plex server version > 1.23.3.4707. I can select the player, but when trying to start a video, I get an playback error both in the plex server web ui and the android app.

As a workaround I downgraded my server to 1.23.3.4707 but I though you might want to know.

Puff0 commented 3 years ago

Sorry to post in an old thread, but I encountered a very similar issue with plex server version > 1.23.3.4707. I can select the player, but when trying to start a video, I get an playback error both in the plex server web ui and the android app.

As a workaround I downgraded my server to 1.23.3.4707 but I though you might want to know.

Update to latest plex mpv shim version. I can confirm that this issue is fixed with version v1.10.1.

LAP87 commented 2 years ago

@iwalton3 i think it stopped working again, haven't been able to start a stream for last 2 days now (using Firefox browser v92.0.1 and plex media server version 1.24.3.5033) It also isn't working with the local connection script, and i have tried reinstalling mpv-shim (x64 windows)

2021-10-02 00:41:47,984 [ INFO] Using libmpv1 playback backend. 2021-10-02 00:41:48,031 [ INFO] Loading shader profile anime4k-x2-perceptual-deblur. 2021-10-02 00:41:48,031 [ DEBUG] Set MPV setting deband to True 2021-10-02 00:41:48,032 [ DEBUG] Set MPV setting deband_grain to 0 2021-10-02 00:41:48,032 [ DEBUG] Set MPV setting deband_range to 12 2021-10-02 00:41:48,032 [ DEBUG] Set MPV setting deband_threshold to 32 2021-10-02 00:41:48,032 [ DEBUG] Set MPV setting hwdec to auto-copy 2021-10-02 00:41:48,032 [ DEBUG] Set MPV setting profile to gpu-hq 2021-10-02 00:41:48,033 [ DEBUG] Set MPV setting gpu_api to opengl 2021-10-02 00:41:48,033 [ DEBUG] Set MPV setting fbo_format to rgba16f 2021-10-02 00:41:48,033 [ DEBUG] Set MPV setting dither_depth to auto 2021-10-02 00:41:48,033 [ DEBUG] Set MPV setting dither to fruit 2021-10-02 00:41:48,034 [ DEBUG] Set shaders: ['C:\\Program Files (x86)\\Plex MPV Shim\\plex_mpv_shim\\default_shader_pack\\shaders\\noise_static_luma.hook', 'C:\\Program Files (x86)\\Plex MPV Shim\\plex_mpv_shim\\default_shader_pack\\shaders\\noise_static_chroma.hook', 'C:\\Program Files (x86)\\Plex MPV Shim\\plex_mpv_shim\\default_shader_pack\\shaders\\Anime4K_3.0_Upscale_CNN_M_x2_Deblur.glsl', 'C:\\Program Files (x86)\\Plex MPV Shim\\plex_mpv_shim\\default_shader_pack\\shaders\\Anime4K_3.0_ThinLines_HQ.glsl', 'C:\\Program Files (x86)\\Plex MPV Shim\\plex_mpv_shim\\default_shader_pack\\shaders\\Anime4K_3.0_DarkLines_HQ.glsl', 'C:\\Program Files (x86)\\Plex MPV Shim\\plex_mpv_shim\\default_shader_pack\\shaders\\Anime4K_3.0_Deblur_DoG.glsl', 'C:\\Program Files (x86)\\Plex MPV Shim\\plex_mpv_shim\\default_shader_pack\\shaders\\Anime4K_3.0_Denoise_Bilateral_Mode.glsl'] 2021-10-02 00:41:48,138 [ INFO] Started GDM service 2021-10-02 00:41:48,139 [ INFO] Started HTTP server 2021-10-02 00:41:52,785 [ DEBUG] HttpHandler::handle_request request from 'Firefox' to '/player/timeline/poll?commandID=0' 2021-10-02 00:41:52,785 [ DEBUG] RemoteSubscriberManager::addSubscriber added [v01386xbzmkf7i20mpu8klwa] 2021-10-02 00:41:52,816 [ DEBUG] HttpHandler::handle_request request from 'Firefox' to '/player/timeline/poll?commandID=0&wait=1' 2021-10-02 00:41:52,817 [ DEBUG] RemoteSubscriberManager::addSubscriber refreshed v01386xbzmkf7i20mpu8klwa 2021-10-02 00:41:52,817 [ DEBUG] RemoteSubscriber::refresh v01386xbzmkf7i20mpu8klwa (cid=0) 2021-10-02 00:41:55,308 [ DEBUG] HttpHandler::handle_request request from 'Firefox' to '/player/playback/playMedia?providerIdentifier=com.plexapp.plugins.library&protocol=https&containerKey=%2FplayQueues%2F3462%3Fown%3D1&address=192-168-0-249.6c4fda5b10244e9a8b47cecec85cd16f.plex.direct&port=32400&token=REDACTED&key=%2Flibrary%2Fmetadata%2F97130&offset=1047000&machineIdentifier=7f7f8c154abbf072d61478b8da7821bb1a86208c&type=video&commandID=1' 2021-10-02 00:41:55,309 [ DEBUG] get_plex_url Created URL: https://192-168-0-249.6c4fda5b10244e9a8b47cecec85cd16f.plex.direct:32400/library/metadata/97130?includeMarkers=1&X-Plex-Token=REDACTED&X-Plex-Version=2.0&X-Plex-Client-Identifier=44faae21-1778-41bc-95ef-d204062d03e0&X-Plex-Provides=player&X-Plex-Device-Name=Fr%C3%B6vi-dator&X-Plex-Model=RaspberryPI&X-Plex-Device=RaspberryPI&X-Plex-Session-Identifier=af1a8fe4-91a8-4e85-b834-963515f7e81c&X-Plex-Product=Plex+MPV+Shim&X-Plex-Platform=Plex+Home+Theater&X-Plex-Client-Profile-Name=Plex+Home+Theater 2021-10-02 00:41:56,758 [ DEBUG] HttpHandler::handle_request request from 'Firefox' to '/player/playback/stop?commandID=2' 2021-10-02 00:41:56,758 [ DEBUG] TimelineManager::SendTimelineToSubscribers updating all subscribers 2021-10-02 00:41:56,774 [ DEBUG] HttpHandler::handle_request request from 'Firefox' to '/player/timeline/poll?commandID=2&wait=1' 2021-10-02 00:41:56,775 [ DEBUG] RemoteSubscriberManager::addSubscriber refreshed v01386xbzmkf7i20mpu8klwa 2021-10-02 00:41:56,775 [ DEBUG] RemoteSubscriber::refresh v01386xbzmkf7i20mpu8klwa (cid=2) 2021-10-02 00:41:59,064 [ DEBUG] HttpHandler::handle_request request from 'Firefox' to '/player/timeline/unsubscribe?commandID=2' 2021-10-02 00:41:59,064 [ DEBUG] RemoteSubscriberManager::removeSubscriber removing subscriber http://10.14.18.4:32400 [v01386xbzmkf7i20mpu8klwa] 2021-10-02 00:42:02,565 [ DEBUG] HttpHandler::handle_request request from 'Firefox' to '/player/timeline/poll?commandID=0' 2021-10-02 00:42:02,565 [ DEBUG] RemoteSubscriberManager::addSubscriber added [v01386xbzmkf7i20mpu8klwa] 2021-10-02 00:42:02,580 [ DEBUG] HttpHandler::handle_request request from 'Firefox' to '/player/timeline/poll?commandID=0&wait=1' 2021-10-02 00:42:02,580 [ DEBUG] RemoteSubscriberManager::addSubscriber refreshed v01386xbzmkf7i20mpu8klwa 2021-10-02 00:42:02,580 [ DEBUG] RemoteSubscriber::refresh v01386xbzmkf7i20mpu8klwa (cid=0) 2021-10-02 00:42:04,832 [ DEBUG] HttpHandler::handle_request request from 'Firefox' to '/player/playback/playMedia?providerIdentifier=com.plexapp.plugins.library&protocol=https&containerKey=%2FplayQueues%2F3463%3Fown%3D1&address=192-168-0-249.6c4fda5b10244e9a8b47cecec85cd16f.plex.direct&port=32400&token=REDACTED&key=%2Flibrary%2Fmetadata%2F97130&offset=1047000&machineIdentifier=7f7f8c154abbf072d61478b8da7821bb1a86208c&type=video&commandID=1' 2021-10-02 00:42:04,832 [ DEBUG] get_plex_url Created URL: https://192-168-0-249.6c4fda5b10244e9a8b47cecec85cd16f.plex.direct:32400/library/metadata/97130?includeMarkers=1&X-Plex-Token=REDACTED&X-Plex-Version=2.0&X-Plex-Client-Identifier=44faae21-1778-41bc-95ef-d204062d03e0&X-Plex-Provides=player&X-Plex-Device-Name=Fr%C3%B6vi-dator&X-Plex-Model=RaspberryPI&X-Plex-Device=RaspberryPI&X-Plex-Session-Identifier=af1a8fe4-91a8-4e85-b834-963515f7e81c&X-Plex-Product=Plex+MPV+Shim&X-Plex-Platform=Plex+Home+Theater&X-Plex-Client-Profile-Name=Plex+Home+Theater 2021-10-02 00:42:06,138 [ DEBUG] HttpHandler::handle_request request from 'Firefox' to '/player/playback/stop?commandID=2' 2021-10-02 00:42:06,138 [ DEBUG] TimelineManager::SendTimelineToSubscribers updating all subscribers 2021-10-02 00:42:06,158 [ DEBUG] HttpHandler::handle_request request from 'Firefox' to '/player/timeline/poll?commandID=2&wait=1' 2021-10-02 00:42:06,159 [ DEBUG] RemoteSubscriberManager::addSubscriber refreshed v01386xbzmkf7i20mpu8klwa 2021-10-02 00:42:06,159 [ DEBUG] RemoteSubscriber::refresh v01386xbzmkf7i20mpu8klwa (cid=2) 2021-10-02 00:42:26,171 [ DEBUG] HttpHandler::handle_request request from 'Firefox' to '/player/timeline/poll?commandID=2&wait=1' 2021-10-02 00:42:26,171 [ DEBUG] RemoteSubscriberManager::addSubscriber refreshed v01386xbzmkf7i20mpu8klwa 2021-10-02 00:42:26,171 [ DEBUG] RemoteSubscriber::refresh v01386xbzmkf7i20mpu8klwa (cid=2)