Огромное, постоянное потребление памяти с использованием кодека VP9 в FFMPEG C++
Использование: https://github.com/ash3D/VideoRecorder Завернуто в: https://github.com/ash3D/UEVideoRecorder
Я добавил кодек VP9 в функцию "FindEncoder" CVideoRecorder (часть репозитория VideoRecorder). Использование кодека VP9 в целом работает, однако потребление памяти огромно, и в течение хороших 30 секунд использование памяти возрастает с 3 ГБ до 6 ГБ, после чего (вокруг) FFMPEG выбрасывает ошибки памяти и прерывает процесс кодирования. Я запустил инструмент диагностики Visual Studio, и он сказал мне, что avcodec.dll хранит всю память, которая не освобождается, пока кодирование не будет завершено (мирно). Функцией, в которой выполняется распределительный вызов, является функция CVideoRecorder::Encode(), которая внутри нее вызывает avcodec_send_frame ().
H264 и HVENC работают нормально с постоянным потреблением памяти около 300 МБ.
Я попытался установить различные настройки для кодека VP9, такие как битрейт, cfr и качество, ни один из которых не изменил поведение каким-либо для меня узнаваемым образом.