Jellyfin Forum
SOLVED: HW Encoding, Docker, Arc380 - 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: HW Encoding, Docker, Arc380 (/t-solved-hw-encoding-docker-arc380)



HW Encoding, Docker, Arc380 - User 16333 - 2025-03-13

Hello Everyone,

I'm having trouble with hardware encoding on my ARC 380, i get this error in my log:


Quote:
[06:46:20] [INF] [38] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for pat. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True                                                    │
│ [06:46:20] [INF] [21] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: Deleting partial stream file(s) /cache/transcodes/aa9a8c254fab01eace6c2bef74bc130d.m3u8                                                                      │
│ [06:46:21] [INF] [42] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request                                                            │
│ [06:46:21] [INF] [42] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -f matroska -init_hw_device vaapi=va:,vendor_id=0x8086,driver=iHD -init_hw_device qsv=qs │
│ [06:46:21] [ERR] [21] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: FFmpeg exited with code 218                                                                                                                                  │
│ [06:46:21] [ERR] [21] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL GET /videos/31b30acd-2398-fa67-e7ec-9687e900b4ae/hls1/main/-1.mp4.                                                                        │
│ MediaBrowser.Common.FfmpegException: FFmpeg exited with code 218                                                                                                                                                                            │
│    at MediaBrowser.MediaEncoding.Transcoding.TranscodeManager.StartFfMpeg(StreamState state, String outputPath, String commandLineArguments, Guid userId, TranscodingJobType transcodingJobType, CancellationTokenSource cancellationTokenS │
│    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, Nullable1 static, String params, String tag, │
│    at lambda_method1177(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)                                                                                                                                                              │
│ [06:46:21] [INF] [38] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: Deleting partial stream file(s) /cache/transcodes/dc7808c1ba6ffd1b70f1c85dc0107f2f.m3u8                                                                      │
│ [06:46:23] [INF] [60] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app Jellyfin Web 10.10.1 playing Moviename. Stopped at 0 ms                           



Setup:
- K8S Cluster with Talos Linux on Proxmox
- Jellyfin in Docker container
- GPU passed from Proxmox to K8S Node to Container
- Jellyfin Transcoding settings are attached as screenshot
- The same vm/container deployment was working with a intel IGpu
- Jellyfin deployed with official helm chart


When i install and run intel_gpu_top in the container i get an output and there is some activity on blitter and video for a short moment when i try to start to play something:

Code:
intel-gpu-top: Intel Dg2 (Gen12) @ /dev/dri/card0 -    0/  0 MHz; 100% RC6;        0 irqs/s

        ENGINES    BUSY                                                                                                                                                                                                      MI_SEMA MI_WAIT
      Render/3D    0.00% |                                                                                                                                                                                                  |      0%      0%
        Blitter    0.00% |                                                                                                                                                                                                  |      0%      0%
          Video    0.00% |                                                                                                                                                                                                  |      0%      0%
    VideoEnhance    0.00% |                                                                                                                                                                                                  |      0%      0%
      [unknown]    0.00% |                                                                                                                                                                                                  |      0%      0%

  PID              NAME                Render/3D                                  Blitter                                    Video                                  VideoEnhance                              [unknown]



VAInfo also shows a device:

Code:
root@jellyfin-57cb486b5f-swgzk:/# /usr/lib/jellyfin-ffmpeg/vainfo
Trying display: drm
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 24.4.1 (105a308)
vainfo: Supported profile and entrypoints
      VAProfileNone                  : VAEntrypointVideoProc
      VAProfileNone                  : VAEntrypointStats
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileH264Main              : VAEntrypointVLD
      VAProfileH264Main              : VAEntrypointEncSliceLP
      VAProfileH264High              : VAEntrypointVLD
      VAProfileH264High              : VAEntrypointEncSliceLP
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileJPEGBaseline          : VAEntrypointVLD
      VAProfileJPEGBaseline          : VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileHEVCMain              : VAEntrypointVLD
      VAProfileHEVCMain              : VAEntrypointEncSliceLP
      VAProfileHEVCMain10            : VAEntrypointVLD
      VAProfileHEVCMain10            : VAEntrypointEncSliceLP
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile1            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointVLD
      VAProfileVP9Profile3            : VAEntrypointVLD
      VAProfileHEVCMain12            : VAEntrypointVLD
      VAProfileHEVCMain422_10        : VAEntrypointVLD
      VAProfileHEVCMain422_10        : VAEntrypointEncSliceLP
      VAProfileHEVCMain422_12        : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_10        : VAEntrypointVLD
      VAProfileHEVCMain444_10        : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_12        : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain10          : VAEntrypointVLD
      VAProfileHEVCSccMain10          : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444        : VAEntrypointVLD
      VAProfileHEVCSccMain444        : VAEntrypointEncSliceLP
      VAProfileAV1Profile0            : VAEntrypointVLD
      VAProfileAV1Profile0            : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444_10      : VAEntrypointVLD
      VAProfileHEVCSccMain444_10      : VAEntrypointEncSliceLP



Dev/dri also shows the device:

Code:
root@jellyfin-57cb486b5f-swgzk:/dev/dri# ls -l
total 0
crwxrwxrwx 1 root root 226,  0 Mar 12 16:54 card0
crwxrwxrwx 1 root root 226, 128 Mar 12 16:54 renderD128

Any Ideas?

Best

Pat


RE: HW Encoding, Docker, Arc380 - TheDreadPirate - 2025-03-13

You will need to check box low power encoding boxes. It is required for Intel Arc when encoding to H264 or HEVC. Note that low power encoding requires additional setup in some Linux distros.

https://jellyfin.org/docs/general/administration/hardware-acceleration/intel/#low-power-encoding

Also, use this table to check the codec boxes that Arc supports.

https://en.wikipedia.org/wiki/Intel_Quick_Sync_Video#Hardware_decoding_and_encoding


RE: HW Encoding, Docker, Arc380 - User 16333 - 2025-03-13

Thank you very much. That brought me on the right track Smiling-face

Talosvm needs the "siderolabs/mei" extension to use intel discrete GPU and low power mode. Thats why it worked with the igpu.

10.1.9.161 runtime ExtensionStatus 0 1 i915 20241210-v1.9.2
10.1.9.161 runtime ExtensionStatus 1 1 intel-ice-firmware 20241210
10.1.9.161 runtime ExtensionStatus 2 1 intel-ucode 20241112
=> This one | 10.1.9.161 runtime ExtensionStatus 3 1 mei v1.9.2
10.1.9.161 runtime ExtensionStatus 4 1 schematic bf2113e1bea48d566f7d1e08eb780f832ccb56bbd7cf2f95769f7a04f9f2b184
10.1.9.161 runtime ExtensionStatus modules.dep 1 modules.dep 6.12.9-talos

After enabling it everything worked