External SRT subtitles are not working w/ reverse proxy

I’ve noticed recently, that when using the macOS player my external SRT subtitles are not working. This must have started happening at some point in the last 1-2 weeks, but I have only noticed it today. I have confirmed the same issue on the latest iOS and tvOS players as well. I’ve also upgraded to the latest public PMS version without change.

When I hit play on a movie, the external SRT subtitles do not appear on the screen. If I change to other (PGS and SRT) subtitles they work fine, but when I switch back to any SRT External subtitles nothing changes and the client continues playing the previously selected subtitles.

All of the clients are direct playing the media. I have checked the subtitles are not empty and have the correct timestamps. The naming is correct and has worked until recently, therefore I’m pretty confident this is not an issue with my subtitles. I have tested multiple movies and I have also tested the web player in Safari where the external SRT subtitles get converted to ASS and work correctly.

I’ve also tested the Infuse client on macOS which now no longer sees any of the SRT External subtitles. Those have worked fine about 2 weeks ago.

EDIT: Updated wording and moved topic to PMS category as I believe it’s a server issue affecting all clients

Server Version#: 1.40.5.8921 (and previous 1.40.5.8897)
Player Version#: 1.99.0.210-2d92b948 (macOS)

I have determined that the issue was caused by my reverse proxy SWAG (nginx). Unfortunately, I was unable to fix my issue and I decided to not use the proxy for Plex.

@MasterTX I guess I’ve the same problem. But I cannot ditch my nginx proxy.

Most of the time, I have embedded subtitles, but suddenly external SRT files are not working on iOS and iPadOS.
The file is there as usual, and the subtitle displays correctly in the web player, but not on iOS or iPadOS.
Both are updated to the latest app release.

Nothing shows up on the client.
Through Tautulli, I can see that the SRT file is being direct played, but nothing appears in the client. :frowning:

The only reason why the subs work in the web player is because they are transcoded. I’ve talked to a guy who had this issue as well and he told me he spent weeks trying to figure out what the problem is and eventually gave up. The only way to fix this is to get a Plex developer to look into it.

Same issue here, running behind reverse proxy (nginx)

Embedded ASS subtitles work, not for external subtitles.

iOS, iPad - :x: subtitles
V8.40
:warning: Workaround - Disable Direct Play

Plex for Mac - :x: subtitles
V1.103.1.238-223cbba6
:warning: Workaround - Disable Direct Play

Android - :white_check_mark: subtitles
V10.22.1.1607

Server
V1.41.0.8994

Yeah, last time I was so desperate to watch a movie with external subtitles that I downloaded mkvmerge as a Docker container and merged the subtitles into the MKV. Then, I deleted the original file from Plex and re-added the one with the embedded subtitles. :frowning:

Are you able to unmark this topic as solved?

Yeah, done.

1 Like

Thanks for tips but that ain’t happening to me as I’m not the only one in the family watching…

It used to work previously so it’s either iOS changed their policies and/or Plex server themselves broke something.

Workaround now for iOS/Mac players:
Without Direct Stream
iOS Settings > Advanced > :x: Allow Direct Play
Mac Desktop Player Settings > Debug > :x: Allow Direct Play

With Direct Stream
iOS Settings > Advanced > :white_check_mark: Allow Direct Play
iOS Settings > Advanced > Use Old Video Player :white_check_mark:

@keksznet thanks for the Tautulli tip that led to the above workaround. Means Plex is actually picking up the option to play subtitles.

@MasterTX thanks for unmarking as solved.

yeah, if it is not direct play it works
as I saw with the Web Player

but it is of course a load for the server :frowning:

I think it may be connected to secure connections between player and server.
Many Plex client types contain workarounds for situations where secure connections would normally fail. However, for fetching additional data streams these workarounds might just not function.
The players may be able to fetch external subtitles only if they can use an ecrypted connection to the server.
Which in turn does only work if

  1. both client and server are logged into a plex.tv user account
  2. the client is able to resolve the FQDN of the server properly (explicitly also if the server in in the same local network) Secure connections only work with domain names, not with “naked” IP adresses, because they require security certificates, which in turn are only valid for domain names.

For 2) to work, the client needs access to a DNS resolver which does NOT block domain from resolving if they point to a local IP address. Normally, this blocking is a good thing, as it can be used for nefarious purposes. However, Plex is relying heavily on the DNS system to work, to keep communication encrypted under all circumstances.
Therefore, you need to verify that the DNS resolver in your network is resolving the FQDN of your server, or if it’s blocking it.
https://support.plex.tv/articles/206225077-how-to-use-secure-server-connections/
contains some basic rules and workarounds to follow.
If these fail, you may need to use a different DNS resolver in your home network. The DNS resolver is typically integrated into your router. But there are also ways to have it as a separate service. Pi-hole for instances is its own DNS resolver and uses this pocition to filter internet traffic. Since it uses an open-source DNS resolver software, it can be configured with an exception for the domain plex.direct for Plex to work properly.

Another avenue would be to use an alternative firmware for your current router. If there is one for your particular model, it is practically always based on open-source software, and provides the necessary configuration for its own DNS resolver module.

But why so suddenly?
Direct play was working since the advanced option under iOS enabled it, so I guess for 5-7 years until now…

1 Like

Plex clients are now requiring secure connections to the server, whereas before they were kinda optional.

1 Like

Hi @qwebie or @MasterTX

Maybe can you provide @Craig_Holliday a sample file as described here

https://support.plex.tv/articles/201035968-generating-sample-files-from-media/

He was asking for this in another thread to look into the issue
But I’m not at home until next Monday

Noted. I can only produce a sample file this weekend too :sweat_smile:

1 Like

So I have changed from secure connection to secure connection based on this

which means I have added the plex.direct url to my reverse proxy

But the external subtitles are still not working if the client (apple ios and apple ipadOS) direct play the subtitle and not transcode them, nor stream them

Direct play just don’t show the content of the SRT file

But plex still says I’m on a secure connection
As I was before

I’m behind a VPN
Therefore I am using the custom url
Which includes the scheme and the port
For very long time

And I’m using nginx proxy manager which is also forced to https and now it points not anymore to the IP of the host, but the plex.direct hostname. For which Plex should have also a valid ssl cert, as I have for my own domain and subdomain from cloudflare.

Having this exact issue. Never noticed since I only use the android app remotely and this seems to affect the Windows desktop app (can’t comment on mac/ios). Following the guide linked above, switching the lan ip with the plex.direct url in my swag reverse proxy config, no change. still cannot direct play external subtitles.

1 Like

Timeline:

  • More than few months (definitely near to a year of using) since I moved to use reverse proxy (nginx) as one of my servers became Double NATed (CGNAT)
  • nginx > Server (Unsecured)
  • (this thread) External subtitles no longer show
  • Followed Clearing up Plex networking internals - scholz.ruhr to get Plex to recognise its a secured connection.
  • nginx > Server (Secured) - Can confirm by the double green arrows in Plex Dash

Subtitles do not work.

New test:
iOS v8.42

  • Subtitles work :white_check_mark:
    • Advanced > Allow Direct Play :white_check_mark:
    • Advanced > Use Old Video Player :white_check_mark:
    • (Plex Dash - shows Direct Stream for V/A, with subtitle being transcoded to WEBVTT)
  • Subtitles do not work :x:
    • Advanced > Allow Direct Play :white_check_mark:
    • Advanced > Use Old Video Player :x:

@keksznet Can you test if my experience/workaround above is the same for you

I have updated now the App to v8.42 (but no change at all)
I have also the double green arrow in Plex Dash, so the connection is secured

If I have advanced / allow direct play EXTERNAL subtitles are not show up

if I change to use old video player, the subtitle is working, but the subtitle is being transcoded (webvtt) and the video and audio is not a direct play anymore but a direct stream

if I disable the advanced / allow direct play, and do not use the old video player (disabled also), everything is direct stream (video, audio and subtitle as well, it is not transcoded), but it is still not direct play as it was earlier

if I have advanced / alow direct play enabled, only the muxed subtitles are working as “direct play”, not every kind of subtitle as earlier :frowning:

1 Like

In 2019, I used Infuse.

I installed it again, including Version 5 Pro, and also claimed my 1-year Infuse 8 Pro subscription. But for some reason, none of the versions are showing external subtitles for me—not even as a selectable option.

Back in 2019, Infuse 5 Pro definitely had this functionality. I checked my Tautulli logs and saw that I was able to direct play subtitles in SRT format, and it worked perfectly. :frowning: