Jellyfin Forum
SOLVED: Unsupported file extension PGSSUB on AndroidTV - Printable Version

+- Jellyfin Forum (https://forum.jellyfin.org)
+-- Forum: Support (https://forum.jellyfin.org/f-support)
+--- Forum: Troubleshooting (https://forum.jellyfin.org/f-troubleshooting)
+--- Thread: SOLVED: Unsupported file extension PGSSUB on AndroidTV (/t-solved-unsupported-file-extension-pgssub-on-androidtv)



Unsupported file extension PGSSUB on AndroidTV - ClémentXVII - 2024-11-21

[EDIT] Solved by installing the latest 0.18 (beta) app on my AndroidTV

Configuration:
Jellyfin latest on Synology docker
Code:
Server version    10.10.3
Web version    10.10.3
Build version    10.10.3

I have blu-rays that are dumped using MakeMKV with subtitles and everything.

Since a couple of weeks/months ago (don't exactly remember when since I've been abroad for work quite a bit lately), the playback behaviour has changed on my AndroidTV (without updating the client).
In the past, when I played my files on my TV and wanted to enable subtitles (PGSSUB), there was a message saying something along the lines of "burning in subtitles, please wait", then the subtitles would show.

And now, when I play the same files on AndroidTV and want to enable the subtitles (PGSSUB), I get message saying "loading subtitles"... then a couple of seconds later it says "unable to load subtitle".

The only things that happened since then was updating the docker image a couple of times... hoping that the next release would fix that troublesome issue.
I have to say that playback works fine on the web and on the Android (phone/tablet) app though...

I checked the logfile and this is what I can see - I am worried about the "Unsupported file extension PGSSUB".
I checked the user configuration to enable "burned in subtitles always", but to no avail.

I'm not sure what to do here... (I did also update the TV app since then)
Is it possible that I'm missing a config file or setting?
Is it possible that something got lost in an upgrade?
Should I rebuild my whole setup (and library) from scratch?

What other information would one need to figure out what's happening?
Code:
[2024-11-21 12:56:58.210 +00:00] [INF] [10] MediaBrowser.MediaEncoding.Subtitles.SubtitleEncoder: ffmpeg subtitle extraction completed for "file:\"/films/Le Chat qui fume/La Femme Scorpion (1972)/La Femme Scorpion (1972).mkv\"" to "/config/data/subtitles/4/48897aca-20ac-aab6-0130-fa68cf7f0a2c.sup"
[2024-11-21 12:56:58.446 +00:00] [ERR] [10] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL "GET" "/Videos/6a14fe89-134d-f0da-f87a-448d9f3c4cfd/6a14fe89134df0daf87a448d9f3c4cfd/Subtitles/3/0/Stream.JSON".
System.ArgumentException: Unsupported file extension: PGSSUB (Parameter 'fileExtension')
  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, Nullable`1 itemId, String mediaSourceId, Nullable`1 index, String format, Nullable`1 endPositionTicks, Boolean copyTimestamps, Boolean addVttTimeMap, Int64 startPositionTicks)
  at lambda_method1287(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, ValueTask`1 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>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
  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>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
  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 Jellyfin.Api.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
  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)
[2024-11-21 12:56:59.973 +00:00] [INF] [61] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "jellyfin". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True



RE: Unsupported file extension PGSSUB on AndroidTV - TheDreadPirate - 2024-11-21

Can you verify the version of the Android TV app you are running? 0.17 or 0.18?


RE: Unsupported file extension PGSSUB on AndroidTV - ClémentXVII - 2024-11-22

It's 0.17.9 (I updated it on November 2nd), and it's the latest version I see on my Play Store - I just logged in to check.


RE: Unsupported file extension PGSSUB on AndroidTV - TheDreadPirate - 2024-11-22

Can you give the beta version a try? Sign up for the beta in the playstore, or side load. If you sign up for the beta it will take a bit before Google actually delivers the beta too your device.

It is in its, hopefully, last beta and has many many playback engine fixes. Including for PGS subs. Another user on github had issues with PGS subs and they said that the beta resolved the issue for them.

https://github.com/jellyfin/jellyfin-androidtv/issues/4193#issuecomment-2481538979


RE: Unsupported file extension PGSSUB on AndroidTV - ClémentXVII - 2024-11-22

Thanks for the tip.
I tried downloading the 0.18.0beta4 apk and even tried to install it (had to install a File Manager and so on) though it said "app not installed" at the end of the process, so I'm not sure what happened... Perhaps I should take another package?

I am usually signed out of my Google account on TV (there's already more than enough ads on my TV without having to additionally link my Google account on it) so going on the beta channel might not be an option since I'm going abroad again in the next couple of days for two weeks...


RE: Unsupported file extension PGSSUB on AndroidTV - TheDreadPirate - 2024-11-22

Double check that you are allowing installs from unknown sources and that you have sufficient disk space.


RE: Unsupported file extension PGSSUB on AndroidTV - niels - 2024-11-22

If you install the sideloaded version of the app over the app-installed version you'll need to uninstall it first, as the stores change our signature. Alternatively you can use the debug version of the app, which has a different id so it will show up as a separate app.


RE: Unsupported file extension PGSSUB on AndroidTV - ClémentXVII - 2024-11-23

Thank you @niels - that did the trick!
I had to uninstall the previous version first and then reinstall the ...beta4.apk ;-).

And yes, the latest 0.18 (beta) version solves the PGSSUB display on Android TV! Many thanks to both of you for your help!