2024-10-26, 02:19 PM
Question:
I'm encountering issues playing
.strm
files in Jellyfin. Attempting playback results in the following error:
Playback Error: "Playback failed due to a fatal player error."
Logs:
File Format:
The .strm file only contains a URL pointing to the video (tested in VLC, where it plays without issues).
Environment Details:
Jellyfin Server Version: 10.9.11
Web Version: 10.9.11
Build Version: 10.9.11
ffprobe Version: 5.1.4 (Debian 12, ARM64 architecture)
File Structure: Simple .strm file linking to a video URL.
Additional Information:
Running ffprobe on the .strm file directly (ffprobe -i Ludik\ S01E01.strm) produces:
Error: Invalid data found when processing input
Attempts to Troubleshoot:
Checked URL and confirmed it’s playable outside Jellyfin.
Verified Jellyfin and FFmpeg installation paths.
Increased analyzeduration and probesize values in the Jellyfin settings.
Seeking Help:
Any guidance on why Jellyfin cannot play .strm files, despite the URLs working in VLC? Could this be a configuration or compatibility issue with FFmpeg on ARM64?
Thank you for any insights or troubleshooting steps!
I'm encountering issues playing
.strm
files in Jellyfin. Attempting playback results in the following error:
Playback Error: "Playback failed due to a fatal player error."
Logs:
Quote:[2024-10-26 15:07:32.629 +02:00] [ERR] FFmpeg exited with code 1
[2024-10-26 15:07:32.711 +02:00] [ERR] Error processing request. URL "GET" "/videos/eae7f6d7-4f69-0056-8171-2173399ed8fe/live.m3u8".
MediaBrowser.Common.FfmpegException: FFmpeg exited with code 1
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.GetLiveHlsStream(Guid itemId, String container, Nullable1 static, String params, String tag, String deviceProfileId, String playSessionId, String segmentContainer, Nullable
1 segmentLength, Nullable1 minSegments, String mediaSourceId, String deviceId, String audioCodec, Nullable
1 enableAutoStreamCopy, Nullable1 allowVideoStreamCopy, Nullable
1 allowAudioStreamCopy, Nullable1 breakOnNonKeyFrames, Nullable
1 audioSampleRate, Nullable1 maxAudioBitDepth, Nullable
1 audioBitRate, Nullable1 audioChannels, Nullable
1 maxAudioChannels, String profile, String level, Nullable1 framerate, Nullable
1 maxFramerate, Nullable1 copyTimestamps, Nullable
1 startTimeTicks, Nullable1 width, Nullable
1 height, Nullable1 videoBitRate, Nullable
1 subtitleStreamIndex, Nullable1 subtitleMethod, Nullable
1 maxRefFrames, Nullable1 maxVideoBitDepth, Nullable
1 requireAvc, Nullable1 deInterlace, Nullable
1 requireNonAnamorphic, Nullable1 transcodingMaxAudioChannels, Nullable
1 cpuCoreLimit, String liveStreamId, Nullable1 enableMpegtsM2TsMode, String videoCodec, String subtitleCodec, String transcodeReasons, Nullable
1 audioStreamIndex, Nullable1 videoStreamIndex, Nullable
1 context, Dictionary2 streamOptions, Nullable
1 maxWidth, Nullable1 maxHeight, Nullable
1 enableSubtitlesInManifest)
at lambda_method1394(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)
File Format:
The .strm file only contains a URL pointing to the video (tested in VLC, where it plays without issues).
Environment Details:
Jellyfin Server Version: 10.9.11
Web Version: 10.9.11
Build Version: 10.9.11
ffprobe Version: 5.1.4 (Debian 12, ARM64 architecture)
File Structure: Simple .strm file linking to a video URL.
Additional Information:
Running ffprobe on the .strm file directly (ffprobe -i Ludik\ S01E01.strm) produces:
Error: Invalid data found when processing input
Attempts to Troubleshoot:
Checked URL and confirmed it’s playable outside Jellyfin.
Verified Jellyfin and FFmpeg installation paths.
Increased analyzeduration and probesize values in the Jellyfin settings.
Seeking Help:
Any guidance on why Jellyfin cannot play .strm files, despite the URLs working in VLC? Could this be a configuration or compatibility issue with FFmpeg on ARM64?
Thank you for any insights or troubleshooting steps!