Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HW-Accelerated encoding to HEVC fails with QuickSync over VA-API #209

Open
Clubfan22 opened this issue Dec 29, 2022 · 32 comments
Open

HW-Accelerated encoding to HEVC fails with QuickSync over VA-API #209

Clubfan22 opened this issue Dec 29, 2022 · 32 comments
Labels
bug Something isn't working upstream

Comments

@Clubfan22
Copy link

Describe The Bug

When transcoding a VP9 video stream to HEVC with QuickSync, enabling the "prefer native encoder" setting of Jellyfin (leading to using the VAAPI API for hardware acceleration) results in an "Error while filtering: Cannot allocate memory" error at the start of transcoding.
If that setting, however, is unchecked (leading to using native QuickSync API for hardware acceleration), transcoding works flawlessly.

I am not sure if different input formats lead to different results, I've only tested it for VP9 in a WebM container.

Steps To Reproduce

  1. Enable QuickSync hardware acceleration
  2. Enable "VP9 Decoding", enable "Prefer System Native Hw Decoder", enable "Hardware Encoding", disable "Low-Power Encoding" for both H.264 and HEVC, enable "Encoding to HEVC"
  3. Play file (example was obtained via yt-dlp --audio-format opus https://www.youtube.com/watch\?v\=ksQqPHJZVo4) via AndroidTV client for HEVC transcoding

Expected Behavior
Successful transcoding given that the hardware is actually capable of decoding VP9 and encoding HEVC

System (please complete the following information):

  • Platform: Linux
  • Operating System: Synology DSM 7.1.1-42962 Update 3
  • Virtualization: Docker
  • Jellyfin Version: 10.8.8
  • Jellyfin-FFmpeg Version: 5.1.2
  • Hardware Acceleration: QSV over VAAPI
  • CPU & GPU Model: Intel J4125

MediaInfo

General
Complete name                            : /home/marco/Pascow - Königreiche im Winter - Featuring Apocalypse Vega (Official Video) [ksQqPHJZVo4].webm
Format                                   : WebM
Format version                           : Version 4
File size                                : 221 MiB
Duration                                 : 3 min 6 s
Overall bit rate                         : 9 926 kb/s
Writing application                      : Lavf58.29.100
Writing library                          : Lavf58.29.100

Video
ID                                       : 1
Format                                   : VP9
Codec ID                                 : V_VP9
Duration                                 : 3 min 6 s
Width                                    : 3 840 pixels
Height                                   : 2 026 pixels
Display aspect ratio                     : 1.895
Frame rate mode                          : Constant
Frame rate                               : 25.000 FPS
Color space                              : YUV
Language                                 : English
Default                                  : Yes
Forced                                   : No
Color range                              : Limited
Color primaries                          : BT.709
Transfer characteristics                 : BT.709
Matrix coefficients                      : BT.709

Audio
ID                                       : 2
Format                                   : Opus
Codec ID                                 : A_OPUS
Duration                                 : 3 min 6 s
Channel(s)                               : 2 channels
Channel layout                           : L R
Sampling rate                            : 48.0 kHz
Bit depth                                : 32 bits
Compression mode                         : Lossy
Language                                 : English
Default                                  : Yes
Forced                                   : No

FFmpeg Logs
Failed conversion:

/videos/b281d967-8bc3-f4c0-e5f9-0376f35b6eb5/hls1/main/0.ts

{"Protocol":0,"Id":"b281d9678bc3f4c0e5f90376f35b6eb5","Path":"/external/Mediatheken/Filme/Pascow - K\u00F6nigreiche im Winter - Featuring Apocalypse Vega (Official Video) [ksQqPHJZVo4].webm","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":"mkv,webm","Size":231339952,"Name":"Pascow - K\u00F6nigreiche im Winter - Featuring Apocalypse Vega (Official Video) [ksQqPHJZVo4]","IsRemote":false,"ETag":"7462505a5bc64bdddb706ed1779aac33","RunTimeTicks":1864610048,"ReadAtNativeFramerate":false,"IgnoreDts":false,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true,"IsInfiniteStream":false,"RequiresOpening":false,"OpenToken":null,"RequiresClosing":false,"LiveStreamId":null,"BufferMs":null,"RequiresLooping":false,"SupportsProbing":true,"VideoType":0,"IsoType":null,"Video3DFormat":null,"MediaStreams":[{"Codec":"vp9","CodecTag":null,"Language":"eng","ColorRange":null,"ColorSpace":"bt709","ColorTransfer":"bt709","ColorPrimaries":"bt709","DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":null,"VideoRange":"SDR","VideoRangeType":"SDR","VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"4K VP9 SDR","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":9925505,"BitDepth":8,"RefFrames":1,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":true,"IsForced":false,"Height":2026,"Width":3840,"AverageFrameRate":25,"RealFrameRate":25,"Profile":"Profile 0","Type":1,"AspectRatio":"1920:1013","Index":0,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":"yuv420p","Level":-99,"IsAnamorphic":null},{"Codec":"opus","CodecTag":null,"Language":"eng","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":null,"VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"Eng - OPUS - Stereo - Default","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":"stereo","BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":2,"SampleRate":48000,"IsDefault":true,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null}],"MediaAttachments":[],"Formats":[],"Bitrate":9925505,"Timestamp":null,"RequiredHttpHeaders":{},"TranscodingUrl":null,"TranscodingSubProtocol":null,"TranscodingContainer":null,"AnalyzeDurationMs":null,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null}

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -init_hw_device vaapi=va:,driver=iHD,kernel_driver=i915 -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi -autorotate 0 -i file:"/external/Mediatheken/Filme/Pascow - Königreiche im Winter - Featuring Apocalypse Vega (Official Video) [ksQqPHJZVo4].webm" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 hevc_qsv -tag:v:0 hvc1 -preset 7 -b:v 9925505 -maxrate 9925505 -bufsize 19851010 -g:v:0 75 -keyint_min:v:0 75 -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=format=nv12,hwmap=derive_device=qsv,format=qsv" -codec:a:0 libfdk_aac -ac 2 -ab 128000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_segment_filename "/config/transcodes/e6dc25a3f0fff7a1b82986583749ee5d%d.ts" -hls_playlist_type vod -hls_list_size 0 -y "/config/transcodes/e6dc25a3f0fff7a1b82986583749ee5d.m3u8"


ffmpeg version 5.1.2-Jellyfin Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-shared --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-static --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
Input #0, matroska,webm, from 'file:/external/Mediatheken/Filme/Pascow - Königreiche im Winter - Featuring Apocalypse Vega (Official Video) [ksQqPHJZVo4].webm':
  Metadata:
    ENCODER         : Lavf58.29.100
  Duration: 00:03:06.46, start: -0.007000, bitrate: 9925 kb/s
  Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709), 3840x2026, SAR 1:1 DAR 1920:1013, 25 fps, 25 tbr, 1k tbn (default)
    Metadata:
      DURATION        : 00:03:06.440000000
  Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
    Metadata:
      DURATION        : 00:03:06.461000000
Stream mapping:
  Stream #0:0 -> #0:0 (vp9 (native) -> hevc (hevc_qsv))
  Stream #0:1 -> #0:1 (opus (native) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
Output #0, hls, to '/config/transcodes/e6dc25a3f0fff7a1b82986583749ee5d.m3u8':
  Metadata:
    encoder         : Lavf59.27.100
  Stream #0:0: Video: hevc (hvc1 / 0x31637668), qsv(tv, bt709, progressive), 3840x2026 [SAR 1:1 DAR 1920:1013], q=2-31, 9925 kb/s, 25 fps, 90k tbn (default)
    Metadata:
      encoder         : Lavc59.37.100 hevc_qsv
    Side data:
      cpb: bitrate max/min/avg: 9925505/0/9925505 buffer size: 19851010 vbv_delay: N/A
  Stream #0:1: Audio: aac, 48000 Hz, stereo, s16, 128 kb/s (default)
    Metadata:
      encoder         : Lavc59.37.100 libfdk_aac
frame=    1 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x    
Error while filtering: Cannot allocate memory
Failed to inject frame into filter network: Cannot allocate memory
Error while processing the decoded data for stream #0:0
[libfdk_aac @ 0x564fc410f8c0] 2 frames left in the queue on closing
Conversion failed!

Successful transcoding when disabling "Prefer System Native Hw Decoder" in Step 3:

/videos/b281d967-8bc3-f4c0-e5f9-0376f35b6eb5/hls1/main/0.ts

{"Protocol":0,"Id":"b281d9678bc3f4c0e5f90376f35b6eb5","Path":"/external/Mediatheken/Filme/Pascow - K\u00F6nigreiche im Winter - Featuring Apocalypse Vega (Official Video) [ksQqPHJZVo4].webm","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":"mkv,webm","Size":231339952,"Name":"Pascow - K\u00F6nigreiche im Winter - Featuring Apocalypse Vega (Official Video) [ksQqPHJZVo4]","IsRemote":false,"ETag":"7462505a5bc64bdddb706ed1779aac33","RunTimeTicks":1864610048,"ReadAtNativeFramerate":false,"IgnoreDts":false,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true,"IsInfiniteStream":false,"RequiresOpening":false,"OpenToken":null,"RequiresClosing":false,"LiveStreamId":null,"BufferMs":null,"RequiresLooping":false,"SupportsProbing":true,"VideoType":0,"IsoType":null,"Video3DFormat":null,"MediaStreams":[{"Codec":"vp9","CodecTag":null,"Language":"eng","ColorRange":null,"ColorSpace":"bt709","ColorTransfer":"bt709","ColorPrimaries":"bt709","DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":null,"VideoRange":"SDR","VideoRangeType":"SDR","VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"4K VP9 SDR","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":9925505,"BitDepth":8,"RefFrames":1,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":true,"IsForced":false,"Height":2026,"Width":3840,"AverageFrameRate":25,"RealFrameRate":25,"Profile":"Profile 0","Type":1,"AspectRatio":"1920:1013","Index":0,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":"yuv420p","Level":-99,"IsAnamorphic":null},{"Codec":"opus","CodecTag":null,"Language":"eng","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":null,"VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"Eng - OPUS - Stereo - Default","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":"stereo","BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":2,"SampleRate":48000,"IsDefault":true,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null}],"MediaAttachments":[],"Formats":[],"Bitrate":9925505,"Timestamp":null,"RequiredHttpHeaders":{},"TranscodingUrl":null,"TranscodingSubProtocol":null,"TranscodingContainer":null,"AnalyzeDurationMs":null,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null}

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -init_hw_device vaapi=va:,driver=iHD,kernel_driver=i915 -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel qsv -hwaccel_output_format qsv -c:v vp9_qsv -autorotate 0 -i file:"/external/Mediatheken/Filme/Pascow - Königreiche im Winter - Featuring Apocalypse Vega (Official Video) [ksQqPHJZVo4].webm" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 hevc_qsv -tag:v:0 hvc1 -preset 7 -b:v 9925505 -maxrate 9925505 -bufsize 19851010 -g:v:0 75 -keyint_min:v:0 75 -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_qsv=format=nv12" -codec:a:0 libfdk_aac -ac 2 -ab 128000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_segment_filename "/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa95%d.ts" -hls_playlist_type vod -hls_list_size 0 -y "/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa95.m3u8"


ffmpeg version 5.1.2-Jellyfin Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-shared --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-static --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
Input #0, matroska,webm, from 'file:/external/Mediatheken/Filme/Pascow - Königreiche im Winter - Featuring Apocalypse Vega (Official Video) [ksQqPHJZVo4].webm':
  Metadata:
    ENCODER         : Lavf58.29.100
  Duration: 00:03:06.46, start: -0.007000, bitrate: 9925 kb/s
  Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709), 3840x2026, SAR 1:1 DAR 1920:1013, 25 fps, 25 tbr, 1k tbn (default)
    Metadata:
      DURATION        : 00:03:06.440000000
  Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
    Metadata:
      DURATION        : 00:03:06.461000000
Stream mapping:
  Stream #0:0 -> #0:0 (vp9 (vp9_qsv) -> hevc (hevc_qsv))
  Stream #0:1 -> #0:1 (opus (native) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
Output #0, hls, to '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa95.m3u8':
  Metadata:
    encoder         : Lavf59.27.100
  Stream #0:0: Video: hevc (hvc1 / 0x31637668), qsv(tv, bt709, progressive), 3840x2026 [SAR 1:1 DAR 1920:1013], q=2-31, 9925 kb/s, 25 fps, 90k tbn (default)
    Metadata:
      encoder         : Lavc59.37.100 hevc_qsv
    Side data:
      cpb: bitrate max/min/avg: 9925505/0/9925505 buffer size: 19851010 vbv_delay: N/A
  Stream #0:1: Audio: aac, 48000 Hz, stereo, s16, 128 kb/s (default)
    Metadata:
      encoder         : Lavc59.37.100 libfdk_aac
frame=    1 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x    
frame=   18 fps=0.0 q=-0.0 size=N/A time=00:00:00.70 bitrate=N/A speed=1.15x    
frame=   34 fps= 30 q=-0.0 size=N/A time=00:00:01.34 bitrate=N/A speed= 1.2x    
frame=   51 fps= 31 q=-0.0 size=N/A time=00:00:02.02 bitrate=N/A speed=1.24x    
frame=   68 fps= 31 q=-0.0 size=N/A time=00:00:02.70 bitrate=N/A speed=1.25x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa950.ts' for writing
frame=   85 fps= 32 q=-0.0 size=N/A time=00:00:03.39 bitrate=N/A speed=1.27x    
frame=  102 fps= 32 q=-0.0 size=N/A time=00:00:04.07 bitrate=N/A speed=1.28x    
frame=  118 fps= 32 q=-0.0 size=N/A time=00:00:04.71 bitrate=N/A speed=1.28x    
frame=  134 fps= 32 q=-0.0 size=N/A time=00:00:05.35 bitrate=N/A speed=1.27x    
frame=  150 fps= 32 q=-0.0 size=N/A time=00:00:05.99 bitrate=N/A speed=1.26x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa951.ts' for writing
frame=  166 fps= 32 q=-0.0 size=N/A time=00:00:06.63 bitrate=N/A speed=1.26x    
frame=  182 fps= 32 q=-0.0 size=N/A time=00:00:07.27 bitrate=N/A speed=1.26x    
frame=  198 fps= 32 q=-0.0 size=N/A time=00:00:07.91 bitrate=N/A speed=1.26x    
frame=  214 fps= 32 q=-0.0 size=N/A time=00:00:08.55 bitrate=N/A speed=1.26x    
frame=  230 fps= 32 q=-0.0 size=N/A time=00:00:09.19 bitrate=N/A speed=1.26x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa952.ts' for writing
frame=  247 fps= 32 q=-0.0 size=N/A time=00:00:09.87 bitrate=N/A speed=1.26x    
frame=  263 fps= 32 q=-0.0 size=N/A time=00:00:10.51 bitrate=N/A speed=1.26x    
frame=  279 fps= 31 q=-0.0 size=N/A time=00:00:11.15 bitrate=N/A speed=1.26x    
frame=  295 fps= 31 q=-0.0 size=N/A time=00:00:11.79 bitrate=N/A speed=1.26x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa953.ts' for writing
frame=  312 fps= 32 q=-0.0 size=N/A time=00:00:12.45 bitrate=N/A speed=1.26x    
frame=  328 fps= 32 q=-0.0 size=N/A time=00:00:13.09 bitrate=N/A speed=1.26x    
frame=  344 fps= 32 q=-0.0 size=N/A time=00:00:13.73 bitrate=N/A speed=1.26x    
frame=  359 fps= 31 q=-0.0 size=N/A time=00:00:14.35 bitrate=N/A speed=1.26x    
frame=  374 fps= 31 q=-0.0 size=N/A time=00:00:14.95 bitrate=N/A speed=1.25x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa954.ts' for writing
frame=  390 fps= 31 q=-0.0 size=N/A time=00:00:15.59 bitrate=N/A speed=1.25x    
frame=  405 fps= 31 q=-0.0 size=N/A time=00:00:16.19 bitrate=N/A speed=1.25x    
frame=  420 fps= 31 q=-0.0 size=N/A time=00:00:16.78 bitrate=N/A speed=1.25x    
frame=  435 fps= 31 q=-0.0 size=N/A time=00:00:17.38 bitrate=N/A speed=1.24x    
frame=  451 fps= 31 q=-0.0 size=N/A time=00:00:18.02 bitrate=N/A speed=1.25x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa955.ts' for writing
frame=  469 fps= 31 q=-0.0 size=N/A time=00:00:18.75 bitrate=N/A speed=1.25x    
frame=  485 fps= 31 q=-0.0 size=N/A time=00:00:19.39 bitrate=N/A speed=1.25x    
frame=  501 fps= 31 q=-0.0 size=N/A time=00:00:20.03 bitrate=N/A speed=1.25x    
frame=  517 fps= 31 q=-0.0 size=N/A time=00:00:20.67 bitrate=N/A speed=1.25x    
frame=  532 fps= 31 q=-0.0 size=N/A time=00:00:21.26 bitrate=N/A speed=1.25x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa956.ts' for writing
frame=  549 fps= 31 q=-0.0 size=N/A time=00:00:21.95 bitrate=N/A speed=1.25x    
frame=  565 fps= 31 q=-0.0 size=N/A time=00:00:22.59 bitrate=N/A speed=1.25x    
frame=  581 fps= 31 q=-0.0 size=N/A time=00:00:23.23 bitrate=N/A speed=1.25x    
frame=  597 fps= 31 q=-0.0 size=N/A time=00:00:23.87 bitrate=N/A speed=1.25x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa957.ts' for writing
frame=  614 fps= 31 q=-0.0 size=N/A time=00:00:24.55 bitrate=N/A speed=1.25x    
frame=  630 fps= 31 q=-0.0 size=N/A time=00:00:25.19 bitrate=N/A speed=1.25x    
frame=  646 fps= 31 q=-0.0 size=N/A time=00:00:25.83 bitrate=N/A speed=1.25x    
frame=  662 fps= 31 q=-0.0 size=N/A time=00:00:26.47 bitrate=N/A speed=1.25x    
frame=  678 fps= 31 q=-0.0 size=N/A time=00:00:27.11 bitrate=N/A speed=1.25x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa958.ts' for writing
frame=  695 fps= 31 q=-0.0 size=N/A time=00:00:27.79 bitrate=N/A speed=1.26x    
frame=  711 fps= 31 q=-0.0 size=N/A time=00:00:28.43 bitrate=N/A speed=1.26x    
frame=  726 fps= 31 q=-0.0 size=N/A time=00:00:29.03 bitrate=N/A speed=1.25x    
frame=  742 fps= 31 q=-0.0 size=N/A time=00:00:29.67 bitrate=N/A speed=1.25x    
frame=  757 fps= 31 q=-0.0 size=N/A time=00:00:30.27 bitrate=N/A speed=1.25x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa959.ts' for writing
frame=  773 fps= 31 q=-0.0 size=N/A time=00:00:30.91 bitrate=N/A speed=1.25x    
frame=  788 fps= 31 q=-0.0 size=N/A time=00:00:31.53 bitrate=N/A speed=1.25x    
frame=  804 fps= 31 q=-0.0 size=N/A time=00:00:32.14 bitrate=N/A speed=1.25x    
frame=  820 fps= 31 q=-0.0 size=N/A time=00:00:32.78 bitrate=N/A speed=1.25x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9510.ts' for writing
frame=  837 fps= 31 q=-0.0 size=N/A time=00:00:33.47 bitrate=N/A speed=1.25x    
frame=  853 fps= 31 q=-0.0 size=N/A time=00:00:34.11 bitrate=N/A speed=1.25x    
frame=  870 fps= 31 q=-0.0 size=N/A time=00:00:34.79 bitrate=N/A speed=1.25x    
frame=  886 fps= 31 q=-0.0 size=N/A time=00:00:35.43 bitrate=N/A speed=1.25x    
frame=  902 fps= 31 q=-0.0 size=N/A time=00:00:36.07 bitrate=N/A speed=1.25x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9511.ts' for writing
frame=  919 fps= 31 q=-0.0 size=N/A time=00:00:36.73 bitrate=N/A speed=1.25x    
frame=  934 fps= 31 q=-0.0 size=N/A time=00:00:37.35 bitrate=N/A speed=1.25x    
frame=  950 fps= 31 q=-0.0 size=N/A time=00:00:37.99 bitrate=N/A speed=1.25x    
frame=  966 fps= 31 q=-0.0 size=N/A time=00:00:38.63 bitrate=N/A speed=1.25x    
frame=  982 fps= 31 q=-0.0 size=N/A time=00:00:39.27 bitrate=N/A speed=1.25x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9512.ts' for writing
frame=  998 fps= 31 q=-0.0 size=N/A time=00:00:39.91 bitrate=N/A speed=1.25x    
frame= 1014 fps= 31 q=-0.0 size=N/A time=00:00:40.55 bitrate=N/A speed=1.25x    
frame= 1030 fps= 31 q=-0.0 size=N/A time=00:00:41.19 bitrate=N/A speed=1.25x    
frame= 1046 fps= 31 q=-0.0 size=N/A time=00:00:41.83 bitrate=N/A speed=1.25x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9513.ts' for writing
frame= 1062 fps= 31 q=-0.0 size=N/A time=00:00:42.47 bitrate=N/A speed=1.25x    
frame= 1078 fps= 31 q=-0.0 size=N/A time=00:00:43.11 bitrate=N/A speed=1.25x    
frame= 1093 fps= 31 q=-0.0 size=N/A time=00:00:43.71 bitrate=N/A speed=1.25x    
frame= 1108 fps= 31 q=-0.0 size=N/A time=00:00:44.30 bitrate=N/A speed=1.25x    
frame= 1123 fps= 31 q=-0.0 size=N/A time=00:00:44.90 bitrate=N/A speed=1.25x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9514.ts' for writing
frame= 1139 fps= 31 q=-0.0 size=N/A time=00:00:45.54 bitrate=N/A speed=1.25x    
frame= 1156 fps= 31 q=-0.0 size=N/A time=00:00:46.22 bitrate=N/A speed=1.25x    
frame= 1173 fps= 31 q=-0.0 size=N/A time=00:00:46.91 bitrate=N/A speed=1.25x    
frame= 1188 fps= 31 q=-0.0 size=N/A time=00:00:47.50 bitrate=N/A speed=1.25x    
frame= 1203 fps= 31 q=-0.0 size=N/A time=00:00:48.10 bitrate=N/A speed=1.25x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9515.ts' for writing
frame= 1219 fps= 31 q=-0.0 size=N/A time=00:00:48.74 bitrate=N/A speed=1.25x    
frame= 1235 fps= 31 q=-0.0 size=N/A time=00:00:49.38 bitrate=N/A speed=1.25x    
frame= 1250 fps= 31 q=-0.0 size=N/A time=00:00:49.98 bitrate=N/A speed=1.24x    
frame= 1266 fps= 31 q=-0.0 size=N/A time=00:00:50.62 bitrate=N/A speed=1.24x    
frame= 1281 fps= 31 q=-0.0 size=N/A time=00:00:51.22 bitrate=N/A speed=1.24x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9516.ts' for writing
frame= 1297 fps= 31 q=-0.0 size=N/A time=00:00:51.88 bitrate=N/A speed=1.24x    
frame= 1312 fps= 31 q=-0.0 size=N/A time=00:00:52.45 bitrate=N/A speed=1.24x    
frame= 1327 fps= 31 q=-0.0 size=N/A time=00:00:53.07 bitrate=N/A speed=1.24x    
frame= 1343 fps= 31 q=-0.0 size=N/A time=00:00:53.71 bitrate=N/A speed=1.24x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9517.ts' for writing
frame= 1360 fps= 31 q=-0.0 size=N/A time=00:00:54.37 bitrate=N/A speed=1.24x    
frame= 1375 fps= 31 q=-0.0 size=N/A time=00:00:54.99 bitrate=N/A speed=1.24x    
frame= 1390 fps= 31 q=-0.0 size=N/A time=00:00:55.59 bitrate=N/A speed=1.24x    
frame= 1405 fps= 31 q=-0.0 size=N/A time=00:00:56.19 bitrate=N/A speed=1.24x    
frame= 1420 fps= 31 q=-0.0 size=N/A time=00:00:56.78 bitrate=N/A speed=1.24x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9518.ts' for writing
frame= 1436 fps= 31 q=-0.0 size=N/A time=00:00:57.42 bitrate=N/A speed=1.24x    
frame= 1452 fps= 31 q=-0.0 size=N/A time=00:00:58.06 bitrate=N/A speed=1.24x    
frame= 1467 fps= 31 q=-0.0 size=N/A time=00:00:58.66 bitrate=N/A speed=1.24x    
frame= 1483 fps= 31 q=-0.0 size=N/A time=00:00:59.30 bitrate=N/A speed=1.24x    
frame= 1499 fps= 31 q=-0.0 size=N/A time=00:00:59.94 bitrate=N/A speed=1.24x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9519.ts' for writing
frame= 1516 fps= 31 q=-0.0 size=N/A time=00:01:00.62 bitrate=N/A speed=1.24x    
frame= 1531 fps= 31 q=-0.0 size=N/A time=00:01:01.22 bitrate=N/A speed=1.24x    
frame= 1547 fps= 31 q=-0.0 size=N/A time=00:01:01.86 bitrate=N/A speed=1.24x    
frame= 1562 fps= 31 q=-0.0 size=N/A time=00:01:02.46 bitrate=N/A speed=1.24x    
frame= 1577 fps= 31 q=-0.0 size=N/A time=00:01:03.06 bitrate=N/A speed=1.24x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9520.ts' for writing
frame= 1593 fps= 31 q=-0.0 size=N/A time=00:01:03.70 bitrate=N/A speed=1.24x    
frame= 1609 fps= 31 q=-0.0 size=N/A time=00:01:04.34 bitrate=N/A speed=1.24x    
frame= 1625 fps= 31 q=-0.0 size=N/A time=00:01:04.98 bitrate=N/A speed=1.24x    
frame= 1640 fps= 31 q=-0.0 size=N/A time=00:01:05.57 bitrate=N/A speed=1.24x    
frame= 1655 fps= 31 q=-0.0 size=N/A time=00:01:06.19 bitrate=N/A speed=1.24x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9521.ts' for writing
frame= 1671 fps= 31 q=-0.0 size=N/A time=00:01:06.83 bitrate=N/A speed=1.24x    
frame= 1687 fps= 31 q=-0.0 size=N/A time=00:01:07.47 bitrate=N/A speed=1.24x    
frame= 1703 fps= 31 q=-0.0 size=N/A time=00:01:08.11 bitrate=N/A speed=1.24x    
frame= 1719 fps= 31 q=-0.0 size=N/A time=00:01:08.75 bitrate=N/A speed=1.24x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9522.ts' for writing
frame= 1735 fps= 31 q=-0.0 size=N/A time=00:01:09.39 bitrate=N/A speed=1.24x    
frame= 1751 fps= 31 q=-0.0 size=N/A time=00:01:10.03 bitrate=N/A speed=1.24x    
frame= 1766 fps= 31 q=-0.0 size=N/A time=00:01:10.63 bitrate=N/A speed=1.24x    
frame= 1781 fps= 31 q=-0.0 size=N/A time=00:01:11.23 bitrate=N/A speed=1.23x    
frame= 1797 fps= 31 q=-0.0 size=N/A time=00:01:11.87 bitrate=N/A speed=1.23x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9523.ts' for writing
frame= 1813 fps= 31 q=-0.0 size=N/A time=00:01:12.51 bitrate=N/A speed=1.23x    
frame= 1829 fps= 31 q=-0.0 size=N/A time=00:01:13.15 bitrate=N/A speed=1.23x    
frame= 1845 fps= 31 q=-0.0 size=N/A time=00:01:13.79 bitrate=N/A speed=1.23x    
frame= 1861 fps= 31 q=-0.0 size=N/A time=00:01:14.43 bitrate=N/A speed=1.23x    
frame= 1877 fps= 31 q=-0.0 size=N/A time=00:01:15.07 bitrate=N/A speed=1.23x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9524.ts' for writing
frame= 1892 fps= 31 q=-0.0 size=N/A time=00:01:15.66 bitrate=N/A speed=1.23x    
frame= 1909 fps= 31 q=-0.0 size=N/A time=00:01:16.35 bitrate=N/A speed=1.23x    
frame= 1925 fps= 31 q=-0.0 size=N/A time=00:01:16.99 bitrate=N/A speed=1.23x    
frame= 1941 fps= 31 q=-0.0 size=N/A time=00:01:17.63 bitrate=N/A speed=1.23x    
frame= 1956 fps= 31 q=-0.0 size=N/A time=00:01:18.22 bitrate=N/A speed=1.23x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9525.ts' for writing
frame= 1973 fps= 31 q=-0.0 size=N/A time=00:01:18.91 bitrate=N/A speed=1.23x    
frame= 1989 fps= 31 q=-0.0 size=N/A time=00:01:19.55 bitrate=N/A speed=1.23x    
frame= 2006 fps= 31 q=-0.0 size=N/A time=00:01:20.21 bitrate=N/A speed=1.23x    
frame= 2021 fps= 31 q=-0.0 size=N/A time=00:01:20.83 bitrate=N/A speed=1.23x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9526.ts' for writing
frame= 2037 fps= 31 q=-0.0 size=N/A time=00:01:21.47 bitrate=N/A speed=1.23x    
frame= 2053 fps= 31 q=-0.0 size=N/A time=00:01:22.13 bitrate=N/A speed=1.24x    
frame= 2069 fps= 31 q=-0.0 size=N/A time=00:01:22.75 bitrate=N/A speed=1.23x    
frame= 2085 fps= 31 q=-0.0 size=N/A time=00:01:23.39 bitrate=N/A speed=1.23x    
frame= 2101 fps= 31 q=-0.0 size=N/A time=00:01:24.03 bitrate=N/A speed=1.23x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9527.ts' for writing
frame= 2117 fps= 31 q=-0.0 size=N/A time=00:01:24.67 bitrate=N/A speed=1.24x    
frame= 2133 fps= 31 q=-0.0 size=N/A time=00:01:25.31 bitrate=N/A speed=1.24x    
frame= 2148 fps= 31 q=-0.0 size=N/A time=00:01:25.90 bitrate=N/A speed=1.24x    
frame= 2164 fps= 31 q=-0.0 size=N/A time=00:01:26.54 bitrate=N/A speed=1.23x    
frame= 2179 fps= 31 q=-0.0 size=N/A time=00:01:27.14 bitrate=N/A speed=1.23x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9528.ts' for writing
frame= 2195 fps= 31 q=-0.0 size=N/A time=00:01:27.78 bitrate=N/A speed=1.23x    
frame= 2211 fps= 31 q=-0.0 size=N/A time=00:01:28.42 bitrate=N/A speed=1.23x    
frame= 2227 fps= 31 q=-0.0 size=N/A time=00:01:29.06 bitrate=N/A speed=1.23x    
frame= 2243 fps= 31 q=-0.0 size=N/A time=00:01:29.70 bitrate=N/A speed=1.23x    
frame= 2258 fps= 31 q=-0.0 size=N/A time=00:01:30.30 bitrate=N/A speed=1.23x    
[hls @ 0x560036afd680] Opening '/config/transcodes/4e3f6c4f05ed122ac1055a133c23fa9529.ts' for writing
frame= 2274 fps= 31 q=-0.0 size=N/A time=00:01:30.94 bitrate=N/A speed=1.23x    

Additional Context

I'm running my Jellyfin instance in an unprivileged Docker container.
HW-accelerated transcoding to H264 works as expected.

@Clubfan22 Clubfan22 added the bug Something isn't working label Dec 29, 2022
@nyanmisaka
Copy link
Member

Can you try this command?

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -init_hw_device vaapi=va:,driver=iHD,kernel_driver=i915 -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi -autorotate 0 -i file:"/external/Mediatheken/Filme/Pascow - Königreiche im Winter - Featuring Apocalypse Vega (Official Video) [ksQqPHJZVo4].webm" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 hevc_qsv -bf -1 -tag:v:0 hvc1 -preset 7 -b:v 9925505 -maxrate 9925505 -bufsize 19851010 -g:v:0 75 -keyint_min:v:0 75 -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=format=nv12,hwmap=derive_device=qsv,format=qsv" -codec:a:0 libfdk_aac -ac 2 -ab 128000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f null -

@Clubfan22
Copy link
Author

Hi,
in the meantime I've updated to Jellyfin 10.8.9, but the original command still fails.
Your modified command works flawlessly and returns the following output:

ffmpeg version 5.1.2-Jellyfin Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-shared --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-static --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
Input #0, matroska,webm, from 'file:/external/Mediatheken/Filme/Pascow - Königreiche im Winter - Featuring Apocalypse Vega (Official Video) [ksQqPHJZVo4].webm':
  Metadata:
    ENCODER         : Lavf58.29.100
  Duration: 00:03:06.46, start: -0.007000, bitrate: 9925 kb/s
  Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709), 3840x2026, SAR 1:1 DAR 1920:1013, 25 fps, 25 tbr, 1k tbn (default)
    Metadata:
      DURATION        : 00:03:06.440000000
  Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
    Metadata:
      DURATION        : 00:03:06.461000000
Stream mapping:
  Stream #0:0 -> #0:0 (vp9 (native) -> hevc (hevc_qsv))
  Stream #0:1 -> #0:1 (opus (native) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
Output #0, null, to 'pipe:':
  Metadata:
    encoder         : Lavf59.27.100
  Stream #0:0: Video: hevc (hvc1 / 0x31637668), qsv(tv, bt709, progressive), 3840x2026 [SAR 1:1 DAR 1920:1013], q=2-31, 9925 kb/s, 25 fps, 25 tbn (default)
    Metadata:
      encoder         : Lavc59.37.100 hevc_qsv
    Side data:
      cpb: bitrate max/min/avg: 9925505/0/9925505 buffer size: 19851010 vbv_delay: N/A
  Stream #0:1: Audio: aac, 48000 Hz, stereo, s16, 128 kb/s (default)
    Metadata:
      encoder         : Lavc59.37.100 libfdk_aac
frame= 4661 fps= 32 q=-0.0 Lsize=N/A time=00:03:06.38 bitrate=N/A speed= 1.3x    
video:225449kB audio:2914kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

@nyanmisaka
Copy link
Member

Thanks. The issue comes from the default b-frame settings of the hevc_qsv encoder in ffmpeg. Will fix it in the next jellyfin-ffmpeg hotfix.

@cuihaoleo
Copy link

@nyanmisaka Hi, I'm getting a similar error when I enable QSV and play some videos. Could you please check if it's the same bug or should I open a new one? Here is the log:

/videos/22cf483d-75f0-3d7f-d8cf-d018430f90e6/hls1/main/118.ts

{"Protocol":0,"Id":"22cf483d75f03d7fd8cfd018430f90e6","Path":"/data/video/anime/Thunderbolt Fantasy \u6771\u96E2\u528D\u904A\u7D00 (2016)/S01/E13.mkv","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":"mkv,webm","Size":2601173760,"Name":"E13","IsRemote":false,"ETag":"31c8d67cc8657e6f7e1466809dfef6b8","RunTimeTicks":14270300160,"ReadAtNativeFramerate":false,"IgnoreDts":false,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true,"IsInfiniteStream":false,"RequiresOpening":false,"OpenToken":null,"RequiresClosing":false,"LiveStreamId":null,"BufferMs":null,"RequiresLooping":false,"SupportsProbing":true,"VideoType":0,"IsoType":null,"Video3DFormat":null,"MediaStreams":[{"Codec":"h264","CodecTag":null,"Language":null,"ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":null,"VideoRange":"SDR","VideoRangeType":"SDR","VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"1080p H264 SDR","NalLengthSize":"4","IsInterlaced":false,"IsAVC":true,"ChannelLayout":null,"BitRate":14582307,"BitDepth":8,"RefFrames":1,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":true,"IsForced":false,"Height":1080,"Width":1920,"AverageFrameRate":29.97003,"RealFrameRate":29.97003,"Profile":"High","Type":1,"AspectRatio":"16:9","Index":0,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":"yuv420p","Level":41,"IsAnamorphic":null},{"Codec":"flac","CodecTag":null,"Language":"jpn","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"FLAC 2.0","VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"FLAC 2.0 - Japanese - Stereo - Default","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":"stereo","BitRate":1609445,"BitDepth":24,"RefFrames":null,"PacketLength":null,"Channels":2,"SampleRate":48000,"IsDefault":true,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"flac","CodecTag":null,"Language":"jpn","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"Commentary","VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"Commentary - Japanese - FLAC - Stereo","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":"stereo","BitRate":1426822,"BitDepth":24,"RefFrames":null,"PacketLength":null,"Channels":2,"SampleRate":48000,"IsDefault":false,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":2,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"PGSSUB","CodecTag":null,"Language":"chi","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"CHT-BDSUB","VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":"Undefined","LocalizedDefault":"Default","LocalizedForced":"Forced","LocalizedExternal":"External","DisplayTitle":"CHT-BDSUB - Chi - Default - PGSSUB","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":true,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":2,"AspectRatio":null,"Index":3,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"PGSSUB","CodecTag":null,"Language":"chi","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"CHS-BDSUB","VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":"Undefined","LocalizedDefault":"Default","LocalizedForced":"Forced","LocalizedExternal":"External","DisplayTitle":"CHS-BDSUB - Chi - PGSSUB","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":2,"AspectRatio":null,"Index":4,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null}],"MediaAttachments":[],"Formats":[],"Bitrate":17618574,"Timestamp":null,"RequiredHttpHeaders":{},"TranscodingUrl":null,"TranscodingSubProtocol":null,"TranscodingContainer":null,"AnalyzeDurationMs":null,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null}

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -ss 00:05:54.000 -init_hw_device vaapi=va:,driver=iHD,kernel_driver=i915 -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi -autorotate 0 -canvas_size 1920x1080 -i file:"/data/video/anime/Thunderbolt Fantasy 東離劍遊紀 (2016)/S01/E13.mkv" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -codec:v:0 h264_qsv -preset 7 -look_ahead 0 -b:v 14582307 -maxrate 14582307 -bufsize 29164614 -profile:v:0 high -level 41 -g:v:0 90 -keyint_min:v:0 90 -filter_complex "[0:3]scale=flags=fast_bilinear,format=bgra,hwupload=derive_device=qsv:extra_hw_frames=64[sub];[0:0]setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=format=nv12,hwmap=derive_device=qsv,format=qsv[main];[main][sub]overlay_qsv=eof_action=endall:shortest=1:repeatlast=0:w=1920:h=1080" -start_at_zero -codec:a:0 libfdk_aac -ac 2 -ab 384000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 118 -hls_segment_filename "/var/lib/jellyfin/transcodes/888a4cc7e6299bcdb5270ebcb52b3e16%d.ts" -hls_playlist_type vod -hls_list_size 0 -y "/var/lib/jellyfin/transcodes/888a4cc7e6299bcdb5270ebcb52b3e16.m3u8"


ffmpeg version 5.1.2-Jellyfin Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-shared --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-static --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
[matroska,webm @ 0x55f84225bd80] Could not find codec parameters for stream 3 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' (200000000) and 'probesize' (5000000) options
[matroska,webm @ 0x55f84225bd80] Could not find codec parameters for stream 4 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' (200000000) and 'probesize' (5000000) options
Input #0, matroska,webm, from 'file:/data/video/anime/Thunderbolt Fantasy 東離劍遊紀 (2016)/S01/E13.mkv':
  Metadata:
    encoder         : libebml v1.3.1 + libmatroska v1.4.2
    creation_time   : 2016-12-12T07:46:01.000000Z
  Duration: 00:23:47.03, start: 0.000000, bitrate: 14582 kb/s
  Chapters:
    Chapter #0:0: start 0.000000, end 28.028000
      Metadata:
        title           : AVANT
    Chapter #0:1: start 28.028000, end 802.001000
      Metadata:
        title           : A-PART
    Chapter #0:2: start 802.001000, end 1335.000000
      Metadata:
        title           : B-PART
    Chapter #0:3: start 1335.000000, end 1427.030000
      Metadata:
        title           : ENDING
  Stream #0:0: Video: h264 (High), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 1k tbn (default)
    Metadata:
      BPS             : 11504252
      BPS-eng         : 11504252
      DURATION        : 00:23:47.025000000
      DURATION-eng    : 00:23:47.025000000
      NUMBER_OF_FRAMES: 42768
      NUMBER_OF_FRAMES-eng: 42768
      NUMBER_OF_BYTES : 2052106934
      NUMBER_OF_BYTES-eng: 2052106934
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46: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(jpn): Audio: flac, 48000 Hz, stereo, s32 (24 bit) (default)
    Metadata:
      title           : FLAC 2.0
      BPS             : 1609445
      BPS-eng         : 1609445
      DURATION        : 00:23:47.030000000
      DURATION-eng    : 00:23:47.030000000
      NUMBER_OF_FRAMES: 16724
      NUMBER_OF_FRAMES-eng: 16724
      NUMBER_OF_BYTES : 287090864
      NUMBER_OF_BYTES-eng: 287090864
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:2(jpn): Audio: flac, 48000 Hz, stereo, s32 (24 bit)
    Metadata:
      title           : Commentary
      BPS             : 1426822
      BPS-eng         : 1426822
      DURATION        : 00:23:47.030000000
      DURATION-eng    : 00:23:47.030000000
      NUMBER_OF_FRAMES: 16724
      NUMBER_OF_FRAMES-eng: 16724
      NUMBER_OF_BYTES : 254514765
      NUMBER_OF_BYTES-eng: 254514765
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:3(chi): Subtitle: hdmv_pgs_subtitle, 1920x1080 (default)
    Metadata:
      title           : CHT-BDSUB
      BPS             : 21098
      BPS-eng         : 21098
      DURATION        : 00:21:44.837000000
      DURATION-eng    : 00:21:44.837000000
      NUMBER_OF_FRAMES: 696
      NUMBER_OF_FRAMES-eng: 696
      NUMBER_OF_BYTES : 3441208
      NUMBER_OF_BYTES-eng: 3441208
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:4(chi): Subtitle: hdmv_pgs_subtitle, 1920x1080
    Metadata:
      title           : CHS-BDSUB
      BPS             : 21240
      BPS-eng         : 21240
      DURATION        : 00:22:02.221000000
      DURATION-eng    : 00:22:02.221000000
      NUMBER_OF_FRAMES: 464
      NUMBER_OF_FRAMES-eng: 464
      NUMBER_OF_BYTES : 3510536
      NUMBER_OF_BYTES-eng: 3510536
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream mapping:
  Stream #0:0 (h264) -> setparams:default (graph 0)
  Stream #0:3 (pgssub) -> scale:default (graph 0)
  overlay_qsv:default (graph 0) -> Stream #0:0 (h264_qsv)
  Stream #0:1 -> #0:1 (flac (native) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
[matroska,webm @ 0x55f84225bd80] sub2video: using 1920x1080 canvas
Output #0, hls, to '/var/lib/jellyfin/transcodes/888a4cc7e6299bcdb5270ebcb52b3e16.m3u8':
  Metadata:
    encoder         : Lavf59.27.100
  Stream #0:0: Video: h264, qsv(bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 14582 kb/s, 29.97 fps, 90k tbn
    Metadata:
      encoder         : Lavc59.37.100 h264_qsv
    Side data:
      cpb: bitrate max/min/avg: 14582307/0/14582307 buffer size: 29164614 vbv_delay: N/A
  Stream #0:1: Audio: aac, 48000 Hz, stereo, s16, 384 kb/s (default)
    Metadata:
      encoder         : Lavc59.37.100 libfdk_aac
frame=    1 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x    
Error while filtering: Cannot allocate memory
Failed to inject frame into filter network: Cannot allocate memory
Error while processing the decoded data for stream #0:0
[libfdk_aac @ 0x55f84227fc40] 2 frames left in the queue on closing
Conversion failed!

@nyanmisaka
Copy link
Member

@cuihaoleo Same issue as the OP.

@nyanmisaka
Copy link
Member

@cuihaoleo Can you try this command and see if it works?

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -ss 00:05:54.000 -init_hw_device vaapi=va:,driver=iHD,kernel_driver=i915 -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi -autorotate 0 -canvas_size 1920x1080 -i file:"/data/video/anime/Thunderbolt Fantasy 東離劍遊紀 (2016)/S01/E13.mkv" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -codec:v:0 h264_qsv -bf:v -1 -preset 7 -look_ahead 0 -b:v 14582307 -maxrate 14582307 -bufsize 29164614 -profile:v:0 high -level 41 -g:v:0 90 -keyint_min:v:0 90 -filter_complex "[0:3]scale=flags=fast_bilinear,format=bgra,hwupload=derive_device=qsv:extra_hw_frames=64[sub];[0:0]setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=format=nv12,hwmap=derive_device=qsv,format=qsv[main];[main][sub]overlay_qsv=eof_action=endall:shortest=1:repeatlast=0:w=1920:h=1080" -start_at_zero -codec:a:0 libfdk_aac -ac 2 -ab 384000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -t 120 -f null -

@cuihaoleo
Copy link

@nyanmisaka Your command seems to finish without error. Here is the output:

ffmpeg version 5.1.2-Jellyfin Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-shared --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-static --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
[matroska,webm @ 0x556931bf5cc0] Could not find codec parameters for stream 3 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' (200000000) and 'probesize' (5000000) options
[matroska,webm @ 0x556931bf5cc0] Could not find codec parameters for stream 4 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' (200000000) and 'probesize' (5000000) options
Input #0, matroska,webm, from 'file:/data/video/anime/Thunderbolt Fantasy 東離劍遊紀 (2016)/S01/E13.mkv':
  Metadata:
    encoder         : libebml v1.3.1 + libmatroska v1.4.2
    creation_time   : 2016-12-12T07:46:01.000000Z
  Duration: 00:23:47.03, start: 0.000000, bitrate: 14582 kb/s
  Chapters:
    Chapter #0:0: start 0.000000, end 28.028000
      Metadata:
        title           : AVANT
    Chapter #0:1: start 28.028000, end 802.001000
      Metadata:
        title           : A-PART
    Chapter #0:2: start 802.001000, end 1335.000000
      Metadata:
        title           : B-PART
    Chapter #0:3: start 1335.000000, end 1427.030000
      Metadata:
        title           : ENDING
  Stream #0:0: Video: h264 (High), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 1k tbn (default)
    Metadata:
      BPS             : 11504252
      BPS-eng         : 11504252
      DURATION        : 00:23:47.025000000
      DURATION-eng    : 00:23:47.025000000
      NUMBER_OF_FRAMES: 42768
      NUMBER_OF_FRAMES-eng: 42768
      NUMBER_OF_BYTES : 2052106934
      NUMBER_OF_BYTES-eng: 2052106934
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46: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(jpn): Audio: flac, 48000 Hz, stereo, s32 (24 bit) (default)
    Metadata:
      title           : FLAC 2.0
      BPS             : 1609445
      BPS-eng         : 1609445
      DURATION        : 00:23:47.030000000
      DURATION-eng    : 00:23:47.030000000
      NUMBER_OF_FRAMES: 16724
      NUMBER_OF_FRAMES-eng: 16724
      NUMBER_OF_BYTES : 287090864
      NUMBER_OF_BYTES-eng: 287090864
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:2(jpn): Audio: flac, 48000 Hz, stereo, s32 (24 bit)
    Metadata:
      title           : Commentary
      BPS             : 1426822
      BPS-eng         : 1426822
      DURATION        : 00:23:47.030000000
      DURATION-eng    : 00:23:47.030000000
      NUMBER_OF_FRAMES: 16724
      NUMBER_OF_FRAMES-eng: 16724
      NUMBER_OF_BYTES : 254514765
      NUMBER_OF_BYTES-eng: 254514765
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:3(chi): Subtitle: hdmv_pgs_subtitle, 1920x1080 (default)
    Metadata:
      title           : CHT-BDSUB
      BPS             : 21098
      BPS-eng         : 21098
      DURATION        : 00:21:44.837000000
      DURATION-eng    : 00:21:44.837000000
      NUMBER_OF_FRAMES: 696
      NUMBER_OF_FRAMES-eng: 696
      NUMBER_OF_BYTES : 3441208
      NUMBER_OF_BYTES-eng: 3441208
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:4(chi): Subtitle: hdmv_pgs_subtitle, 1920x1080
    Metadata:
      title           : CHS-BDSUB
      BPS             : 21240
      BPS-eng         : 21240
      DURATION        : 00:22:02.221000000
      DURATION-eng    : 00:22:02.221000000
      NUMBER_OF_FRAMES: 464
      NUMBER_OF_FRAMES-eng: 464
      NUMBER_OF_BYTES : 3510536
      NUMBER_OF_BYTES-eng: 3510536
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream mapping:
  Stream #0:0 (h264) -> setparams:default (graph 0)
  Stream #0:3 (pgssub) -> scale:default (graph 0)
  overlay_qsv:default (graph 0) -> Stream #0:0 (h264_qsv)
  Stream #0:1 -> #0:1 (flac (native) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
[matroska,webm @ 0x556931bf5cc0] sub2video: using 1920x1080 canvas
Output #0, null, to 'pipe:':
  Metadata:
    encoder         : Lavf59.27.100
  Stream #0:0: Video: h264, qsv(bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 14582 kb/s, 29.97 fps, 29.97 tbn
    Metadata:
      encoder         : Lavc59.37.100 h264_qsv
    Side data:
      cpb: bitrate max/min/avg: 14582307/0/14582307 buffer size: 29164614 vbv_delay: N/A
  Stream #0:1: Audio: aac, 48000 Hz, stereo, s16, 384 kb/s (default)
    Metadata:
      encoder         : Lavc59.37.100 libfdk_aac
frame=    0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A speed=   0x    
video:0kB audio:3kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

@nyanmisaka
Copy link
Member

It is invalid.
frame= 0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A speed= 0x

@cuihaoleo Can you try this one again?

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -init_hw_device vaapi=va:,driver=iHD,kernel_driver=i915 -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi -autorotate 0 -canvas_size 1920x1080 -i file:"/data/video/anime/Thunderbolt Fantasy 東離劍遊紀 (2016)/S01/E13.mkv" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -codec:v:0 h264_qsv -bf:v -1 -preset 7 -look_ahead 0 -b:v 14582307 -maxrate 14582307 -bufsize 29164614 -profile:v:0 high -level 41 -g:v:0 90 -keyint_min:v:0 90 -filter_complex "[0:3]scale=flags=fast_bilinear,format=bgra,hwupload=derive_device=qsv:extra_hw_frames=64[sub];[0:0]setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=format=nv12,hwmap=derive_device=qsv,format=qsv[main];[main][sub]overlay_qsv=eof_action=endall:shortest=1:repeatlast=0:w=1920:h=1080" -start_at_zero -codec:a:0 libfdk_aac -ac 2 -ab 384000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -t 120 -f null -

@cuihaoleo
Copy link

@nyanmisaka This one ran for about 10 seconds but eventially died with the original error.

Full output
ffmpeg version 5.1.2-Jellyfin Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-shared --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-static --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
[matroska,webm @ 0x55beddfe3b80] Could not find codec parameters for stream 3 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' (200000000) and 'probesize' (5000000) options
[matroska,webm @ 0x55beddfe3b80] Could not find codec parameters for stream 4 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' (200000000) and 'probesize' (5000000) options
Input #0, matroska,webm, from 'file:/data/video/anime/Thunderbolt Fantasy 東離劍遊紀 (2016)/S01/E13.mkv':
  Metadata:
    encoder         : libebml v1.3.1 + libmatroska v1.4.2
    creation_time   : 2016-12-12T07:46:01.000000Z
  Duration: 00:23:47.03, start: 0.000000, bitrate: 14582 kb/s
  Chapters:
    Chapter #0:0: start 0.000000, end 28.028000
      Metadata:
        title           : AVANT
    Chapter #0:1: start 28.028000, end 802.001000
      Metadata:
        title           : A-PART
    Chapter #0:2: start 802.001000, end 1335.000000
      Metadata:
        title           : B-PART
    Chapter #0:3: start 1335.000000, end 1427.030000
      Metadata:
        title           : ENDING
  Stream #0:0: Video: h264 (High), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 1k tbn (default)
    Metadata:
      BPS             : 11504252
      BPS-eng         : 11504252
      DURATION        : 00:23:47.025000000
      DURATION-eng    : 00:23:47.025000000
      NUMBER_OF_FRAMES: 42768
      NUMBER_OF_FRAMES-eng: 42768
      NUMBER_OF_BYTES : 2052106934
      NUMBER_OF_BYTES-eng: 2052106934
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46: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(jpn): Audio: flac, 48000 Hz, stereo, s32 (24 bit) (default)
    Metadata:
      title           : FLAC 2.0
      BPS             : 1609445
      BPS-eng         : 1609445
      DURATION        : 00:23:47.030000000
      DURATION-eng    : 00:23:47.030000000
      NUMBER_OF_FRAMES: 16724
      NUMBER_OF_FRAMES-eng: 16724
      NUMBER_OF_BYTES : 287090864
      NUMBER_OF_BYTES-eng: 287090864
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:2(jpn): Audio: flac, 48000 Hz, stereo, s32 (24 bit)
    Metadata:
      title           : Commentary
      BPS             : 1426822
      BPS-eng         : 1426822
      DURATION        : 00:23:47.030000000
      DURATION-eng    : 00:23:47.030000000
      NUMBER_OF_FRAMES: 16724
      NUMBER_OF_FRAMES-eng: 16724
      NUMBER_OF_BYTES : 254514765
      NUMBER_OF_BYTES-eng: 254514765
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:3(chi): Subtitle: hdmv_pgs_subtitle, 1920x1080 (default)
    Metadata:
      title           : CHT-BDSUB
      BPS             : 21098
      BPS-eng         : 21098
      DURATION        : 00:21:44.837000000
      DURATION-eng    : 00:21:44.837000000
      NUMBER_OF_FRAMES: 696
      NUMBER_OF_FRAMES-eng: 696
      NUMBER_OF_BYTES : 3441208
      NUMBER_OF_BYTES-eng: 3441208
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:4(chi): Subtitle: hdmv_pgs_subtitle, 1920x1080
    Metadata:
      title           : CHS-BDSUB
      BPS             : 21240
      BPS-eng         : 21240
      DURATION        : 00:22:02.221000000
      DURATION-eng    : 00:22:02.221000000
      NUMBER_OF_FRAMES: 464
      NUMBER_OF_FRAMES-eng: 464
      NUMBER_OF_BYTES : 3510536
      NUMBER_OF_BYTES-eng: 3510536
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream mapping:
  Stream #0:0 (h264) -> setparams:default (graph 0)
  Stream #0:3 (pgssub) -> scale:default (graph 0)
  overlay_qsv:default (graph 0) -> Stream #0:0 (h264_qsv)
  Stream #0:1 -> #0:1 (flac (native) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
[matroska,webm @ 0x55beddfe3b80] sub2video: using 1920x1080 canvas
Output #0, null, to 'pipe:':
  Metadata:
    encoder         : Lavf59.27.100
  Stream #0:0: Video: h264, qsv(bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 14582 kb/s, 29.97 fps, 29.97 tbn
    Metadata:
      encoder         : Lavc59.37.100 h264_qsv
    Side data:
      cpb: bitrate max/min/avg: 14582307/0/14582307 buffer size: 29164614 vbv_delay: N/A
  Stream #0:1: Audio: aac, 48000 Hz, stereo, s16, 384 kb/s (default)
    Metadata:
      encoder         : Lavc59.37.100 libfdk_aac
Error while filtering: Cannot allocate memory1:23.72 bitrate=N/A speed=9.72x    
Failed to inject frame into filter network: Cannot allocate memory
Error while processing the decoded data for stream #0:0
[libfdk_aac @ 0x55bede00da00] 2 frames left in the queue on closing
Conversion failed!

The last progress line before the error overwrote it was frame= 2534 fps=294 q=22.0 size=N/A time=00:01:23.72 bitrate=N/A speed=9.72x

@cuihaoleo
Copy link

cuihaoleo commented Feb 8, 2023

I saw you removed -ss in the second one so I guess it is a different frame that eventually caused the crash.

A strange finding when I played around the command. When I modified the command to avoid audio encoding (either -an or -codec:a:0 copy), no error happened. Could it be something else that caused the error? 👀

For example, here is my modified command:

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -init_hw_device vaapi=va:,driver=iHD,kernel_driver=i915 -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi -autorotate 0 -canvas_size 1920x1080 -i file:"/data/video/anime/Thunderbolt Fantasy 東離劍遊紀 (2016)/S01/E13.mkv" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -codec:v:0 h264_qsv -preset 7 -look_ahead 0 -b:v 14582307 -maxrate 14582307 -bufsize 29164614 -profile:v:0 high -level 41 -g:v:0 90 -keyint_min:v:0 90 -filter_complex "[0:3]scale=flags=fast_bilinear,format=bgra,hwupload=derive_device=qsv:extra_hw_frames=64[sub];[0:0]setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=format=nv12,hwmap=derive_device=qsv,format=qsv[main];[main][sub]overlay_qsv=eof_action=endall:shortest=1:repeatlast=0:w=1920:h=1080" -start_at_zero -codec:a:0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f null -

And it ran through the whole video without any error:

Log
ffmpeg version 5.1.2-Jellyfin Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-shared --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-static --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
[matroska,webm @ 0x561d501c0b00] Could not find codec parameters for stream 3 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' (200000000) and 'probesize' (5000000) options
[matroska,webm @ 0x561d501c0b00] Could not find codec parameters for stream 4 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' (200000000) and 'probesize' (5000000) options
Input #0, matroska,webm, from 'file:/data/video/anime/Thunderbolt Fantasy 東離劍遊紀 (2016)/S01/E13.mkv':
  Metadata:
    encoder         : libebml v1.3.1 + libmatroska v1.4.2
    creation_time   : 2016-12-12T07:46:01.000000Z
  Duration: 00:23:47.03, start: 0.000000, bitrate: 14582 kb/s
  Chapters:
    Chapter #0:0: start 0.000000, end 28.028000
      Metadata:
        title           : AVANT
    Chapter #0:1: start 28.028000, end 802.001000
      Metadata:
        title           : A-PART
    Chapter #0:2: start 802.001000, end 1335.000000
      Metadata:
        title           : B-PART
    Chapter #0:3: start 1335.000000, end 1427.030000
      Metadata:
        title           : ENDING
  Stream #0:0: Video: h264 (High), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 1k tbn (default)
    Metadata:
      BPS             : 11504252
      BPS-eng         : 11504252
      DURATION        : 00:23:47.025000000
      DURATION-eng    : 00:23:47.025000000
      NUMBER_OF_FRAMES: 42768
      NUMBER_OF_FRAMES-eng: 42768
      NUMBER_OF_BYTES : 2052106934
      NUMBER_OF_BYTES-eng: 2052106934
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46: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(jpn): Audio: flac, 48000 Hz, stereo, s32 (24 bit) (default)
    Metadata:
      title           : FLAC 2.0
      BPS             : 1609445
      BPS-eng         : 1609445
      DURATION        : 00:23:47.030000000
      DURATION-eng    : 00:23:47.030000000
      NUMBER_OF_FRAMES: 16724
      NUMBER_OF_FRAMES-eng: 16724
      NUMBER_OF_BYTES : 287090864
      NUMBER_OF_BYTES-eng: 287090864
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:2(jpn): Audio: flac, 48000 Hz, stereo, s32 (24 bit)
    Metadata:
      title           : Commentary
      BPS             : 1426822
      BPS-eng         : 1426822
      DURATION        : 00:23:47.030000000
      DURATION-eng    : 00:23:47.030000000
      NUMBER_OF_FRAMES: 16724
      NUMBER_OF_FRAMES-eng: 16724
      NUMBER_OF_BYTES : 254514765
      NUMBER_OF_BYTES-eng: 254514765
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:3(chi): Subtitle: hdmv_pgs_subtitle, 1920x1080 (default)
    Metadata:
      title           : CHT-BDSUB
      BPS             : 21098
      BPS-eng         : 21098
      DURATION        : 00:21:44.837000000
      DURATION-eng    : 00:21:44.837000000
      NUMBER_OF_FRAMES: 696
      NUMBER_OF_FRAMES-eng: 696
      NUMBER_OF_BYTES : 3441208
      NUMBER_OF_BYTES-eng: 3441208
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:4(chi): Subtitle: hdmv_pgs_subtitle, 1920x1080
    Metadata:
      title           : CHS-BDSUB
      BPS             : 21240
      BPS-eng         : 21240
      DURATION        : 00:22:02.221000000
      DURATION-eng    : 00:22:02.221000000
      NUMBER_OF_FRAMES: 464
      NUMBER_OF_FRAMES-eng: 464
      NUMBER_OF_BYTES : 3510536
      NUMBER_OF_BYTES-eng: 3510536
      _STATISTICS_WRITING_APP: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_APP-eng: mkvmerge v7.7.0 ('Six Voices') 32bit built on Feb 28 2015 23:23:00
      _STATISTICS_WRITING_DATE_UTC: 2016-12-12 07:46:01
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-12 07:46:01
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream mapping:
  Stream #0:0 (h264) -> setparams:default
  Stream #0:3 (pgssub) -> scale:default
  overlay_qsv:default -> Stream #0:0 (h264_qsv)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[matroska,webm @ 0x561d501c0b00] sub2video: using 1920x1080 canvas
Output #0, null, to 'pipe:':
  Metadata:
    encoder         : Lavf59.27.100
  Stream #0:0: Video: h264, qsv(bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 14582 kb/s, 29.97 fps, 29.97 tbn
    Metadata:
      encoder         : Lavc59.37.100 h264_qsv
    Side data:
      cpb: bitrate max/min/avg: 14582307/0/14582307 buffer size: 29164614 vbv_delay: N/A
  Stream #0:1: Audio: flac, 48000 Hz, stereo, s32 (24 bit) (default)
frame=42768 fps=315 q=12.0 Lsize=N/A time=00:23:46.43 bitrate=N/A speed=10.5x
video:2539219kB audio:280362kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

@nyanmisaka
Copy link
Member

@cuihaoleo It seem the issue is more complicated than I was thinking about.

Can you share the whole video so as I can reproduce it on my end?

And please give more contexts about your iCPU model, Linux distro and kernel version. Thanks!

@cuihaoleo
Copy link

@nyanmisaka I generated a smaller sample to save bandwidth and avoid illegal distribution with the following command:

/usr/lib/jellyfin-ffmpeg/ffmpeg -use_wallclock_as_timestamps 1 -fflags +genpts+igndts+ignidx -threads 0  -i file:"/data/video/anime/Thunderbolt Fantasy 東離劍遊紀 (2016)/S01/E13.mkv" -map_metadata -1 -map_chapters -1 -filter_complex "shufflepixels=m=block[v0]" -pix_fmt yuv420p -map '[v0]' -codec:v:0 libx264 -crf 51  -filter_complex "anoisesrc=a=0.4:c=pink:r=9600[n0]" -map '[n0]' -codec:a:0 flac -compression_level 12 -map 0:3 -codec:s copy -t 60 out.mkv

I hope this is enough to test the bug as I observed the same error when playing this out.mkv and pretty much the same behaviors with modified ffmpeg commands.

Here are the video and jellyfin / ffmpeg logs: jellyfin-bug.tgz

System information

System:
  Host: mar Kernel: 6.1.0-3-amd64 arch: x86_64 bits: 64 Console: pty pts/2 Distro: Debian
    GNU/Linux bookworm/sid
Machine:
  Type: Desktop Mobo: ASRock model: B460M-ITX/ac serial: M80-D4027502153 UEFI: American Megatrends
    v: P1.60 date: 02/22/2021
Memory:
  RAM: total: 30.9 GiB used: 6.82 GiB (22.1%)
  Array-1: capacity: 32 GiB slots: 2 EC: None
  Device-1: ChannelA-DIMM0 type: DDR4 size: 16 GiB speed: 2933 MT/s
  Device-2: ChannelB-DIMM0 type: DDR4 size: 16 GiB speed: 2933 MT/s
CPU:
  Info: 8-core Intel Core i7-10700K [MT MCP] speed (MHz): avg: 2648 min/max: 800/5100
Graphics:
  Device-1: Intel CometLake-S GT2 [UHD Graphics 630] driver: i915 v: kernel
  Display: server: No display server data found. Headless machine? tty: 170x47
  API: OpenGL Message: GL data unavailable in console for root.

@nyanmisaka
Copy link
Member

@cuihaoleo Thanks! I'll look into it.

@nyanmisaka
Copy link
Member

nyanmisaka commented Feb 14, 2023

@cuihaoleo I can't reproduce the issue locally, with or without the modified ffmpeg cmd. hd630_fine.txt
HD 630 is basically the same as UHD 630 but has lower frequency.

System:
  Host: manjaro-ssd Kernel: 6.2.0-1-MANJARO arch: x86_64 bits: 64
    Desktop: GNOME v: 43.2 Distro: Manjaro Linux
Graphics:
  Device-1: Intel HD Graphics 630 driver: i915 v: kernel
  Device-2: NVIDIA GP107M [GeForce GTX 1050 Mobile] driver: nvidia
    v: 525.85.05
  Device-3: Microdia Integrated_Webcam_HD type: USB driver: uvcvideo
  Display: x11 server: X.org v: 1.21.1.7 with: Xwayland v: 22.1.7 driver: X:
    loaded: modesetting,nvidia unloaded: nouveau dri: iris gpu: i915
    resolution: 3840x2160~60Hz
  API: OpenGL v: 4.6 Mesa 22.3.5 renderer: Mesa Intel HD Graphics 630 (KBL
    GT2)

I suspect there's an issue when muxing the video and audio.
Can you try this option -max_interleave_delta 0 ? I'm not sure if it helps.
And add the -v debug option to expose the internal context that causes the error.

@cuihaoleo
Copy link

Hi @nyanmisaka I tried -max_interleave_delta 0 and it doesn't fix the error. Though I have some more information that may help you troubleshoot.

First, I found the number of threads matters. When I set -threads 12, no error happens. (note that I removed many parameters that I think don't affect the outcome):

/usr/lib/jellyfin-ffmpeg/ffmpeg -v debug -threads 12 -max_interleave_delta 0 -init_hw_device vaapi=va:,driver=iHD,kernel_driver=i915 -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi -canvas_size 1920x1080 -i file:"/data/video/test/out.mkv"  -map 0:0 -map 0:1 -codec:v:0 h264_qsv -filter_complex "[0:2]scale,format=bgra,hwupload=derive_device=qsv:extra_hw_frames=64[sub];[0:0]setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=format=nv12,hwmap=derive_device=qsv,format=qsv[main];[main][sub]overlay_qsv=w=1920:h=1080" -codec:a:0 libfdk_aac -f null -

Full output: log_t12.log

When I set it to 13 or more, the error occurs:

/usr/lib/jellyfin-ffmpeg/ffmpeg -v debug -threads 13 -max_interleave_delta 0 -init_hw_device vaapi=va:,driver=iHD,kernel_driver=i915 -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi -canvas_size 1920x1080 -i file:"/data/video/test/out.mkv"  -map 0:0 -map 0:1 -codec:v:0 h264_qsv -filter_complex "[0:2]scale,format=bgra,hwupload=derive_device=qsv:extra_hw_frames=64[sub];[0:0]setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=format=nv12,hwmap=derive_device=qsv,format=qsv[main];[main][sub]overlay_qsv=w=1920:h=1080" -codec:a:0 libfdk_aac -f null -

Full output: log_t13.log

Second, I built a version with debug information with your portable versions builder and run GDB on it to see what happened. The error occurs when NULL is returned from vaapi_pool_alloc in the if statement below:

if (hwfc->initial_pool_size > 0 &&
avfc->nb_surfaces >= hwfc->initial_pool_size)
return NULL;

Some GDB output (note that the line numbers can differ from code in the repo due to patches and some manual edits):

(gdb) frame 0
#0  vaapi_pool_alloc (opaque=0x55555d5f1b80, size=4) at libavutil/hwcontext_vaapi.c:495
495         if (hwfc->initial_pool_size > 0 &&
(gdb) p hwfc->initial_pool_size
$118 = 10
(gdb) p avfc->nb_surfaces
$119 = 10
(gdb) bt
#0  vaapi_pool_alloc (opaque=0x55555d5f1b80, size=4) at libavutil/hwcontext_vaapi.c:495
#1  0x0000555556e35b77 in pool_alloc_buffer (pool=0x55555d5eb9c0) at libavutil/buffer.c:365
#2  0x0000555556e35d34 in av_buffer_pool_get (pool=0x55555d5eb9c0) at libavutil/buffer.c:403
#3  0x0000555556e563e7 in vaapi_get_buffer (hwfc=0x55555d5f1b80, frame=0x55555e4b2b80) at libavutil/hwcontext_vaapi.c:693
#4  0x0000555556e47d30 in av_hwframe_get_buffer (hwframe_ref=0x55555d5f3e80, frame=0x55555e4b2b80, flags=0) at libavutil/hwcontext.c:555
#5  0x0000555555c38fd4 in ff_default_get_video_buffer2 (link=0x55555d5ed3c0, w=1920, h=1080, align=32) at libavfilter/video.c:57
#6  0x0000555555c39180 in ff_default_get_video_buffer (link=0x55555d5ed3c0, w=1920, h=1080) at libavfilter/video.c:98
#7  0x0000555555a12ce3 in hwmap_get_buffer (inlink=0x55555d5ed3c0, w=1920, h=1080) at libavfilter/vf_hwmap.c:321
#8  0x0000555555c391e1 in ff_get_video_buffer (link=0x55555d5ed3c0, w=1920, h=1080) at libavfilter/video.c:108
#9  0x0000555555b64e78 in scale_vaapi_filter_frame (inlink=0x55555d5ed000, input_frame=0x55555fefedc0) at libavfilter/vf_scale_vaapi.c:117
#10 0x000055555589a9f9 in ff_filter_frame_framed (link=0x55555d5ed000, frame=0x55555fefedc0) at libavfilter/avfilter.c:990
#11 0x000055555589b0a4 in ff_filter_frame_to_filter (link=0x55555d5ed000) at libavfilter/avfilter.c:1134
#12 0x000055555589b2ba in ff_filter_activate_default (filter=0x55555d5ecd80) at libavfilter/avfilter.c:1183
#13 0x000055555589b41a in ff_filter_activate (filter=0x55555d5ecd80) at libavfilter/avfilter.c:1342
#14 0x00005555558a0391 in ff_filter_graph_run_once (graph=0x55555bc18a80) at libavfilter/avfiltergraph.c:1351
#15 0x00005555558a1960 in push_frame (graph=0x55555bc18a80) at libavfilter/buffersrc.c:169
#16 0x00005555558a1eef in av_buffersrc_add_frame_flags (ctx=0x55555d5efa40, frame=0x55555bb8de40, flags=4) at libavfilter/buffersrc.c:251
#17 0x00005555558562f4 in ifilter_send_frame (ifilter=0x55555bc1b2c0, frame=0x55555bb8de40, keep_reference=0) at fftools/ffmpeg.c:2013
#18 0x0000555555856568 in send_frame_to_filters (ist=0x55555bb52140, decoded_frame=0x55555bb8de40) at fftools/ffmpeg.c:2082
#19 0x0000555555857279 in decode_video (ist=0x55555bb52140, pkt=0x55555bb50bc0, got_output=0x7fffffffdc40, duration_pts=0x7fffffffdc48, eof=0,
    decode_failed=0x7fffffffdc38) at fftools/ffmpeg.c:2272
#20 0x0000555555857c3b in process_input_packet (ist=0x55555bb52140, pkt=0x55555bb6efc0, no_eof=0) at fftools/ffmpeg.c:2425
#21 0x000055555585f0d5 in process_input (file_index=0) at fftools/ffmpeg.c:4205
#22 0x000055555585f5e9 in transcode_step () at fftools/ffmpeg.c:4350
#23 0x000055555585f743 in transcode () at fftools/ffmpeg.c:4404
#24 0x0000555555860021 in main (argc=30, argv=0x7fffffffe288) at fftools/ffmpeg.c:4605

@nyanmisaka
Copy link
Member

nyanmisaka commented Feb 15, 2023

@cuihaoleo Thanks for digging into it!

initial_pool_size is bound to the number of decoder threads, which affects the allocation of VA surface. The processor of HD 630 on my old laptop is an i5-7300HQ, which has only quad cores. So it make sense why I didn't reproduce the issue.

In most cases the threads of HW decoders have little effect on FPS scaling. You can try setting it to 1 or 2 to observe the FPS.

VAAPI in FFmpeg currently does not support dynamic frame pool resizing, which means that you must set -extra_hw_frames num on initialization when necessary, such as using lookahead and b-frames in encoders.

If it's handy, you can try this patch, it seems to be forgotten by upstream.

@cuihaoleo
Copy link

@nyanmisaka I tried the "dynamically frame pool resizing" patch. It seems it only add one line of error before crash, without fixing anything:

[AVHWFramesContext @ 0x564f845b7980] allocated surfaces count(10) > pool_size(10)
Error while filtering: Cannot allocate memory
Failed to inject frame into filter network: Cannot allocate memory
Error while processing the decoded data for stream #0:0

I also traced where the value 10 of hwfc->initial_pool_size came from. It's actually a hardcoded value from this line:

err = ff_filter_init_hw_frames(avctx, outlink, 10);

I don't find any clue about what this hardcoded value means. But I guess it's really about some obscure VAAPI VPP settings instead of decoders?

Changing it to a higher value, for example, 16, works around the error on my side.

@nyanmisaka
Copy link
Member

@cuihaoleo Add :extra_hw_frames=8 to scale_vaapi and try again? It seems there's a hardcoded pool size in VA VPP filter.

@cuihaoleo
Copy link

@nyanmisaka extra_hw_frames does make a difference. extra_hw_frames=8 is enough to fix the issue with the test video, but for my original video, 8 is not enough and I got:

[AVHWFramesContext @ 0x5572e4bbf180] allocated surfaces count(12) > pool_size(12)

extra_hw_frames=10 is enough for the original video.

@nyanmisaka
Copy link
Member

@cuihaoleo The legacy scale_qsv code default it to 32.

ret = ff_filter_init_hw_frames(ctx, outlink, 32);

And I added extra 32 in a rare case on AMD VAAPI.
https://github.com/jellyfin/jellyfin/blob/65f6c2e2fd7b3a7f308463e3bc096ba6e8bf65da/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs#L4173

Can you reproduce the issue in these two cases?

  • QSV HWA, OS native VAAPI decoder disabled
  • VAAPI HWA

@cuihaoleo
Copy link

@nyanmisaka

QSV HWA, OS native VAAPI decoder disabled

I assume you mean to keep "Hardware acceleration" at "Intel QuickSync (QSV)" and unselect "Prefer OS native DXVA or VA-API hardware decoders" option in Jellyfin setting. The error went away under this configuration.

Log: FFmpeg.Transcode-2023-02-15_18-03-25_3f4edc52ad8223cf98a2e25f8e3e9c9d_df38b53e.log

VAAPI HWA

I assume you mean to change "Hardware acceleration" to "Video Acceleration API (VAAPI)". The error was reproducible under this configuration.

Log: FFmpeg.Transcode-2023-02-15_18-05-27_3f4edc52ad8223cf98a2e25f8e3e9c9d_3dd3d0de.log

Modifying the command with extra_hw_frames=11 (or larger) for scale_vaapi fixes the issue.

@nyanmisaka
Copy link
Member

nyanmisaka commented Feb 16, 2023

@cuihaoleo Can you reproduce the issue when the subtitle burn-in is disabled?

If not, we just need to figure out a suitable extra_hw_frames value for scale_vaapi and apply it when using VAAPI decoder and overlay_{vaapi,qsv} subtitle burn-in.

BTW how about 4k transcoding? We've been testing 1080p.

@cuihaoleo
Copy link

cuihaoleo commented Feb 16, 2023

@nyanmisaka I don't think I can turn off subtitle burn-in for PGSSUB. The minimum I can choose is burn "Only image formats" and that still includes PGSSUB. If I disable subtitle, Jellyfin will switch to direct stream and there will be no error.

I don't have any 4K video with PGSSUB on my machine. Let me see if I can download or create one.

@cuihaoleo
Copy link

I wrote a simple script to try a few different encoding parameters and search for the minimum extra_hw_frames required for scale_vaapi to be used with overlay_qsv.

The script
#!/usr/bin/env python3

import sys
import os
from itertools import product
import subprocess

ENCODER_LIST = ["h264_qsv", "hevc_qsv"]
RESOLUTION_LIST = [(1280, 720), (1920, 1080), (3840, 2160)]
DURATION_LIST = ["00:01:00", "00:02:00", "00:04:00", "00:08:00"]

encoding_cmd = "ffmpeg -y -nostdin -hide_banner -loglevel error -hwaccel qsv -hwaccel_output_format qsv -canvas_size {width}x{height} -f lavfi -i testsrc=size={width}x{height},format=yuv420p -f lavfi -i anoisesrc -i {pgs_file} -map 0:v -map 1:a -map 2:s -codec:v {encoder} -preset veryfast -codec:a flac -codec:s copy -t {duration} {output}"
transcoding_cmd = "/usr/lib/jellyfin-ffmpeg/ffmpeg -nostdin -hide_banner -loglevel error -init_hw_device vaapi=va:,driver=iHD,kernel_driver=i915 -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi -autorotate 0 -canvas_size 1920x1080 -i file:{input} -autoscale 0 -map 0:0 -map 0:1 -codec:v:0 h264_qsv -filter_complex '[0:2]scale=flags=fast_bilinear,format=bgra,hwupload=derive_device=qsv:extra_hw_frames=64[sub];[0:0]setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=format=nv12:extra_hw_frames={extra_hw_frames},hwmap=derive_device=qsv,format=qsv[main];[main][sub]overlay_qsv=eof_action=endall:shortest=1:repeatlast=0:w={width}:h={height}' -codec:a:0 libfdk_aac -f null -"

os.environ["AV_LOG_FORCE_NOCOLOR"] = '1'
pgs_file, = sys.argv[1:]

for encoder, (width, height), duration in product(ENCODER_LIST, RESOLUTION_LIST, DURATION_LIST):
    filename = "test.mkv"
    subprocess.run(encoding_cmd.format(encoder=encoder, width=width, height=height, duration=duration, output=filename, pgs_file=pgs_file), shell=True, check=True)

    lo = 0   # known to not work
    hi = 32  # known to work

    while hi - lo > 1:
        mid = (lo + hi) // 2
        p = subprocess.run(transcoding_cmd.format(encoder=encoder, width=width, height=height, duration=duration, input=filename, extra_hw_frames=mid), shell=True)

        if p.returncode == 0:
            hi = mid
        else:
            lo = mid

    print(f"{encoder} {width}x{height} {duration}: {hi}")

The pgs_files used are extracted from my original set of videos.

A few observations:

  • Encoding / video duration / PGS track used all has effects on the result. Though I don't find any pattern.
  • Resolution has no effect on the result.

With a paticular PGS track, I observed as many as 22 extra_hw_frames required.

h264_qsv 1280x720 00:01:00: 12
h264_qsv 1280x720 00:02:00: 13
h264_qsv 1280x720 00:04:00: 10
h264_qsv 1280x720 00:08:00: 10
h264_qsv 1920x1080 00:01:00: 12
h264_qsv 1920x1080 00:02:00: 13
h264_qsv 1920x1080 00:04:00: 10
h264_qsv 1920x1080 00:08:00: 10
h264_qsv 3840x2160 00:01:00: 12
h264_qsv 3840x2160 00:02:00: 13
h264_qsv 3840x2160 00:04:00: 10
h264_qsv 3840x2160 00:08:00: 10
hevc_qsv 1280x720 00:01:00: 12
hevc_qsv 1280x720 00:02:00: 22  <- Highest
hevc_qsv 1280x720 00:04:00: 10
hevc_qsv 1280x720 00:08:00: 16
hevc_qsv 1920x1080 00:01:00: 12
hevc_qsv 1920x1080 00:02:00: 22
hevc_qsv 1920x1080 00:04:00: 10
hevc_qsv 1920x1080 00:08:00: 16
hevc_qsv 3840x2160 00:01:00: 12
hevc_qsv 3840x2160 00:02:00: 22
hevc_qsv 3840x2160 00:04:00: 10
hevc_qsv 3840x2160 00:08:00: 16

And there is another PGS track with which I observed as few as 8 extra_hw_frames required.

Given that I already found a few other transcoding parameters (-threads, -an or -codec:a copy) has an effect, I doubt whether a "suitable" value that fits in all situations exists.

I'm going to simply disable "Prefer OS native DXVA or VA-API hardware decoders" as a workaround. But let me know if you want to do other tests.

@nyanmisaka
Copy link
Member

@cuihaoleo Could you try this patch in jellyfin-ffmpeg and see if it helps?

This time dynamic frame pool is allowed in vaapi_vpp.

https://patch-diff.githubusercontent.com/raw/intel-media-ci/ffmpeg/pull/628.patch

@kode54
Copy link

kode54 commented Mar 19, 2023

I attempted to apply that patch, and I have a breakage still with Intel Arc A770 LE 16GB, transcoding MPEG-2 (DVD rip) to H.264:

/videos/e56fb7fb-4a26-fd28-96ce-ab30e1a5eb3f/hls1/main/0.ts

{"Protocol":0,"Id":"e56fb7fb4a26fd2896ceab30e1a5eb3f","Path":"/mnt/storage/fat/Videos/TV/Castle/Season 2/11 - The Fifth Bullet.mkv","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":"mkv,webm","Size":1542008320,"Name":"11 - The Fifth Bullet","IsRemote":false,"ETag":"d4b5d78a1db4c2c1fa066eaf76a4489a","RunTimeTicks":25839140864,"ReadAtNativeFramerate":false,"IgnoreDts":false,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true,"IsInfiniteStream":false,"RequiresOpening":false,"OpenToken":null,"RequiresClosing":false,"LiveStreamId":null,"BufferMs":null,"RequiresLooping":false,"SupportsProbing":true,"VideoType":0,"IsoType":null,"Video3DFormat":null,"MediaStreams":[{"Codec":"mpeg2video","CodecTag":null,"Language":"eng","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":null,"VideoRange":"SDR","VideoRangeType":"SDR","VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"480p MPEG2VIDEO SDR","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":4774178,"BitDepth":8,"RefFrames":1,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"Height":480,"Width":720,"AverageFrameRate":29.97003,"RealFrameRate":29.97003,"Profile":"Main","Type":1,"AspectRatio":"16:9","Index":0,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":"yuv420p","Level":8,"IsAnamorphic":null},{"Codec":"ac3","CodecTag":null,"Language":"eng","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"Surround 5.1","VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"Surround 5.1 - English - Dolby Digital - Default","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":"5.1","BitRate":384000,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":6,"SampleRate":48000,"IsDefault":true,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"DVDSUB","CodecTag":null,"Language":"eng","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":null,"VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":"Undefined","LocalizedDefault":"Default","LocalizedForced":"Forced","LocalizedExternal":"External","DisplayTitle":"English - Default - DVDSUB","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":true,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":2,"AspectRatio":null,"Index":2,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"DVDSUB","CodecTag":null,"Language":"fre","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":null,"VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":"Undefined","LocalizedDefault":"Default","LocalizedForced":"Forced","LocalizedExternal":"External","DisplayTitle":"Fre - DVDSUB","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":2,"AspectRatio":null,"Index":3,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"DVDSUB","CodecTag":null,"Language":"spa","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":null,"VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":"Undefined","LocalizedDefault":"Default","LocalizedForced":"Forced","LocalizedExternal":"External","DisplayTitle":"Spanish - DVDSUB","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":2,"AspectRatio":null,"Index":4,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"subrip","CodecTag":null,"Language":"eng","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":null,"VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":"Undefined","LocalizedDefault":"Default","LocalizedForced":"Forced","LocalizedExternal":"External","DisplayTitle":"English - SUBRIP","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":2,"AspectRatio":null,"Index":5,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":true,"SupportsExternalStream":true,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null}],"MediaAttachments":[],"Formats":[],"Bitrate":5158178,"Timestamp":null,"RequiredHttpHeaders":{},"TranscodingUrl":null,"TranscodingSubProtocol":null,"TranscodingContainer":null,"AnalyzeDurationMs":null,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null}

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -init_hw_device vaapi=va:,driver=iHD,kernel_driver=i915 -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi -autorotate 0 -canvas_size 720x480 -i file:"/mnt/storage/fat/Videos/TV/Castle/Season 2/11 - The Fifth Bullet.mkv" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -codec:v:0 h264_qsv -preset 7 -look_ahead 0 -b:v 4774178 -maxrate 4774178 -bufsize 9548356 -profile:v:0 high -level 51 -g:v:0 90 -keyint_min:v:0 90 -filter_complex "[0:2]scale=flags=fast_bilinear,format=bgra,hwupload=derive_device=qsv:extra_hw_frames=64[sub];[0:0]setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=format=nv12,hwmap=derive_device=qsv,format=qsv[main];[main][sub]overlay_qsv=eof_action=endall:shortest=1:repeatlast=0:w=720:h=480" -start_at_zero -codec:a:0 libfdk_aac -ac 2 -ab 384000 -af "volume=2" -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_segment_filename "/var/lib/jellyfin/transcodes/14553cf18532518a3f1d74a788431c17%d.ts" -hls_playlist_type vod -hls_list_size 0 -y "/var/lib/jellyfin/transcodes/14553cf18532518a3f1d74a788431c17.m3u8"


ffmpeg version 5.1.2-Jellyfin Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 12.2.1 (GCC) 20230201
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-shared --disable-libxcb --disable-sdl2 --disable-xlib --enable-gpl --enable-version3 --enable-static --enable-gmp --enable-gnutls --enable-chromaprint --enable-libfontconfig --enable-libass --enable-libbluray --enable-libdrm --enable-libfdk-aac --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
Input #0, matroska,webm, from 'file:/mnt/storage/fat/Videos/TV/Castle/Season 2/11 - The Fifth Bullet.mkv':
  Metadata:
    encoder         : libmakemkv v1.17.3 (1.3.10/1.5.2) darwin(arm64-release)
    creation_time   : 2023-03-19T04:25:37.000000Z
  Duration: 00:43:03.91, start: 0.000000, bitrate: 4774 kb/s
  Chapters:
    Chapter #0:0: start 0.000000, end 31.031000
      Metadata:
        title           : Chapter 01
    Chapter #0:1: start 31.031000, end 439.272167
      Metadata:
        title           : Chapter 02
    Chapter #0:2: start 439.272167, end 1006.538867
      Metadata:
        title           : Chapter 03
    Chapter #0:3: start 1006.538867, end 1477.008867
      Metadata:
        title           : Chapter 04
    Chapter #0:4: start 1477.008867, end 1834.866367
      Metadata:
        title           : Chapter 05
    Chapter #0:5: start 1834.866367, end 2181.179000
      Metadata:
        title           : Chapter 06
    Chapter #0:6: start 2181.179000, end 2545.075867
      Metadata:
        title           : Chapter 07
    Chapter #0:7: start 2545.075867, end 2583.314067
      Metadata:
        title           : Chapter 08
    Chapter #0:8: start 2583.314067, end 2583.914667
      Metadata:
        title           : Chapter 09
  Stream #0:0(eng): Video: mpeg2video (Main), yuv420p(tv, progressive), 720x480 [SAR 32:27 DAR 16:9], SAR 853:720 DAR 853:480, 29.97 fps, 29.97 tbr, 1k tbn
    Metadata:
      BPS-eng         : 4353639
      DURATION-eng    : 00:43:03.914666666
      NUMBER_OF_FRAMES-eng: 61957
      NUMBER_OF_BYTES-eng: 1406178722
      SOURCE_ID-eng   : 0100E0
      _STATISTICS_WRITING_APP-eng: MakeMKV v1.17.3 darwin(arm64-release)
      _STATISTICS_WRITING_DATE_UTC-eng: 2023-03-19 04:25:37
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES SOURCE_ID
    Side data:
      cpb: bitrate max/min/avg: 9800000/0/0 buffer size: 1835008 vbv_delay: N/A
  Stream #0:1(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s (default)
    Metadata:
      title           : Surround 5.1
      BPS-eng         : 384000
      DURATION-eng    : 00:43:03.904000000
      NUMBER_OF_FRAMES-eng: 80747
      NUMBER_OF_BYTES-eng: 124027392
      SOURCE_ID-eng   : 0180BD
      _STATISTICS_WRITING_APP-eng: MakeMKV v1.17.3 darwin(arm64-release)
      _STATISTICS_WRITING_DATE_UTC-eng: 2023-03-19 04:25:37
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES SOURCE_ID
  Stream #0:2(eng): Subtitle: dvd_subtitle, 720x480 (default)
    Metadata:
      BPS-eng         : 11218
      DURATION-eng    : 00:43:02.324444444
      NUMBER_OF_FRAMES-eng: 809
      NUMBER_OF_BYTES-eng: 3621252
      SOURCE_ID-eng   : 0120BD
      _STATISTICS_WRITING_APP-eng: MakeMKV v1.17.3 darwin(arm64-release)
      _STATISTICS_WRITING_DATE_UTC-eng: 2023-03-19 04:25:37
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES SOURCE_ID
  Stream #0:3(fre): Subtitle: dvd_subtitle, 720x480
    Metadata:
      BPS-eng         : 10439
      DURATION-eng    : 00:43:02.324444444
      NUMBER_OF_FRAMES-eng: 780
      NUMBER_OF_BYTES-eng: 3369692
      SOURCE_ID-eng   : 0121BD
      _STATISTICS_WRITING_APP-eng: MakeMKV v1.17.3 darwin(arm64-release)
      _STATISTICS_WRITING_DATE_UTC-eng: 2023-03-19 04:25:37
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES SOURCE_ID
  Stream #0:4(spa): Subtitle: dvd_subtitle, 720x480
    Metadata:
      BPS-eng         : 9755
      DURATION-eng    : 00:43:02.324444444
      NUMBER_OF_FRAMES-eng: 780
      NUMBER_OF_BYTES-eng: 3148828
      SOURCE_ID-eng   : 0122BD
      _STATISTICS_WRITING_APP-eng: MakeMKV v1.17.3 darwin(arm64-release)
      _STATISTICS_WRITING_DATE_UTC-eng: 2023-03-19 04:25:37
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES SOURCE_ID
  Stream #0:5(eng): Subtitle: subrip, 720x480
    Metadata:
      BPS-eng         : 197
      DURATION-eng    : 00:42:15.899000000
      NUMBER_OF_FRAMES-eng: 931
      NUMBER_OF_BYTES-eng: 62639
      SOURCE_ID-eng   : 0100E0
      _STATISTICS_WRITING_APP-eng: MakeMKV v1.17.3 darwin(arm64-release)
      _STATISTICS_WRITING_DATE_UTC-eng: 2023-03-19 04:25:37
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES SOURCE_ID
Stream mapping:
  Stream #0:0 (mpeg2video) -> setparams:default (graph 0)
  Stream #0:2 (dvdsub) -> scale:default (graph 0)
  overlay_qsv:default (graph 0) -> Stream #0:0 (h264_qsv)
  Stream #0:1 -> #0:1 (ac3 (native) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
[matroska,webm @ 0x55acd0318180] sub2video: using 720x480 canvas
[Parsed_overlay_qsv_7 @ 0x55acd057df80] Error running VPP: undefined behavior (-16)
Error while filtering: Internal bug, should not have happened
Failed to inject frame into filter network: Internal bug, should not have happened
Error while processing the decoded data for stream #0:0
[libfdk_aac @ 0x55acd038d540] 2 frames left in the queue on closing
Conversion failed!

E: It works if I turn off subtitles.

@nyanmisaka
Copy link
Member

[Parsed_overlay_qsv_7 @ 0x55acd057df80] Error running VPP: undefined behavior (-16)
Error while filtering: Internal bug, should not have happened

MFX_ERR_UNDEFINED_BEHAVIOR = -16, /*!< Undefined behavior. */

@kode54 This seems to be a different issue on DG2. Can you share a short clip of your video with this cli?

ffmpeg -i "/path/to/11 - The Fifth Bullet.mkv" -map 0:0 -map 0:2 -an -c:v copy -c:s copy -t 120 -y "/path/to/clip.mkv"

@kode54
Copy link

kode54 commented Mar 19, 2023

Here you go:

ttps://f.losno.co/v/test-clip.mkv

@nyanmisaka
Copy link
Member

nyanmisaka commented Mar 20, 2023

@kode54 I can reproduce the issue on Linux. It should be an upstream regression in ffmpeg. I'll report it to intel.

Before they figure out a patch you can disable the "OS native VA-API decoder" as a workaround.

@nyanmisaka
Copy link
Member

@kode54 Here's the ticket. https://trac.ffmpeg.org/ticket/10274

@Brainiarc7
Copy link

@cuihaoleo Thanks for digging into it!

initial_pool_size is bound to the number of decoder threads, which affects the allocation of VA surface. The processor of HD 630 on my old laptop is an i5-7300HQ, which has only quad cores. So it make sense why I didn't reproduce the issue.

In most cases the threads of HW decoders have little effect on FPS scaling. You can try setting it to 1 or 2 to observe the FPS.

VAAPI in FFmpeg currently does not support dynamic frame pool resizing, which means that you must set -extra_hw_frames num on initialization when necessary, such as using lookahead and b-frames in encoders.

If it's handy, you can try this patch, it seems to be forgotten by upstream.

Try with -threads:v 2 and report back. See this.

Then, for every invocation of hwmap (and hwupload) that involves the derivation of a QSV HWContext, ensure that its' extended with hwmap=derive_device=qsv:extra_hw_frames=64.

Test with this command that implements these changes and test back:

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M \
-init_hw_device vaapi=va:,driver=iHD,kernel_driver=i915 \
-init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi \
-autorotate 0 -canvas_size 720x480 \
-i file:"/mnt/storage/fat/Videos/TV/Castle/Season 2/11 - The Fifth Bullet.mkv" \
-autoscale 0 -map_metadata -1 -map_chapters -1 -threads:v 1 -map 0:0 -map 0:1 \
-codec:v:0 h264_qsv -preset 7 -look_ahead 0 -b:v 4774178 -maxrate 4774178 \
-bufsize 9548356 -profile:v:0 high -level 51 -g:v:0 90 -keyint_min:v:0 90 \
-filter_complex "[0:2]scale=flags=fast_bilinear,format=bgra,hwupload=derive_device=qsv:extra_hw_frames=64[sub];[0:0]setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=format=nv12,hwmap=derive_device=qsv:extra_hw_frames=64,format=qsv[main];[main][sub]overlay_qsv=eof_action=endall:shortest=1:repeatlast=0:w=720:h=480" \
-start_at_zero -codec:a:0 libfdk_aac -ac 2 -ab 384000 -af "volume=2" \
-copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 \
-f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts \
-start_number 0 \
-hls_segment_filename "/var/lib/jellyfin/transcodes/14553cf18532518a3f1d74a788431c17%d.ts" \
-hls_playlist_type vod -hls_list_size 0 -y "/var/lib/jellyfin/transcodes/14553cf18532518a3f1d74a788431c17.m3u8"

@eomanis
Copy link

eomanis commented Nov 10, 2023

I appear to be affected by this, or at any rate, someone else using my server is, and says the video aborts towards the end of something they are watching. Their client gets transcoded HEVC with burned-in subtitles, and the server uses an Intel DG2 Arc A380 for recoding work.

System information

  • Arch Linux, Linux my-system 6.5.8-arch1-1
  • Intel Haswell CPU with 4 cores and 4 threads
  • 32 GB memory, about 25 GB free when the error happened
  • Intel DG2 Arc A380 for video decoding and encoding
  • jellyfin-ffmpeg 6.0.6-2
  • jellyfin-server 10.8.12-1
  • jellyfin-web 10.8.12-1

ffmpeg log:

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -ss 00:58:15.000 -init_hw_device vaapi=va:,kernel_driver=i915,driver=iHD -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi -autorotate 0 -i file:"/path/to/video.mkv" -ss 00:58:15.000 -i file:"/path/to/video.idx" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map 1:0 -sn -map -0:0 -codec:v:0 hevc_qsv -tag:v:0 hvc1 -low_power 1 -preset 7 -b:v 9464000 -maxrate 9464000 -bufsize 18928000 -g:v:0 75 -keyint_min:v:0 75 -filter_complex "[1:0]scale=flags=fast_bilinear,format=bgra,hwupload=derive_device=qsv:extra_hw_frames=64[sub];[0:0]setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=format=nv12:extra_hw_frames=24,hwmap=derive_device=qsv,format=qsv[main];[main][sub]overlay_qsv=eof_action=endall:shortest=1:repeatlast=0:w=1920:h=960" -codec:a:0 aac -ac 6 -ab 640000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 1165 -hls_segment_filename "/path/to/cache/jellyfin/88ea20b17e50d6749432a01cb3f4447a%d.ts" -hls_playlist_type vod -hls_list_size 0 -y "/path/to/cache/jellyfin/88ea20b17e50d6749432a01cb3f4447a.m3u8"

ffmpeg version 6.0-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13.2.1 (GCC) 20230801
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-shared --disable-libxcb --disable-sdl2 --disable-xlib --enable-gpl --enable-version3 --enable-static --enable-gmp --enable-gnutls --enable-chromaprint --enable-libfontconfig --enable-libass --enable-libbluray --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-libopus --enable-libopenmpt --enable-libtheora --enable-libvorbis --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --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:/path/to/video.mkv':
  Metadata:
	encoder         : libebml v1.0.0 + libmatroska v1.0
  Duration: 01:02:19.40, start: 0.000000, bitrate: 14374 kb/s
  Chapters:
	(chapters omitted)
  Stream #0:0(eng): Video: h264 (High), yuv420p(progressive), 1920x960 [SAR 1:1 DAR 2:1], 25 fps, 25 tbr, 1k tbn (default)
  Stream #0:1(ger): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
  Stream #0:2(eng): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s
  Stream #0:3(eng): Subtitle: subrip
Input #1, vobsub, from 'file:/path/to/video.idx':
  Duration: N/A, bitrate: N/A
  Stream #1:0[0x0](de): Subtitle: dvd_subtitle, 1920x1080 (default)
Stream mapping:
  Stream #0:0 (h264) -> setparams:default (graph 0)
  Stream #1:0 (dvdsub) -> scale:default (graph 0)
  overlay_qsv:default (graph 0) -> Stream #0:0 (hevc_qsv)
  Stream #0:1 -> #0:1 (dts (dca) -> aac (native))
Press [q] to stop, [?] for help
[vobsub @ 0x55ba89544980] sub2video: using 720x576 canvas
Output #0, hls, to '/path/to/cache/jellyfin/88ea20b17e50d6749432a01cb3f4447a.m3u8':
  Metadata:
	encoder         : Lavf60.3.100
  Stream #0:0: Video: hevc (hvc1 / 0x31637668), qsv(bt709, progressive), 1920x960 [SAR 1:1 DAR 2:1], q=2-31, 9464 kb/s, 25 fps, 90k tbn
	Metadata:
	  encoder         : Lavc60.3.100 hevc_qsv
	Side data:
	  cpb: bitrate max/min/avg: 9464000/0/9464000 buffer size: 18928000 vbv_delay: N/A
  Stream #0:1(ger): Audio: aac (LC), 48000 Hz, 5.1, fltp, 640 kb/s (default)
	Metadata:
	  encoder         : Lavc60.3.100 aac
frame=    0 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x    
Error while filtering: Cannot allocate memory
Failed to inject frame into filter network: Cannot allocate memory
Error while processing the decoded data for stream #0:0
[aac @ 0x55ba895bdb80] Qavg: 397.835
[aac @ 0x55ba895bdb80] 2 frames left in the queue on closing
Conversion failed!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working upstream
Projects
None yet
Development

No branches or pull requests

7 participants