[Bug 275249] multimedia/jellyfin 14.0-RELEASE runtime issues

From: <bugzilla-noreply_at_freebsd.org>
Date: Wed, 22 Nov 2023 00:39:05 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=275249

            Bug ID: 275249
           Summary: multimedia/jellyfin 14.0-RELEASE runtime issues
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: ports-bugs@FreeBSD.org
          Reporter: pete@nomadlogic.org
                CC: michiel@vanbaak.eu
             Flags: maintainer-feedback?(michiel@vanbaak.eu)
                CC: michiel@vanbaak.eu

Hey there, I've just updated a system from 13.2-RELEASE to 14.0-RELEASE and
have run into a few problems with Jellyfin 10.8.10.

1) It looks like with the upgrade to OpenSSL-3 on 14.0 you need to install the
openssl111 port to get Jellyfin running (when installed from packages at
least).  Without that installed it's crash on startup like so:
[00:11:31] [INF] [4] Main: Kestrel listening on Any IP4 Address
No usable version of libssl was found
Abort trap


2) After installing the legacy openssl pkg it starts up as expected and the
webUI loads.  unfortunately it looks like ffmpeg has issues trying to play back
media.  I uninstalled the ffmpeg pkg, and reinstalled - and also verified that
I can run ffmpeg in a shell.

This is the error in the logs when i start up jellyfin:

[2023-11-22 00:17:04.193 +00:00] [ERR] [1]
MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Error validating encoder
System.ComponentModel.Win32Exception (2): An error occurred trying to start
process 'ffmpeg' with working directory '/'. No such file or directory
   at System.Diagnostics.Process.ForkAndExecProcess(ProcessStartInfo startInfo,
String resolvedFilename, String[] argv, String[] envp, String cwd, Boolean
setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32& stdinFd,
Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal, Boolean throwOnNoExec)
   at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at
MediaBrowser.MediaEncoding.Encoder.EncoderValidator.GetProcessOutput(String
path, String arguments, Boolean readStdErr, String testKey)
   at MediaBrowser.MediaEncoding.Encoder.EncoderValidator.ValidateVersion()
[2023-11-22 00:17:04.212 +00:00] [WRN] [1]
MediaBrowser.MediaEncoding.Encoder.MediaEncoder: FFmpeg: Failed version check:
"ffmpeg"
[2023-11-22 00:17:04.228 +00:00] [INF] [1]
MediaBrowser.MediaEncoding.Encoder.MediaEncoder: FFmpeg: ""


Then i get this error when I attempt to playback media:

2023-11-22 00:18:02.232 +00:00] [ERR] [26]
Jellyfin.Server.Middleware.ExceptionMiddleware: Error processing request. URL
"GET" "/videos/a22bbeb0-697b-7b60-74dc-d5261e29e4e6/hls1/main/0.ts".
System.ArgumentException: FFmpeg path not set.
   at Jellyfin.Api.Helpers.TranscodingJobHelper.StartFfMpeg(StreamState state,
String outputPath, String commandLineArguments, HttpRequest request,
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_method1068(Closure , Object )
   at
Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(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
Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint
endpoint, Task requestTask, ILogger logger)
   at
Jellyfin.Server.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext
httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager
localizationManager)
   at Jellyfin.Server.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext
httpContext, IWebSocketManager webSocketManager)
   at
Jellyfin.Server.Middleware.IpBasedAccessValidationMiddleware.Invoke(HttpContext
httpContext, INetworkManager networkManager)
   at Jellyfin.Server.Middleware.LanFilteringMiddleware.Invoke(HttpContext
httpContext, INetworkManager networkManager, IServerConfigurationManager
serverConfigurationManager)
   at
Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate
next, HttpContext context, AuthorizationPolicy policy,
PolicyAuthorizationResult authorizeResult)
   at
Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext
context)
   at
Jellyfin.Server.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.Server.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext
httpContext)
   at
Jellyfin.Server.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext
httpContext)
   at
Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext
context)
   at Jellyfin.Server.Middleware.ResponseTimeMiddleware.Invoke(HttpContext
context, IServerConfigurationManager serverConfigurationManager)
   at Jellyfin.Server.Middleware.ExceptionMiddleware.Invoke(HttpContext
context)


(interestingly - media i've previously played back works, but new video files
throw this error along with an Playback Error in the UI).

-- 
You are receiving this mail because:
You are the assignee for the bug.