Jellyfin Forum
SOLVED: Continuous Loading due to FFMPEG's AV1 Encoder Incompatibility with Nvidia 3050 Graph - 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: Continuous Loading due to FFMPEG's AV1 Encoder Incompatibility with Nvidia 3050 Graph (/t-solved-continuous-loading-due-to-ffmpeg-s-av1-encoder-incompatibility-with-nvidia-3050-graph)



Continuous Loading due to FFMPEG's AV1 Encoder Incompatibility with Nvidia 3050 Graph - XiaoHuiHui - 2024-05-01

While attempting to watch videos on the Jellyfin iOS app with the subtitle burning feature, I encountered a problem where the video continuously loads without ever starting. Through the logs, it became evident that the application is endlessly trying to run FFMPEG for streaming, although it constantly results in a failure.
Quote:[19:16:42] [INF] [32] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for root. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[19:16:43] [INF] [35] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[19:16:43] [INF] [35] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -init_hw_device cuda=cu:0 -filter_hw_device cu -hwaccel cuda -hwaccel_output_format cuda -hwaccel_flags +unsafe_output -threads 1 -noautorotate -i file:"/media/american anime/Rick and Morty (2013)/Season 2/S02E04.mkv" -noautoscale -map_metadata -1 -map_chapters -1 -threads 6 -map 0:0 -map 0:1 -map -0:0 -codec:v:0 av1_nvenc -preset p1 -b:v 7073323 -maxrate 7073323 -bufsize 14146646 -g:v:0 72 -keyint_min:v:0 72 -filter_complex "alphasrc=s=1920x1080:r=23.976025:start='0',format=yuva420p,subtitles=f='/media/american anime/Rick and Morty (2013)/Season 2/S02E04.ass':alpha=1:sub2video=1:fontsdir='/cache/attachments/7b45f55261b70ffbf479d4f55c72594f',hwupload=derive_device=cuda[sub];[0:0]setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_cuda=format=yuv420p[main];[main][sub]overlay_cuda=eof_action=pass:repeatlast=0" -start_at_zero -codec:a:0 libfdk_aac -ac 6 -vbr:a 5 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type fmp4 -hls_fmp4_init_filename "ca1c7e297947b36848ae0a84c1d6a721-1.mp4" -start_number 0 -hls_segment_filename "/cache/transcodes/ca1c7e297947b36848ae0a84c1d6a721%d.mp4" -hls_playlist_type vod -hls_list_size 0 -y "/cache/transcodes/ca1c7e297947b36848ae0a84c1d6a721.m3u8"
[19:16:44] [ERR] [35] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: FFmpeg exited with code 1
[19:16:44] [ERR] [35] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL GET /videos/7b45f552-61b7-0ffb-f479-d4f55c72594f/hls1/main/-1.mp4.
MediaBrowser.Common.FfmpegException: FFmpeg exited with code 1
On a closer look at the FFMPEG logs, it appears that the issue is related to usage of the av1_nvenc  encoder:
Quote:ffmpeg version 6.0.1-Jellyfin Copyright © 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
Input #0, matroska,webm, from 'file:/media/american anime/Rick and Morty (2013)/Season 2/S02E04.mkv':
  Metadata:
    encoder        : libebml v1.3.3 + libmatroska v1.4.4
    creation_time  : 2016-06-08T01:19:01.000000Z
  Duration: 00:21:56.51, start: 0.000000, bitrate: 7073 kb/s
  Chapters:
    Chapter #0:0: start 0.000000, end 102.102000
      Metadata:
        title          : 00:00:00.000
    Chapter #0:1: start 102.102000, end 133.925000
      Metadata:
        title          : 00:01:42.102
    Chapter #0:2: start 133.925000, end 571.488000
      Metadata:
        title          : 00:02:13.925
    Chapter #0:3: start 571.488000, end 1232.773000
      Metadata:
        title          : 00:09:31.488
    Chapter #0:4: start 1232.773000, end 1264.263000
      Metadata:
        title          : 00:20:32.773
    Chapter #0:5: start 1264.263000, end 1316.512000
      Metadata:
        title          : 00:21:04.263
  Stream #0:0: Video: h264 (High), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn (default)
    Metadata:
      BPS            : 6431608
      BPS-eng        : 6431608
      DURATION        : 00:21:56.482000000
      DURATION-eng    : 00:21:56.482000000
      NUMBER_OF_FRAMES: 31564
      NUMBER_OF_FRAMES-eng: 31564
      NUMBER_OF_BYTES : 1058387046
      NUMBER_OF_BYTES-eng: 1058387046
      _STATISTICS_WRITING_APP: mkvmerge v9.2.0 ('Photograph') 64bit
      _STATISTICS_WRITING_APP-eng: mkvmerge v9.2.0 ('Photograph') 64bit
      _STATISTICS_WRITING_DATE_UTC: 2016-06-08 01:19:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-06-08 01:19:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:1(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 640 kb/s (default)
    Metadata:
      BPS            : 640000
      BPS-eng        : 640000
      DURATION        : 00:21:56.512000000
      DURATION-eng    : 00:21:56.512000000
      NUMBER_OF_FRAMES: 41141
      NUMBER_OF_FRAMES-eng: 41141
      NUMBER_OF_BYTES : 105320960
      NUMBER_OF_BYTES-eng: 105320960
      _STATISTICS_WRITING_APP: mkvmerge v9.2.0 ('Photograph') 64bit
      _STATISTICS_WRITING_APP-eng: mkvmerge v9.2.0 ('Photograph') 64bit
      _STATISTICS_WRITING_DATE_UTC: 2016-06-08 01:19:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-06-08 01:19:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
[Parsed_subtitles_2 @ 0x5afdb64aac80] libass API version: 0x1701000
[Parsed_subtitles_2 @ 0x5afdb64aac80] libass source: commit: 0.17.1-0-ge8ad72accd3a84268275a9385beb701c9284e5b3
[Parsed_subtitles_2 @ 0x5afdb64aac80] Shaper: FriBidi 1.0.13 (SIMPLE) HarfBuzz-ng 8.4.0 (COMPLEX)
[Parsed_subtitles_2 @ 0x5afdb64aac80] Using font provider fontconfig
Stream mapping:
  Stream #0:0 (h264) -> setparams:default (graph 0)
  overlay_cuda:default (graph 0) -> Stream #0:0 (av1_nvenc)
  Stream #0:1 -> #0:1 (ac3 (native) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
[libfdk_aac @ 0x5afdb63f3000] Note, the VBR setting is unsupported and only works with some parameter combinations
[Parsed_subtitles_2 @ 0x5afdb6743440] libass API version: 0x1701000
[Parsed_subtitles_2 @ 0x5afdb6743440] libass source: commit: 0.17.1-0-ge8ad72accd3a84268275a9385beb701c9284e5b3
[Parsed_subtitles_2 @ 0x5afdb6743440] Shaper: FriBidi 1.0.13 (SIMPLE) HarfBuzz-ng 8.4.0 (COMPLEX)
[Parsed_subtitles_2 @ 0x5afdb6743440] Using font provider fontconfig
[Parsed_subtitles_2 @ 0x5afdb6743440] fontselect: (Arial, 400, 0) -> /usr/local/share/fonts/Arial.ttf, 0, ArialMT
[Parsed_subtitles_2 @ 0x5afdb6743440] fontselect: (Arial, 700, 0) -> /usr/local/share/fonts/Arial.ttf, 0, ArialMT
[Parsed_subtitles_2 @ 0x5afdb6743440] fontselect: (时尚中黑简体, 700, 0) -> /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf, 0, DejaVuSans-Bold
[Parsed_subtitles_2 @ 0x5afdb6743440] Glyph 0x7FFB not found, selecting one more font for (时尚中黑简体, 700, 0)
[Parsed_subtitles_2 @ 0x5afdb6743440] fontselect: (时尚中黑简体, 700, 0) -> /usr/local/share/fonts/msyhbd.ttc, 0, MicrosoftYaHei-Bold
[av1_nvenc @ 0x5afdb6407680] Codec not supported
[av1_nvenc @ 0x5afdb6407680] Provided device doesn't support required NVENC features
[vost#0:0/av1_nvenc @ 0x5afdb6413640] Error initializing output stream: Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
[libfdk_aac @ 0x5afdb63f3000] 2 frames left in the queue on closing
Conversion failed!
As far as my understanding, the graphics card I use, Nvidia 3050, only supports AV1 decoding, while only the 40 series graphics cards begin to support AV1 NVENC. This raises the question, why was AV1 chosen as the default encoder? Additionally, how can I manually switch from it to a supported encoder like hevc_nvenc or h264_nvenc?

Configuration Details:
Physical Machine: PVE 6.8.4-2
Virtual Machine: Ubuntu 22.04 with direct pass-through for Nvidia 3050 graphics card
Jellyfin Installation: Running in Docker with the latest Jellyfin:unstable image.

In the Jellyfin startup logs, the mention of av1_nvenc as a supported codec has been a cause of confusion, considering my graphics card's capability. The detailed logs are as:
Quote:[19:15:39] [INF] [1] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available decoders: ["libdav1d", "av1", "av1_cuvid", "av1_qsv", "h264", "h264_qsv", "h264_cuvid", "hevc", "hevc_qsv", "hevc_cuvid", "mpeg2video", "mpeg2_qsv", "mpeg2_cuvid", "mpeg4", "mpeg4_cuvid", "msmpeg4", "vc1_qsv", "vc1_cuvid", "vp8", "libvpx", "vp8_cuvid", "vp8_qsv", "vp9", "libvpx-vp9", "vp9_cuvid", "vp9_qsv", "aac", "ac3", "dca", "flac", "mp3", "truehd"]
[19:15:39] [INF] [1] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available encoders: ["libsvtav1", "av1_nvenc", "av1_qsv", "av1_amf", "av1_vaapi", "libx264", "h264_amf", "h264_nvenc", "h264_qsv", "h264_v4l2m2m", "h264_vaapi", "libx265", "hevc_amf", "hevc_nvenc", "hevc_qsv", "hevc_vaapi", "mpeg4", "msmpeg4", "libvpx", "libvpx-vp9", "aac", "libfdk_aac", "ac3", "alac", "dca", "flac", "libmp3lame", "libopus", "truehd", "libvorbis", "srt"]
[19:15:39] [INF] [1] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available filters: ["deinterlace_qsv", "deinterlace_vaapi", "hwupload_cuda", "hwupload_vaapi", "libplacebo", "overlay_opencl", "overlay_qsv", "overlay_vaapi", "overlay_vulkan", "overlay_cuda", "procamp_vaapi", "scale_cuda", "scale_opencl", "scale_qsv", "scale_vaapi", "scale_vulkan", "tonemap_cuda", "tonemap_opencl", "tonemap_vaapi", "vpp_qsv", "yadif_cuda", "zscale", "alphasrc"]
[19:15:39] [INF] [1] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available hwaccel types: ["cuda", "vaapi", "qsv", "drm", "opencl", "vulkan"]



RE: Continuous Loading due to FFMPEG's AV1 Encoder Incompatibility with Nvidia 3050 Graph - gnattu - 2024-05-01

You disable allow av1 encoding in the transcoding panel


RE: Continuous Loading due to FFMPEG's AV1 Encoder Incompatibility with Nvidia 3050 Graph - XiaoHuiHui - 2024-05-01

(2024-05-01, 12:19 PM)gnattu Wrote: You disable allow av1 encoding in the transcoding panel

[Image: 6ywVxhj1vp2fMH7.png]
I don’t see any options for AV1 encoding, only decoding options.


RE: Continuous Loading due to FFMPEG's AV1 Encoder Incompatibility with Nvidia 3050 Graph - bitmap - 2024-05-01

Your dashboard looks like 10.8 but allow encoding to AV1 isn't available until the release of 10.9 (or if you're using an unstable branch).

What version of the server are you running?


RE: Continuous Loading due to FFMPEG's AV1 Encoder Incompatibility with Nvidia 3050 Graph - XiaoHuiHui - 2024-05-01

(2024-05-01, 12:33 PM)bitmap Wrote: Your dashboard looks like 10.8 but allow encoding to AV1 isn't available until the release of 10.9 (or if you're using an unstable branch).

What version of the server are you running?

jellyfin:unstable image (Last pushed 2 days ago by jellyfinbot) in docker. Should I change it to stable?

Version infomation in log:
Quote:[19:14:41] [INF] [1] Main: Jellyfin version: 10.9.0

Update:
I think I've identified the issue. I migrated from an older version of Jellyfin which ran on a different machine. Since that machine was decommissioned, I set up a new one with the current configuration and recompiled all the Docker containers. In my previous docker-compose file, the version I used for Jellyfin was 'unstable', so it automatically used the latest Jellyfin version when running.

Now I've tried changing the Docker image version back to the default 'latest', and the version in the logs is now 10.8.13, not 10.9. I'm not sure if 10.9 is a release version. Since my configuration file has already been updated to the new version, Jellyfin reported a slew of errors, stating that it couldn't read the config file. I think I might have to reset Jellyfin completely to resolve this issue.

Perhaps I should consider submitting this issue on Github? I'm not sure if it's possible for this to be fixed in future releases. If it is, I might choose to temporarily endure until the issue is resolved. Otherwise, I might have to downgrade and reconfigure the whole Jellyfin.

Update 2:
The issue has been resolved. I usually use the Jellyfin client for Windows, whose interface has not been updated yet. When I accessed the web page, I was able to see the AV1 encoding option and successfully turned it off. Additionally, in the encoding.xml file within the Jellyfin configuration folder, I was able to edit the 'AllowAv1Encoding' item to disable the AV1 encoding function.

Thanks to everyone who provided help.


RE: Continuous Loading due to FFMPEG's AV1 Encoder Incompatibility with Nvidia 3050 Graph - sek0n - 2024-05-27

(2024-05-01, 12:19 PM)gnattu Wrote: You disable allow av1 encoding in the transcoding panel

I just wanted to say thanks. This issue popped up for me today after moving my server to a new case last week. Don't know how I missed the option when looking, but it worked. lol

and thanks OP for bringing it up Red-heart