Jellyfin Forum
SOLVED: Headless n100 QSV/VA-API failing decoding HEVC video - 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: Headless n100 QSV/VA-API failing decoding HEVC video (/t-solved-headless-n100-qsv-va-api-failing-decoding-hevc-video)



Headless n100 QSV/VA-API failing decoding HEVC video - andu77 - 2025-04-18

Hi Jellyfin community,
my first post here.  
Thank you for Jellyfin and taking the time to read my post!
As title says, I'm trying to use hardware decoding but depending on acceleration method used I get different errors.


Environment:
Kernel 6.14.1-1(Tumbleweed)
Virtualization: podman
Clients: Browser
Browser: Firefox 137
FFmpeg Version: 7.0.2-Jellyfin
GPU: Intel Alder Lake-N [UHD Graphics]
Jellyfin server: 10.10.7

Acceleration: VA-API
FFMpeg Error no: 187

Relevant logs:
Apr 18 18:29:14 jupiter Jellyfin[646572]: [15:29:14] [INF] [51] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for ____. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudio>
Apr 18 18:29:14 jupiter Jellyfin[646572]: [15:29:14] [INF] [51] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: Deleting partial stream file(s) /cache/transcodes/805e79ca0d2774f35f608d33fc7b4d>
Apr 18 18:29:14 jupiter Jellyfin[646572]: [15:29:14] [INF] [58] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -f mov,mp4,m>
Apr 18 18:29:14 jupiter Jellyfin[646572]: [15:29:14] [ERR] [47] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: FFmpeg exited with code 187
Apr 18 18:29:14 jupiter Jellyfin[646572]: [15:29:14] [ERR] [57] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL GET /videos/02f38888-8bdb-b791-31fb-54c191eb17dc/hls1/main/-1.>
Apr 18 18:29:14 jupiter Jellyfin[646572]: MediaBrowser.Common.FfmpegException: FFmpeg exited with code 187
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at MediaBrowser.MediaEncoding.Transcoding.TranscodeManager.StartFfMpeg(StreamState state, String outputPath, String commandLineArguments, Guid userId, Trans>
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Jellyfin.Api.Controllers.DynamicHlsController.GetDynamicSegment(StreamingRequestDto streamingRequest, Int32 segmentId)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Jellyfin.Api.Controllers.DynamicHlsController.GetHlsVideoSegment(Guid itemId, String playlistId, Int32 segmentId, String container, Int64 runtimeTicks, I>
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at lambda_method636(Closure, Object)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapp>
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 act>
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTa>
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, S>
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Sco>
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Sc>
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager>
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.IPBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigur>
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
Apr 18 18:29:14 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context)
Apr 18 18:29:14 jupiter Jellyfin[646572]: [15:29:14] [INF] [58] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: Deleting partial stream file(s) /cache/transcodes/39e9484310b8f13d292a8f767198d3>
Apr 18 18:29:16 jupiter Jellyfin[646572]: [15:29:16] [INF] [57] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app Jellyfin Android 2.6.2 playing IMG_1002. Stopped at >
Apr 18 18:30:16 jupiter Jellyfin[646572]: [15:30:16] [INF] [56] Emby.Server.Implementations.Session.SessionWebSocketListener: Sending ForceKeepAlive message to 1 inactive WebSockets.

When I change to
Acceleration: QSV
FFMPEG error no: 234

Relevant Logs:
Apr 18 18:06:53 jupiter Jellyfin[646572]: [15:06:53] [INF] [35] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for ___. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudio>
Apr 18 18:06:53 jupiter Jellyfin[646572]: [15:06:53] [INF] [28] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: Deleting partial stream file(s) /cache/transcodes/5a97b802cec70478bc66c1f11d1a13>
Apr 18 18:06:53 jupiter Jellyfin[646572]: [15:06:53] [INF] [23] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignor>
Apr 18 18:06:53 jupiter Jellyfin[646572]: [15:06:53] [INF] [23] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -f mov,mp4,m>
Apr 18 18:06:53 jupiter Jellyfin[646572]: [15:06:53] [ERR] [23] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: FFmpeg exited with code 234
Apr 18 18:06:53 jupiter Jellyfin[646572]: [15:06:53] [ERR] [23] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL GET /videos/02f38888-8bdb-b791-31fb-54c191eb17dc/hls1/main/-1.>
Apr 18 18:06:53 jupiter Jellyfin[646572]: MediaBrowser.Common.FfmpegException: FFmpeg exited with code 234
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at MediaBrowser.MediaEncoding.Transcoding.TranscodeManager.StartFfMpeg(StreamState state, String outputPath, String commandLineArguments, Guid userId, Trans>
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Jellyfin.Api.Controllers.DynamicHlsController.GetDynamicSegment(StreamingRequestDto streamingRequest, Int32 segmentId)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Jellyfin.Api.Controllers.DynamicHlsController.GetHlsVideoSegment(Guid itemId, String playlistId, Int32 segmentId, String container, Int64 runtimeTicks, I>
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at lambda_method636(Closure, Object)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapp>
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask
1 act>
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTa>
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, S>
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Sco>
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Sc>
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager>
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.IPBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigur>
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
Apr 18 18:06:53 jupiter Jellyfin[646572]:    at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context)
Apr 18 18:06:53 jupiter Jellyfin[646572]: [15:06:53] [INF] [28] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: Deleting partial stream file(s) /cache/transcodes/3aab000392923a373ea467654fc44a>
Apr 18 18:06:55 jupiter Jellyfin[646572]: [15:06:55] [INF] [28] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app Jellyfin Web 10.10.7 playing IMG_1002. Stopped at 0 >
Apr 18 18:06:57 jupiter Jellyfin[646572]: [15:06:57] [ERR] [28] Jellyfin.Server.Implementations.Trickplay.TrickplayManager: Error creating trickplay images.

Documentation here https://jellyfin.org/docs/general/administration/hardware-acceleration/intel/
states: "QSV and VA-API support headless server on both Windows and Linux, which means a connected monitor is not required."
But the output of command:
podman exec Jellyfin /usr/lib/jellyfin-ffmpeg/vainfo --display drm --device /dev/dri/renderD128;
Trying display: drm
Failed to open the given device!

podman exec Jellyfin ls -lah /dev/dri;
total 0
drwxr-xr-x 2 root   root          60 Apr 18 14:59 .
drwxr-xr-x 6 root   root         360 Apr 18 14:59 ..
crw-rw---- 1 nobody nogroup 226, 128 Apr 12 13:38 renderD128

user is in render group.
Much appreciated any help!


RE: Headless n100 QSV/VA-API failing decoding HEVC video - TheDreadPirate - 2025-04-18

Can you share your full ffmpeg log via privatebin.net?

And the full config from podman?


RE: Headless n100 QSV/VA-API failing decoding HEVC video - andu77 - 2025-04-18

(2025-04-18, 04:22 PM)TheDreadPirate Wrote: Can you share your full ffmpeg log via privatebin.net?

And the full config from podman?

https://privatebin.net/?bdbe12afccb84085#61HcjQRjXwnwDgtxs5kfLjec3oeS8MQFDTpfaMWzdvsW
https://privatebin.net/?c959bafd83696a69#3SuZNn8LPqtqnXnrkZQYnu6CsrkyJDkedEHmRudgqPgG


RE: Headless n100 QSV/VA-API failing decoding HEVC video - TheDreadPirate - 2025-04-18

That is still the main jellyfin log. There is a separate ffmpeg log.

Regardless, it showed me what the FFMPEG command used was. You enabled AV1 ENCODING, which your CPU does not support doing. Only AV1 DEcoding.

Uncheck "allow encoding in AV1 format" in the transcoding dashboard.


RE: Headless n100 QSV/VA-API failing decoding HEVC video - andu77 - 2025-04-18

Ok, I unchecked encode AV1 and start video again.
https://privatebin.net/?69ac75265d9f2e95#fFTK7sbPJ6p2hTNvpT6jDntVNFiAw3K8MFyLw6d3qjt
Basically the error is: No VA display found for device /dev/dri/renderD128.
I'd say is somehow related to machine being headless (?)


RE: Headless n100 QSV/VA-API failing decoding HEVC video - TheDreadPirate - 2025-04-18

In the transcoding dashboard, remove /dev/dri/renderD128 from the "QSV Device" field. First, it isn't necessary when there is only one Intel device present. Second, if there were more than one Intel device present, that field accepts an number that corresponds to the index number of the QSV device you want to use and not a device path.

Out of curiosity, did you follow a guide of some kind to setup Jellyfin? Recently there has been a huge influx of people making this exact same mistake and I don't think it is coincidence.


RE: Headless n100 QSV/VA-API failing decoding HEVC video - andu77 - 2025-04-19

(2025-04-18, 09:06 PM)TheDreadPirate Wrote: Out of curiosity, did you follow a guide of some kind to setup Jellyfin?  Recently there has been a huge influx of people making this exact same mistake and I don't think it is coincidence.

No other than official one but I was comparing video acceleration and quick sync settings. 
Just noticed 'quick' doesn't have anything there. Without reading the comment, I went on and added the path. 
Obviously, I didn't know what I was doing as the comment adds.

Anyway, today I started fresh and focused on:
Device creation failed: -542398533.
So I did:
podman exec Jellyfin id my_user_name;
uid=1033(my_user_name) gid=1033(my_user_name) groups=1033(my_user_name)
nothing about render group (!).
I found this blog post:
https://www.redhat.com/en/blog/supplemental-groups-podman-containers

I tried it and it WORKS!
As it turns out, it's a podman extra configuration required.

P.S. I re-ran 'id' inside container and I get the same output - as if groups are not inherited.
Giving the fact that it works now, I think they propagate.
Maybe other command should be used to really see what groups are in container.