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?