|
4 / 4 / 1
Регистрация: 24.01.2023
Сообщений: 20
|
|
Ffmpeg, av_frame_free - утечка памяти28.01.2025, 19:03. Показов 7187. Ответов 2
Столкнулся с совершенно непонятной проблемой. У меня есть плейер. Последовательность работы в цикле примерно такая:
av_packet_alloc av_read_frame avcodec_send_packet av_frame_alloc avcodec_receive_frame тут я обрабатываю полученный кадр, преобразую в нужный мне формат и отправляю на выходное устройство av_packet_unref av_frame_free Всё прекрасно работало. утечек памяти не было (у меня есть машины, где этот плейер работает месяцами). Но сейчас мне нужно перейти в более высокое разрешение и частоту кадров и я упёрся в то, что обработка полученного кадра занимает слишком много времени. Ок, ядер сейчас много, разложу по нескольким потокам и всё будет хорошо. Соответственно, из цикла убирается av_frame_free. Кадры складываются в очередь и несколькими потоками из этой очереди забираются и обрабатываются. И в конце обработки тем же av_frame_free память освобождается. И тут я проваливаюсь в какой-то ад, потому что работа av_frame_free в этих условиях становится странной. Иногда всё работает, но течёт память со скоростью примерно мегабайт в секунду. Иногда av_frame_free вдруг начинает дико тормозить и программа тупо перестаёт успевать обрабатывать видео в реалтайм. Ладно, думаю, может я тупой и av_frame_free нельзя пихать в thread. В очереди к кадру добавляю флажок processed, который ставлю в thread, а освобождение кадров делаю в основном потоке по флажку. Результат точно такой же. Уже второй день бьюсь и ничего не понимаю. То есть если я освобождаю кадр до того, как шлю следующий пакет в декодер - всё отлично. Если же я "откладываю" полученный из декодера кадр "на потом" и шлю следующий пакет в декодер - всё сходит с ума. Да, пытался заменить av_frame_free на av_frame_unref не меняет ничего. Гугление не даёт ничего. Может кто-то с чем-то подобным сталкивался? Да, я понимаю, что можно просто скопировать данные кадра куда-то себе в основном процессе и спокойно с ними работать. Но это +750МБ/сек копирования памяти просто на ровном месте. Чего хотелось бы избежать.
0
|
|
| 28.01.2025, 19:03 | |
|
Ответы с готовыми решениями:
2
Будет ли утечка памяти? |
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,457
|
|
| 03.02.2025, 14:17 | |
|
An_private, а если с кадром ничего не делать кроме освобождения все равно течет и странности эти вот все? на тот случай если на самом деле он не виноват
0
|
|
|
4 / 4 / 1
Регистрация: 24.01.2023
Сообщений: 20
|
|
| 26.02.2025, 18:00 [ТС] | |
Сообщение было отмечено vxg как решение
Решение
Честно говоря - я тогда немного психанул, снёс этот кусок и переписал заново. И всё стало нормально - видимо где-то была какая-то неочевидная ошибка, которая приводила к утечке памяти. Так что - я сам дурак.
1
|
|
| 26.02.2025, 18:00 | |
|
Помогаю со студенческими работами здесь
3
Утечка памяти и SFML
Утечка памяти из Unity
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|