Jellyfin Forum
Player for android TV and firetv - Printable Version

+- Jellyfin Forum (https://forum.jellyfin.org)
+-- Forum: Development (https://forum.jellyfin.org/f-development)
+--- Forum: Feature Requests (https://forum.jellyfin.org/f-feature-requests)
+--- Thread: Player for android TV and firetv (/t-player-for-android-tv-and-firetv)

Pages: 1 2 3


RE: Player for android TV and firetv - TheDreadPirate - 2024-08-08

(2024-08-08, 09:39 PM)theguymadmax Wrote: I don’t have many files with DVD subtitles to test, but if all of them are failing, there might be a problem either on the server or on the client side. As an additional workaround, you can disable subtitles on the server. The AndroidTV client uses the server’s settings, so if you disable subtitles there, they won’t load automatically on the client.

Go to Settings -> Subtitle and set Subtitle mode to None.

Where is this setting?  The subtitle config in the library settings is the only one I know of that applies to all clients.

   

Also, I've only played PGS subbed content since 0.17 was released. But I'll test some of the DVDSUB content I have when I get home.


RE: Player for android TV and firetv - theguymadmax - 2024-08-08

On the home screen when you click on your avatar, you'll see the subtitle menu.
   


RE: Player for android TV and firetv - TheDreadPirate - 2024-08-08

Does that apply to your user across all devices?


RE: Player for android TV and firetv - vince954 - 2024-08-08

I think I had it set that way but will check. If so that would solve my problem. If you like I can share a movie file to test with. But having the ability to default subtitles off would resolve it for me.


RE: Player for android TV and firetv - theguymadmax - 2024-08-08

Code:
[18:09:11] [ERR] [120] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL GET /videos/fe9a5a0b-c2e2-f028-5f66-5326f8231f0f/hls1/main/0.ts.
System.NullReferenceException: Object reference not set to an instance of an object.
  at MediaBrowser.MediaEncoding.Attachments.AttachmentExtractor.<>c.<ExtractAllAttachments>b__8_0(MediaAttachment a)
  at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate)
  at MediaBrowser.MediaEncoding.Attachments.AttachmentExtractor.ExtractAllAttachments(String inputFile, MediaSourceInfo mediaSource, String outputPath, CancellationToken cancellationToken)
  at MediaBrowser.MediaEncoding.Transcoding.TranscodeManager.StartFfMpeg(StreamState state, String outputPath, String commandLineArguments, Guid userId, TranscodingJobType transcodingJobType, CancellationTokenSource cancellationTokenSource, String workingDirectory)
  at Jellyfin.Api.Controllers.DynamicHlsController.GetDynamicSegment(StreamingRequestDto streamingRequest, Int32 segmentId)
  at Jellyfin.Api.Controllers.DynamicHlsController.GetHlsVideoSegment(Guid itemId, String playlistId, Int32 segmentId, String container, Int64 runtimeTicks, Int64 actualSegmentLengthTicks, Nullable`1 static, String params, String tag, String deviceProfileId, String playSessionId, String segmentContainer, Nullable`1 segmentLength, Nullable`1 minSegments, String mediaSourceId, String deviceId, String audioCodec, Nullable`1 enableAutoStreamCopy, Nullable`1 allowVideoStreamCopy, Nullable`1 allowAudioStreamCopy, Nullable`1 breakOnNonKeyFrames, Nullable`1 audioSampleRate, Nullable`1 maxAudioBitDepth, Nullable`1 audioBitRate, Nullable`1 audioChannels, Nullable`1 maxAudioChannels, String profile, String level, Nullable`1 framerate, Nullable`1 maxFramerate, Nullable`1 copyTimestamps, Nullable`1 startTimeTicks, Nullable`1 width, Nullable`1 height, Nullable`1 maxWidth, Nullable`1 maxHeight, Nullable`1 videoBitRate, Nullable`1 subtitleStreamIndex, Nullable`1 subtitleMethod, Nullable`1 maxRefFrames, Nullable`1 maxVideoBitDepth, Nullable`1 requireAvc, Nullable`1 deInterlace, Nullable`1 requireNonAnamorphic, Nullable`1 transcodingMaxAudioChannels, Nullable`1 cpuCoreLimit, String liveStreamId, Nullable`1 enableMpegtsM2TsMode, String videoCodec, String subtitleCodec, String transcodeReasons, Nullable`1 audioStreamIndex, Nullable`1 videoStreamIndex, Nullable`1 context, Dictionary`2 streamOptions)
  at lambda_method1872(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()
--- 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 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)
[18:09:11] [INF] [120] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app Android TV 0.17.1 playing Fist of Fury. Stopped at 0 ms
[18:10:01] [INF] [117] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for Max. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[18:10:09] [INF] [120] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app Android TV 0.17.1 playing Fist of Fury. Stopped at 5553 ms
[18:13:35] [INF] [84] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for Max. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True

I did two separate tests (mp4 container with dvdsub) and they both had the same results. When I leave the subtitle mode to default the subs will load automatically and ATV will request a burn-in and the server will error out causing playback failure. When I set subtitle mode to none, the ATV starts without loading subtitles causing successful playback. ATV is the only non-web-based client I have to test.


RE: Player for android TV and firetv - TheDreadPirate - 2024-08-08

(2024-08-08, 10:26 PM)theguymadmax Wrote:
Code:
[18:09:11] [ERR] [120] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL GET /videos/fe9a5a0b-c2e2-f028-5f66-5326f8231f0f/hls1/main/0.ts.
System.NullReferenceException: Object reference not set to an instance of an object.
  at MediaBrowser.MediaEncoding.Attachments.AttachmentExtractor.<>c.<ExtractAllAttachments>b__8_0(MediaAttachment a)
  at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate)
  at MediaBrowser.MediaEncoding.Attachments.AttachmentExtractor.ExtractAllAttachments(String inputFile, MediaSourceInfo mediaSource, String outputPath, CancellationToken cancellationToken)
  at MediaBrowser.MediaEncoding.Transcoding.TranscodeManager.StartFfMpeg(StreamState state, String outputPath, String commandLineArguments, Guid userId, TranscodingJobType transcodingJobType, CancellationTokenSource cancellationTokenSource, String workingDirectory)
  at Jellyfin.Api.Controllers.DynamicHlsController.GetDynamicSegment(StreamingRequestDto streamingRequest, Int32 segmentId)
  at Jellyfin.Api.Controllers.DynamicHlsController.GetHlsVideoSegment(Guid itemId, String playlistId, Int32 segmentId, String container, Int64 runtimeTicks, Int64 actualSegmentLengthTicks, Nullable`1 static, String params, String tag, String deviceProfileId, String playSessionId, String segmentContainer, Nullable`1 segmentLength, Nullable`1 minSegments, String mediaSourceId, String deviceId, String audioCodec, Nullable`1 enableAutoStreamCopy, Nullable`1 allowVideoStreamCopy, Nullable`1 allowAudioStreamCopy, Nullable`1 breakOnNonKeyFrames, Nullable`1 audioSampleRate, Nullable`1 maxAudioBitDepth, Nullable`1 audioBitRate, Nullable`1 audioChannels, Nullable`1 maxAudioChannels, String profile, String level, Nullable`1 framerate, Nullable`1 maxFramerate, Nullable`1 copyTimestamps, Nullable`1 startTimeTicks, Nullable`1 width, Nullable`1 height, Nullable`1 maxWidth, Nullable`1 maxHeight, Nullable`1 videoBitRate, Nullable`1 subtitleStreamIndex, Nullable`1 subtitleMethod, Nullable`1 maxRefFrames, Nullable`1 maxVideoBitDepth, Nullable`1 requireAvc, Nullable`1 deInterlace, Nullable`1 requireNonAnamorphic, Nullable`1 transcodingMaxAudioChannels, Nullable`1 cpuCoreLimit, String liveStreamId, Nullable`1 enableMpegtsM2TsMode, String videoCodec, String subtitleCodec, String transcodeReasons, Nullable`1 audioStreamIndex, Nullable`1 videoStreamIndex, Nullable`1 context, Dictionary`2 streamOptions)
  at lambda_method1872(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()
--- 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 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)
[18:09:11] [INF] [120] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app Android TV 0.17.1 playing Fist of Fury. Stopped at 0 ms
[18:10:01] [INF] [117] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for Max. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[18:10:09] [INF] [120] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app Android TV 0.17.1 playing Fist of Fury. Stopped at 5553 ms
[18:13:35] [INF] [84] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for Max. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True

I did two separate tests (mp4 container with dvdsub) and they both had the same results. When I leave the subtitle mode to default the subs will load automatically and ATV will request a burn-in and the server will error out causing playback failure. When I set subtitle mode to none, the ATV starts without loading subtitles causing successful playback. ATV is the only non-web-based client I have to test.

I also have a Roku Ultra 4800X to test with.

I will be home in a couple hours and will report back on both the Roku and CCwGTV 4K with DVDSUBs.


RE: Player for android TV and firetv - theguymadmax - 2024-08-09

@TheDreadPirate

I did additional testing and found that all MP4 files with DVDSUBs failed to play, each showing the same extraction error. These files also did not play in the web client. However, when I tested a DVDSUB file in an MKV container, it played successfully on both ATV and the web client. If you can verify this, it seems to be a bug with the server.

Here's a pull request that notes ATV uses the server settings to enable subtitles by default.

Log playing a MP4 DVDSUB file on the web client.

Code:
2024-08-08 21:58:37.513 -04:00] [INF] [49] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "Max". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-08-08 21:58:37.592 -04:00] [INF] [111] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[2024-08-08 21:58:37.595 -04:00] [ERR] [111] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL "GET" "/videos/fe9a5a0b-c2e2-f028-5f66-5326f8231f0f/hls1/main/-1.mp4".
System.NullReferenceException: Object reference not set to an instance of an object.
  at MediaBrowser.MediaEncoding.Attachments.AttachmentExtractor.<>c.<ExtractAllAttachments>b__8_0(MediaAttachment a)
  at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate)
  at MediaBrowser.MediaEncoding.Attachments.AttachmentExtractor.ExtractAllAttachments(String inputFile, MediaSourceInfo mediaSource, String outputPath, CancellationToken cancellationToken)
  at MediaBrowser.MediaEncoding.Transcoding.TranscodeManager.StartFfMpeg(StreamState state, String outputPath, String commandLineArguments, Guid userId, TranscodingJobType transcodingJobType, CancellationTokenSource cancellationTokenSource, String workingDirectory)
  at Jellyfin.Api.Controllers.DynamicHlsController.GetDynamicSegment(StreamingRequestDto streamingRequest, Int32 segmentId)
  at Jellyfin.Api.Controllers.DynamicHlsController.GetHlsVideoSegment(Guid itemId, String playlistId, Int32 segmentId, String container, Int64 runtimeTicks, Int64 actualSegmentLengthTicks, Nullable`1 static, String params, String tag, String deviceProfileId, String playSessionId, String segmentContainer, Nullable`1 segmentLength, Nullable`1 minSegments, String mediaSourceId, String deviceId, String audioCodec, Nullable`1 enableAutoStreamCopy, Nullable`1 allowVideoStreamCopy, Nullable`1 allowAudioStreamCopy, Nullable`1 breakOnNonKeyFrames, Nullable`1 audioSampleRate, Nullable`1 maxAudioBitDepth, Nullable`1 audioBitRate, Nullable`1 audioChannels, Nullable`1 maxAudioChannels, String profile, String level, Nullable`1 framerate, Nullable`1 maxFramerate, Nullable`1 copyTimestamps, Nullable`1 startTimeTicks, Nullable`1 width, Nullable`1 height, Nullable`1 maxWidth, Nullable`1 maxHeight, Nullable`1 videoBitRate, Nullable`1 subtitleStreamIndex, Nullable`1 subtitleMethod, Nullable`1 maxRefFrames, Nullable`1 maxVideoBitDepth, Nullable`1 requireAvc, Nullable`1 deInterlace, Nullable`1 requireNonAnamorphic, Nullable`1 transcodingMaxAudioChannels, Nullable`1 cpuCoreLimit, String liveStreamId, Nullable`1 enableMpegtsM2TsMode, String videoCodec, String subtitleCodec, String transcodeReasons, Nullable`1 audioStreamIndex, Nullable`1 videoStreamIndex, Nullable`1 context, Dictionary`2 streamOptions)
  at lambda_method1872(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()
--- 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 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-08-08 21:58:37.666 -04:00] [INF] [21] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Web" "10.9.9" playing "Fist of Fury". Stopped at "0" ms



RE: Player for android TV and firetv - TheDreadPirate - 2024-08-09

I was going to ask the question about the container. My DVDSUB videos worked on both my Roku and CCwGTV 4K with the subtitles burned in. Just about all of my content is in MKV containers. Including the videos I just tested with.

Code:
Bruce Almighty
Container: mkv
Path: /media/library/Movies/Bruce Almighty/Bruce Almighty.mkv
Size: 2398 MB

Video
Title: 404p HEVC SDR
Codec: HEVC
AVC: No
Profile: Main
Level: 90
Resolution: 720x388
Aspect ratio: 1.85:1
Anamorphic: No
Interlaced: No
Framerate: 29.97003
Bitrate: 3315 kbps
Bit depth: 8 bit
Video range: SDR
Video range type: SDR
Color space: smpte170m
Color transfer: bt709
Color primaries: smpte170m
Pixel format: yuv420p
Ref frames: 1

Audio
Title: Surround 5.1 - English - Dolby Digital - Default
Language: eng
Codec: AC3
AVC: No
Layout: 5.1
Channels: 6 ch
Bitrate: 448 kbps
Sample rate: 48000 Hz
Default: Yes
Forced: No
External: No

Audio
Title: Surround 5.1 - English - DTS
Language: eng
Codec: DTS
AVC: No
Profile: DTS
Layout: 5.1
Channels: 6 ch
Bitrate: 768 kbps
Sample rate: 48000 Hz
Default: No
Forced: No
External: No

Audio
Title: Stereo - English - Dolby Digital
Language: eng
Codec: AC3
AVC: No
Layout: stereo
Channels: 2 ch
Bitrate: 192 kbps
Sample rate: 48000 Hz
Default: No
Forced: No
External: No

Audio
Title: Surround 5.1 - Fre - Dolby Digital
Language: fre
Codec: AC3
AVC: No
Layout: 5.1
Channels: 6 ch
Bitrate: 384 kbps
Sample rate: 48000 Hz
Default: No
Forced: No
External: No

Audio
Title: Surround 5.1 - Spanish - Dolby Digital
Language: spa
Codec: AC3
AVC: No
Layout: 5.1
Channels: 6 ch
Bitrate: 384 kbps
Sample rate: 48000 Hz
Default: No
Forced: No
External: No

Subtitle
Title: English - DVDSUB
Language: eng
Codec: DVDSUB
AVC: No
Resolution: 720x480
Default: No
Forced: No
External: No

Subtitle
Title: Fre - DVDSUB
Language: fre
Codec: DVDSUB
AVC: No
Resolution: 720x480
Default: No
Forced: No
External: No

Subtitle
Title: Spanish - DVDSUB
Language: spa
Codec: DVDSUB
AVC: No
Resolution: 720x480
Default: No
Forced: No
External: No



RE: Player for android TV and firetv - vince954 - 2024-08-09

i can send you a link to get some files to test with. note that i am using the windows versio of the server. not sure if this matters. upon some more testing i can confirm i have the server set up to none on subtitles but the players seem to always deault to on and give the error. as far as i can tell its only the androidtv player that does this, strange.. the workaround i am using is to set a button to select subtitles and then turn it off when you start playing the file... this seems to work for now.


RE: Player for android TV and firetv - TheDreadPirate - 2024-08-09

You could remux your MP4s into MKVs. No re-encoding required.