Strange embedded subtitle behaviour - Ethanator10000 -  2025-11-03
 
 
Certain movies are giving me a lot of trouble with subtitles.  
 
 
Video 
Title: 4K HEVC Dolby Vision Profile 7.6 (HDR10) 
Codec: HEVC 
AVC: No 
Profile: Main 10 
Level: 153 
Resolution: 3840x2160 
Aspect ratio: 16:9 
Anamorphic: No 
Interlaced: No 
Framerate: 23.976025 
Bitrate: 71960 kbps 
Bit depth: 10 bit 
Video range: HDR 
Video range type: DOVIWithEL 
DV title: Dolby Vision Profile 7.6 (HDR10) 
DV version major: 1 
DV version minor: 0 
DV profile: 7 
DV level: 6 
DV rpu preset flag: 1 
DV el preset flag: 1 
DV bl preset flag: 1 
DV bl signal compatibility id: 6 
Color space: bt2020nc 
Color transfer: smpte2084 
Color primaries: bt2020 
Pixel format: yuv420p10le 
Ref frames: 1 
 
Subtitle 
Title: English - SUBRIP 
Language: eng 
Codec: SUBRIP 
AVC: No 
Default: No 
Forced: No 
External: No 
 
Subtitle 
Title: SDH - English - Hearing Impaired - SUBRIP 
Language: eng 
Codec: SUBRIP 
AVC: No 
Default: No 
Forced: No 
External: No 
 
Subtitle 
Title: SDH / Centered / PGS - English - Hearing Impaired - PGSSUB 
Language: eng 
Codec: PGSSUB 
AVC: No 
Resolution: 1920x1080 
Default: No 
Forced: No 
External: No 
 
I can play this movie fine without any subtitles (Direct Stream with audio repackaging) but I get strange behaviour when I enable subtitles. 
 
The English-SUBRIP and SDH SUBRIP options give me the same errors on my server, and subtitles are not displayed. Video playback sometimes fails or constantly freezes too. 
 
[00:57:34] [ERR] [27] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL GET /Videos/4b2f9ca7-405a-1d03-6d5a-ccd7d544b705/4b2f9ca7405a1d036d5accd7d544b705/Subtitles/5/0/Stream.subrip. 
System.ArgumentException: Unsupported format: srt 
  at MediaBrowser.MediaEncoding.Subtitles.SubtitleEditParser.Parse(Stream stream, String fileExtension) 
  at MediaBrowser.MediaEncoding.Subtitles.SubtitleEncoder.ConvertSubtitles(Stream stream, String inputFormat, String outputFormat, Int64 startTimeTicks, Int64 endTimeTicks, Boolean preserveOriginalTimestamps, CancellationToken cancellationToken) 
  at MediaBrowser.MediaEncoding.Subtitles.SubtitleEncoder.MediaBrowser.Controller.MediaEncoding.ISubtitleEncoder.GetSubtitles(BaseItem item, String mediaSourceId, Int32 subtitleStreamIndex, String outputFormat, Int64 startTimeTicks, Int64 endTimeTicks, Boolean preserveOriginalTimestamps, CancellationToken cancellationToken) 
  at Jellyfin.Api.Controllers.SubtitleController.GetSubtitle(Guid routeItemId, String routeMediaSourceId, Int32 routeIndex, String routeFormat, Nullable1 itemId, String mediaSourceId, Nullable1 index, String format, Nullable1 endPositionTicks, Boolean copyTimestamps, Boolean addVttTimeMap, Int64 startPositionTicks) 
  at lambda_method10194(Closure, Object) 
  at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) 
  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask) 
  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) 
  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) 
  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) 
  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync() 
--- End of stack trace from previous location --- 
  at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) 
  at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context) 
  at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) 
  at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync() 
--- End of stack trace from previous location --- 
  at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) 
  at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) 
  at Jellyfin.Api.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager) 
  at Jellyfin.Api.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager) 
  at Jellyfin.Api.Middleware.IPBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager) 
  at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) 
  at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext) 
  at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext) 
  at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext) 
  at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider) 
  at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) 
  at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext) 
  at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext) 
  at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context) 
  at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager) 
  at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context) 
 
The SDH Centered PGSSUB option does work but for some reason causes a (seemingly slow) transcode: "Reason for transcoding The video's range type is not supported". The subtitles are also grey instead of white. I don't get why the range type becomes a problem when the subtitles are enabled.  
 
I've gotten PGS and SRT to direct play just fine in other videos, and I was able to download external SRTs for this movie which direct stream perfectly like when the subtitles were disabled. I copied the .mkv over to my computer and I can play the movie with the embedded subtitles just fine there. When going into my jellyfin config/data/data/subtitles folder I find that all the .srt files for this movie are empty (I removed the folder to force the creation of a new one that would only be for this movie). Really confused as to what's going on here.
 
 
 
 |