FFmpeg hlásí Cannot allocate memory

FFmpeg hlásí Cannot allocate memory
« kdy: 10. 10. 2024, 23:16:04 »
Tentokrát z jiného soudkumašiny, 16GB RAM  8), snažím se převést na WIndows  10 přes ffmpeg přes qsv akceleraci soubor  a sype to na mě mraky řádků
h264_qsv @ 000001f17227b000] get_buffer() failed
[dec:h264_qsv @ 000001cfad5d9dc0] Error submitting packet to decoder: Cannot allocate memory
Těm předchází (když stihnu stisknout ctrl c než to ustřelí do nebe)
[h264_qsv @ 000001a098f653c0] Failed to allocate a qsv/nv12 frame from a fixed pool of hardware frames.
[h264_qsv @ 000001a098f653c0] Consider setting extra_hw_frames to a larger value (currently set to 8, giving a pool size of 34).

což jsem zkusil.

rádoby nápady od ai vedou k jiným chybám (přidán hwupload:extraframes - jak do filter:v i na začátek -extra_hw_frames)
Error submitting packet to decoder: Unknown error occurred
[AVHWFramesContext @ 000001c2a4e2c080] Could not create the texture (8007000e)
[AVHWFramesContext @ 000001c2a4e2d340] Error initializing a child frames context
[AVHWFramesContext @ 000001c2a4e2d340] Error creating an internal frame pool


Napadlo mě přirozeně , plnost ram.

ale mám využitá:6000, Dostupná 9000, Potvrzeno11000/24000 , vmezi 5700 ,fondy 220 a 230, paměť gpu200/77900 (vystřeluje na 900 max)

Při spuštém systému jako dřív, když to nedělalo. encoding je z h264 do h265/h264_qsv - . Zjistil jsem, ostatně jak píše výpis   ,problém že je na straně dekodéru, ale nejsem si tím jistý.

Začíná to bý zajímavé. Někdy konverze jede bez problému a někdy ne. - stejný příkaz. Většinou když ho ukončím a spustím rychlo po předchozím, se děje ta chyba.
Někdy to začné pálit ty Error až po určité dob konverze
Může být taky memory leak někde v intel mfx runtime? všiml jsem si ,že ta idle spotřeba grafické paměti nyní je 300 MB (ms hlásí kulatých ale  na hovno  0,3GB) - process explorer nyní 260MB, před pul hodinou 210MB-...


co toto může být za chybu ?

jinak soubor: 2GB, 4K yuv420p 30fps, 150Mbps avc


Re:FFmpeg hlásí Cannot allocate memory
« Odpověď #1 kdy: 11. 10. 2024, 22:41:41 »
To nutně přímo nesouvisí s pamětí. Může tam být i problém s dekódováním streamu s relativně velkými bitratem na konkrétním hardware. V tom případě se to za cenu snížení rychlosti dá třeba předělat na hybrid, kdy se vstupní stream dekódouje na CPU části a enkóding pak běží přes QSV.
Nebo se tam při použití celé pipeline (dekóding, filtry, enkóding) člověk dostane na limit toho HW.

Těžko to úplně replikovat bez konkrétního vstupního souboru a stejného procesoru (s QSV částí).

Nicméně pro zajímavost jak vypadá ten celý příkaz?

Re:FFmpeg hlásí Cannot allocate memory
« Odpověď #2 kdy: Dnes v 20:45:02 »
OK command bez chyby
ffmpeg  -hwaccel qsv    -hide_banner -i "E:\DCIM\x.MP4"
-c:v h264_qsv  -global_quality:v 30   -c:a copy
vf vpp_qsv  -look_ahead 0 -preset 4   -v verbose  -y "x.mkv"

bogus:
ffmpeg  -hwaccel qsv    -hide_banner -i "E:\DCIM\kulky.MP4"
-c:v h264_qsv  -global_quality:v 30   -c:a copy   
-vf vpp_qsv  -look_ahead 1 -preset 4   -v verbose  -y "Voccccy.mkv"

z progresu:
 Duration: 00:01:00.96, start: 0.000000, bitrate: 124420 kb/s
  Stream #0:0[0x1](und): Video: h264 (High), 1 reference frame (avc1 / 0x31637661), yuvj420p(pc, bt709, progressive, left), 3840x2160, 123786 kb/s, 29.97 fps, 29.97 tbr, 30k tbn (default)
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (h264_qsv) -> h264 (h264_qsv))
output:
Stream #0:0: Video: h264, 1 reference frame (H264 / 0x34363248), qsv(pc, bt709, progressive, left), 3840x2160, q=2-31, 29.97 fps, 1k tbn (default)

v dolní části výpisu je vidět že to  doběhne normálně. finalizuje se.
Kód: [Vybrat]
WARNING: defaulting hwaccel_output_format to qsv for compatibility with old commandlines. This behaviour is DEPRECATED and will be removed in the future. Please explicitly set "-hwaccel_output_format qsv".
[AVHWDeviceContext @ 00000195919399c0] Defaulting child_device_type to AV_HWDEVICE_TYPE_D3D11VA for oneVPL.Please explicitly set child device type via "-init_hw_device" option if needed.
[AVHWDeviceContext @ 0000019591939b00] Selecting d3d11va adapter 0
[AVHWDeviceContext @ 0000019591939b00] Using device 8086:193b (Intel(R) Iris(R) Pro Graphics ).
[AVHWDeviceContext @ 00000195919399c0] Use Intel(R) oneVPL to create MFX session, API version is 2.13, the required implementation version is 1.3
[AVHWDeviceContext @ 00000195919399c0] Initialize MFX session: implementation version is 1.31

[h264_qsv @ 0000019591926080] Decoder: output is video memory surface
[h264_qsv @ 0000019591926080] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[h264_qsv @ 0000019591926080] Decoder: output is video memory surface
[h264_qsv @ 0000019591926080] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[graph -1 input from stream 0:0 @ 00000195919a0e80] w:3840 h:2160 pixfmt:qsv tb:1/30000 fr:30000/1001 sar:0/1 csp:bt709 range:pc
[Parsed_vpp_qsv_0 @ 0000019591948680] qsv vpp pass through mode.

[h264_qsv @ 00000195925b06c0] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[h264_qsv @ 00000195925b06c0] Using the intelligent constant quality with lookahead (LA_ICQ) ratecontrol method
[h264_qsv @ 00000195925b06c0] profile: avc high; level: 51
[h264_qsv @ 00000195925b06c0] GopPicSize: 256; GopRefDist: 3; GopOptFlag: closed; IdrInterval: 0
[h264_qsv @ 00000195925b06c0] TargetUsage: 4; RateControlMethod: LA_ICQ
[h264_qsv @ 00000195925b06c0] ICQQuality: 30
[h264_qsv @ 00000195925b06c0] NumSlice: 1; NumRefFrame: 2
[h264_qsv @ 00000195925b06c0] RateDistortionOpt: OFF
[h264_qsv @ 00000195925b06c0] RecoveryPointSEI: OFF
[h264_qsv @ 00000195925b06c0] VDENC: OFF
[h264_qsv @ 00000195925b06c0] Entropy coding: CABAC; MaxDecFrameBuffering: 2
[h264_qsv @ 00000195925b06c0] NalHrdConformance: OFF; SingleSeiNalUnit: ON; VuiVclHrdParameters: OFF VuiNalHrdParameters: OFF
[h264_qsv @ 00000195925b06c0] FrameRateExtD: 1001; FrameRateExtN: 30000
[h264_qsv @ 00000195925b06c0] LookAheadDepth: 10
[h264_qsv @ 00000195925b06c0] IntRefType: 0; IntRefCycleSize: 0; IntRefQPDelta: 0
[h264_qsv @ 00000195925b06c0] MaxFrameSize: 6266880; MaxSliceSize: 0
[h264_qsv @ 00000195925b06c0] BitrateLimit: ON; MBBRC: OFF; ExtBRC: OFF
[h264_qsv @ 00000195925b06c0] Trellis: auto
[h264_qsv @ 00000195925b06c0] RepeatPPS: OFF; NumMbPerSlice: 0; LookAheadDS: 2x

[h264_qsv @ 0000019591926080] Failed to allocate a qsv/nv12 frame from a fixed pool of hardware frames.
[h264_qsv @ 0000019591926080] Consider setting extra_hw_frames to a larger value (currently set to 8, giving a pool size of 34).
[h264_qsv @ 0000019591926080] get_buffer() failed
[vist#0:0/h264 @ 0000019592857040] [dec:h264_qsv @ 00000195925b0b80] Error submitting packet to decoder: Cannot allocate memory
[h264_qsv @ 0000019591926080] get_buffer() failed
[vist#0:0/h264 @ 0000019592857040] [dec:h264_qsv @ 00000195925b0b80] Error submitting packet to decoder: Cannot allocate memory
[h264_qsv @ 0000019591926080] get_buffer() failed
[vist#0:0/h264 @ 0000019592857040] [dec:h264_qsv @ 00000195925b0b80] Error submitting packet to decoder: Cannot allocate memory
[h264_qsv @ 0000019591926080] get_buffer() failed
[vist#0:0/h264 @ 0000019592857040] [dec:h264_qsv @ 00000195925b0b80] Error submitting packet to decoder: Cannot allocate memory
[h264_qsv @ 0000019591926080] get_buffer() failed
...
...
občas:
[vost#0:0/h264_qsv @ 00000195925b00c0] Non-monotonic DTS; previous: 4705, current: 4438; changing to 4705. This may result in incorrect timestamps in the output file.
ale

[vost#0:0/h264_qsv @ 00000195925b00c0] Terminating thread with return code 0 (success)
[out#0/matroska @ 000001959191fd00] All streams finished
[out#0/matroska @ 000001959191fd00] Terminating thread with return code 0 (success)

frame=  322 fps= 73 q=30.0 Lsize=   71537KiB time=00:01:00.82 bitrate=9634.3kbits/s dup=0 drop=8 speed=13.8x
Exiting normally, received signal 2.