• Login
  • Register
  • Login Register
    Login
    Username/Email:
    Password:
    Or login with a social network below
  • Forum
  • Website
  • GitHub
  • Status
  • Translation
  • Features
  • Team
  • Rules
  • Help
  • Feeds
User Links
  • Login
  • Register
  • Login Register
    Login
    Username/Email:
    Password:
    Or login with a social network below

    Useful Links Forum Website GitHub Status Translation Features Team Rules Help Feeds
    Jellyfin Forum Support Troubleshooting SOLVED: Transcode Error - FfmpegException

     
    • 0 Vote(s) - 0 Average

    SOLVED: Transcode Error - FfmpegException

    Failed to use transcode in Docker running on Ubuntu Server on an AMD Radeon HD 7570
    Slowy
    Offline

    Junior Member

    Posts: 3
    Threads: 1
    Joined: 2024 Jul
    Reputation: 0
    Country:Brazil
    #1
    2024-07-17, 07:39 PM (This post was last modified: 2024-07-17, 07:44 PM by Slowy. Edited 1 time in total.)
    Hello!
    Recently, I've started getting interested in the world of self-hosting and Linux. I assembled a PC with old parts and installed Ubuntu Server 24.04 LTS.
    I really liked Jellyfin, and decided to set up transcoding on it, but I'm having some problems...


    Docker Compose:

    Code:
    version: '3'
    services:
      jellyfin:
        image: jellyfin/jellyfin
        container_name: jellyfin
        user: 1000:1000
        group_add:
          - "993"
    #    network_mode: 'host'
        volumes:
          - config:/config
          - /srv/cache:/cache
          - /cloud/1hd/media-center:/media
        devices:
          - /dev/dri/renderD128:/dev/dri/renderD128
        ports:
          - 8096:8096
        restart: always

    volumes:
      config:
        driver: local


    Command to check VA-API that I found in the Jellyfin documentation:

    Code:
    $ docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/vainfo --display drm --device /dev/dri/renderD128
    Trying display: drm
    libva info: VA-API version 1.21.0
    libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/r600_drv_video.so
    libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/r600_drv_video.so
    libva info: Trying to open /usr/lib/dri/r600_drv_video.so
    libva info: Trying to open /usr/local/lib/dri/r600_drv_video.so
    libva info: va_openDriver() returns -1
    libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/radeonsi_drv_video.so
    libva info: Found init function __vaDriverInit_1_21
    r600: driver missing
    libva error: /usr/lib/jellyfin-ffmpeg/lib/dri/radeonsi_drv_video.so init failed
    libva info: va_openDriver() returns 2
    vaInitialize failed with error code 2 (resource allocation failed),exit


    Command to check Vulkan runtime status that I found in the Jellyfin documentation:

    Code:
    $ docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/ffmpeg -v debug -init_hw_device vulkan
    ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
      built with gcc 12 (Debian 12.2.0-14)
      configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
      libavutil      58.  2.100 / 58.  2.100
      libavcodec    60.  3.100 / 60.  3.100
      libavformat    60.  3.100 / 60.  3.100
      libavdevice    60.  1.100 / 60.  1.100
      libavfilter    9.  3.100 /  9.  3.100
      libswscale      7.  1.100 /  7.  1.100
      libswresample  4. 10.100 /  4. 10.100
      libpostproc    57.  1.100 / 57.  1.100
    Splitting the commandline.
    Reading option '-v' ... matched as option 'v' (set logging level) with argument 'debug'.
    Reading option '-init_hw_device' ... matched as option 'init_hw_device' (initialise hardware device) with argument 'vulkan'.
    Finished splitting the commandline.
    Parsing a group of options: global .
    Applying option v (set logging level) with argument debug.
    Applying option init_hw_device (initialise hardware device) with argument vulkan.
    [AVHWDeviceContext @ 0x5f7e74727500] Supported validation layers:
    [AVHWDeviceContext @ 0x5f7e74727500]    VK_LAYER_MESA_device_select
    [AVHWDeviceContext @ 0x5f7e74727500]    VK_LAYER_MESA_overlay
    [AVHWDeviceContext @ 0x5f7e74727500] No devices found: VK_ERROR_INITIALIZATION_FAILED!
    Device creation failed: -19.
    Failed to set value 'vulkan' for option 'init_hw_device': No such device
    Error parsing global options: No such device

    Note: I tried with Jellyfin running outside of Docker and the result is the same.


    When activating transcoding with only H264 enabled and trying to watch a media with the same codec, I get the error:

    Code:
    [18:51:45] [ERR] [11] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: FFmpeg exited with code 1
    [18:51:45] [ERR] [11] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL GET /videos/40145e11-0d52-8ea8-d1e0-d7a18b1e60a8/hls1/main/0.ts.
    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.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_method1094(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)


    However, using the iGPU of the i3-4150 (devices: - /dev/dri/renderD129: /dev/dri/renderD129), the transcoding works:

    Code:
    $ docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/vainfo
    Trying display: drm
    libva info: VA-API version 1.21.0
    libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
    libva info: Found init function __vaDriverInit_1_21
    libva error: /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so init failed
    libva info: va_openDriver() returns 1
    libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/i965_drv_video.so
    libva info: Found init function __vaDriverInit_1_21
    libva info: va_openDriver() returns 0
    vainfo: VA-API version: 1.21 (libva 2.21.0)
    vainfo: Driver version: Intel i965 driver for Intel(R) Haswell - 2.4.0.pre1 ()
    vainfo: Supported profile and entrypoints
          VAProfileMPEG2Simple            : VAEntrypointVLD
          VAProfileMPEG2Simple            : VAEntrypointEncSlice
          VAProfileMPEG2Main              : VAEntrypointVLD
          VAProfileMPEG2Main              : VAEntrypointEncSlice
          VAProfileH264ConstrainedBaseline: VAEntrypointVLD
          VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
          VAProfileH264Main              : VAEntrypointVLD
          VAProfileH264Main              : VAEntrypointEncSlice
          VAProfileH264High              : VAEntrypointVLD
          VAProfileH264High              : VAEntrypointEncSlice
          VAProfileH264MultiviewHigh      : VAEntrypointVLD
          VAProfileH264MultiviewHigh      : VAEntrypointEncSlice
          VAProfileH264StereoHigh        : VAEntrypointVLD
          VAProfileH264StereoHigh        : VAEntrypointEncSlice
          VAProfileVC1Simple              : VAEntrypointVLD
          VAProfileVC1Main                : VAEntrypointVLD
          VAProfileVC1Advanced            : VAEntrypointVLD
          VAProfileNone                  : VAEntrypointVideoProc
          VAProfileJPEGBaseline          : VAEntrypointVLD

    And the media plays without issues.

    I know very little about Linux and so far I have been managing with ChatGPT, YouTube videos, and documentation, but I'm not able to solve this.
    If you have any idea what it might be and could help me, I would be very grateful.

    Note: I don't speak English, I asked GPT to translate for me, I apologize if there are any errors.

    Information that may be useful:
    My Jellyfin is running on Docker.
    Jellyfin version: 10.9.7
    OS: Ubuntu 24.04 LTS

    Hardware Info:

    CPU: Intel Core i3-4150
    GPU: AMD Radeon HD 7570
    HD1: SAMSUNG HD322HJ
    HD2: WDC WD5000AAKX-0
    Go to solution
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,375
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #2
    2024-07-17, 07:55 PM
    The Radeon HD 7570 had very limited video encoding capabilities even when it was new. And driver support for that card was dropped a long time ago.

    But there is still support for the i3-4570 with VAAPI.
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    Slowy
    Offline

    Junior Member

    Posts: 3
    Threads: 1
    Joined: 2024 Jul
    Reputation: 0
    Country:Brazil
    #3
    2024-07-17, 08:20 PM
    (2024-07-17, 07:55 PM)TheDreadPirate Wrote: The Radeon HD 7570 had very limited video encoding capabilities even when it was new.  And driver support for that card was dropped a long time ago.

    But there is still support for the i3-4570 with VAAPI.

    Understood.
    I thought it was supported, because when I run "$ sudo /usr/lib/jellyfin-ffmpeg/vainfo --display drm --device /dev/dri/renderD128" it seems to work.
    Code:
    $ sudo /usr/lib/jellyfin-ffmpeg/vainfo --display drm --device /dev/dri/renderD128
    Trying display: drm
    libva info: VA-API version 1.21.0
    libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/r600_drv_video.so
    libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/r600_drv_video.so
    libva info: Found init function __vaDriverInit_1_20
    libva info: va_openDriver() returns 0
    vainfo: VA-API version: 1.21 (libva 2.21.0)
    vainfo: Driver version: Mesa Gallium driver 24.2~git2407160600.6f02ec~oibaf~n for AMD TURKS (DRM 2.50.0 / 6.8.0-38-generic, LLVM 17.0.6)
    vainfo: Supported profile and entrypoints
          VAProfileMPEG2Simple            : VAEntrypointVLD
          VAProfileMPEG2Main              : VAEntrypointVLD
          VAProfileVC1Simple              : VAEntrypointVLD
          VAProfileVC1Main                : VAEntrypointVLD
          VAProfileVC1Advanced            : VAEntrypointVLD
          VAProfileH264ConstrainedBaseline: VAEntrypointVLD
          VAProfileH264Main              : VAEntrypointVLD
          VAProfileH264High              : VAEntrypointVLD
          VAProfileH264High10            : VAEntrypointVLD
          VAProfileNone                  : VAEntrypointVideoProc


    In the case of using the i3 with VAAPI, is there any way to minimize this "pixelated" effect?
       
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,375
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #4
    2024-07-17, 09:04 PM
    No. Newer Intel CPUs not only added newer codecs, but improved quality. You are limited by the capability of the encoder in your model.
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    Slowy
    Offline

    Junior Member

    Posts: 3
    Threads: 1
    Joined: 2024 Jul
    Reputation: 0
    Country:Brazil
    #5
    2024-07-17, 09:28 PM
    (2024-07-17, 09:04 PM)TheDreadPirate Wrote: No.  Newer Intel CPUs not only added newer codecs, but improved quality.  You are limited by the capability of the encoder in your model.

    Ok
    Thank you very much for the information and for your time, I appreciate the help. 
    Red-heart
    « Next Oldest | Next Newest »

    Users browsing this thread: 1 Guest(s)


    • View a Printable Version
    • Subscribe to this thread
    Forum Jump:

    Home · Team · Help · Contact
    © Designed by D&D - Powered by MyBB
    L


    Jellyfin

    The Free Software Media System

    Linear Mode
    Threaded Mode