RasPlex / OpenPHT

OpenPHT is a community driven fork of Plex Home Theater
Other
597 stars 110 forks source link

[Windows] OpenPHT Plex Cloud #144

Open Gotanius opened 7 years ago

Gotanius commented 7 years ago

OpenPHT will not play videocontent (have not yet been able to test audio) from Plex Cloud. Error: Unable to Play Media / Please check that this file exists and the necessary drive is mounted This, as far as I have tested, only occurs on a machine that has Plex Media Server installed. A machine without plex media server plays the content as normal.

*edit: So someone in the plex fora asked me if it also occured with the plex server not running. And it did. Same error. So as far as I can tell; as long as plex server is installed on the machine, plex openpht will not play cloudvideocontent. (music will follow later :))

Install/Open OpenPHT on a machine with a plex server installed and try to play a media file

OpenPHT: [1.6.2.123-e23a7eeef, black skin, Windows 10 x64 (latest stable)] PMS: [1.1.4.2757, Windows 10 x64 (latest stable)]

dan-the-man-nz commented 7 years ago

Hi

please update to 1.7.1 release and post some current logs of the issue, the dev will be doing some plex cloud related fixes in openpht in the near future.

danichispa commented 7 years ago

I updated today to 1.8.0 and noticed same thing. I cannot play items from my cloud server from the machine that I have PMS installed. I can stream from any other one of my house. I tested right now to play a file from my cloud, and got the log from Cloud PMS.

Plex Media Server.log.zip

dan-the-man-nz commented 7 years ago

please submit logs from openpht ...

thedreamfinder commented 7 years ago

I had the same thing happen to me this morning. I watched a TV show on the cloud using OpenPHT and it worked fine. Then went to another TV show file and got the "Unable to Play Media / Please check that this file exists and the necessary drive is mounted" error.

What's funny is when I use either the Webapp or the Plex Windows app the same TV show plays fine even right after I get the error from OpenPHT. I just hate transcoding and would prefer using OpenPHT. Log attached.

OpenPHT.zip

eliottrobson commented 7 years ago

I am on Mac and I have a similar issue. However it only happens when PMS is running. If it is not running, I can play from the cloud perfectly fine but when it is running I get the same "Unable to Play Media [...]" error.

Has anyone found a solution?

eliottrobson commented 7 years ago

A quick update for everyone.

OpenPHT: 1.8.0 PMS: Version 1.7.5.4035-313f93718 System: macOS Sierra, 10.12.6

I ran multiple tests on my system with debug logging enabled and found a couple of things which might help to track down and fix this issue. When PMS is running, playing from Plex Cloud does not work. Quitting PMS and then retrying allows it to play perfectly fine.

I've reduced the logs so they are more digestible.

When PMS is running, OpenPHT will NOT play from Plex Cloud.

[...1] = Long url to my video

  DEBUG: CPlexMediaDecisionJob::DoWork final URL from MDE is http://127.0.0.1:32400/services/clouddrive/dropbox/media/dbid:%2Fmedia%2Ftv%20shows[...1]
  DEBUG: CPlexBusyIndicator::OnJobComplete nothing more blocking, let's leave
  DEBUG: ------ Window Deinit (DialogBusy.xml) ------
  DEBUG: CPlexMediaDecisionEngine::BlockAndResolve resolve done, success: Yes
 NOTICE: DVDPlayer: Opening: http://127.0.0.1:32400/services/clouddrive/dropbox/media/dbid:%2Fmedia%2Ftv%20shows[...1]
WARNING: CDVDMessageQueue(player)::Put MSGQ_NOT_INITIALIZED
  DEBUG: Mimetype: application/octet-stream
  DEBUG: CRenderManager::UpdateDisplayLatency - Latency set to 0 msec
  DEBUG: LinuxRendererGL: Cleaning up GL resources
  DEBUG: CLinuxRendererGL::PreInit - precision of luminance 16 is 16
  DEBUG: Thread DVDPlayer start, auto delete: false
 NOTICE: Creating InputStream
  DEBUG: Cache selector: going to use cacheSize based on fileSize
  DEBUG: Cache selector: selected cacheSize: 79283768
  DEBUG: CFileCache::Open - opening <services/clouddrive/dropbox/media/dbid:%2Fmedia%2Ftv%20shows[...1]> using cache
  DEBUG: CurlFile::Open(0x7fd0235d0bd0) http://127.0.0.1:32400/services/clouddrive/dropbox/media/dbid:%2Fmedia%2Ftv%20shows[...1]
  ERROR: CCurlFile::Open failed with code 401 for http://127.0.0.1:32400/services/clouddrive/dropbox/media/dbid:%2Fmedia%2Ftv%20shows[...1]
  ERROR: Open - failed to open source <http://127.0.0.1:32400/services/clouddrive/dropbox/media/dbid:%2Fmedia%2Ftv%20shows[...1]>
  ERROR: CDVDPlayer::OpenInputStream - error opening [http://127.0.0.1:32400/services/clouddrive/dropbox/media/dbid:%2Fmedia%2Ftv%20shows[...1]]

When PMS is NOT running, OpenPHT will play from Plex Cloud.

[...1] = Plex encoded urls
[...2] = Long url to my video
[...3] = Potential security token

  DEBUG: CPlexMediaDecisionJob::DoWork final URL from MDE is plexserver://23564b[...1]/services/clouddrive/dropbox/media/dbid:%2Fmedia%2Ftv%20shows[...2]
  DEBUG: CPlexBusyIndicator::OnJobComplete nothing more blocking, let's leave
  DEBUG: ------ Window Deinit (DialogBusy.xml) ------
  DEBUG: CPlexMediaDecisionEngine::BlockAndResolve resolve done, success: Yes
 NOTICE: DVDPlayer: Opening: plexserver://23564bf8895344f5be2925fc1751c2e8/services/clouddrive/dropbox/media/dbid:%2Fmedia%2Ftv%20shows[...2]
WARNING: CDVDMessageQueue(player)::Put MSGQ_NOT_INITIALIZED
  DEBUG: Mimetype: application/octet-stream
  DEBUG: CRenderManager::UpdateDisplayLatency - Latency set to 0 msec
  DEBUG: LinuxRendererGL: Cleaning up GL resources
  DEBUG: CLinuxRendererGL::PreInit - precision of luminance 16 is 16
  DEBUG: Thread DVDPlayer start, auto delete: false
 NOTICE: Creating InputStream
  DEBUG: Cache selector: going to use cacheSize based on fileSize
  DEBUG: Cache selector: selected cacheSize: 79283768
  DEBUG: CFileCache::Open - opening <services/clouddrive/dropbox/media/dbid:%2Fmedia%2Ftv%20shows[...2]> using cache
  DEBUG: CPlexFile::BuildHTTPURL translated 'plexserver://23564b[...1]/services/clouddrive/dropbox/media/dbid:%2Fmedia%2Ftv%20shows[...2]' to 'https://404a39[...1].ric.plex.services/services/clouddrive/dropbox/media/dbid:%2Fmedia%2Ftv%20shows[...2]?X-Plex-Token=[...3]'
  DEBUG: CurlFile::Open(0x7fd02b314ce0) https://404a39[...1].ric.plex.services/services/clouddrive/dropbox/media/dbid:%2Fmedia%2Ftv%20shows[...2]?X-Plex-Token=[...3]

Tracing it back it feels like the file which calls the method is plex/PlexMediaDecisionEngine.cpp. Ideally the methods it calls need tweaking in order to correctly resolve plex cloud files to the remote Plex instance NOT the locally running server.