Я пишу mp3-плеер на Qt, и мне нужно следить за уровнем звука. Для этого я прикрепляю QAudioProbe к своему QMediaPlayer. Однако, когда я делаю это в Windows, потребление памяти постоянно увеличивается. Приблизительно после 3 часов воспроизведения звука мой проигрыватель исчерпал всю память на моей машине и перестал функционировать.
Потребление памяти стабильно под OSX. Он также стабилен при подключении аудио-зонда к QAudioInput.
Я попытался удалить и deleteLater на моем зонде, но это не приводит к сокращению использования памяти в соответствии с диспетчером задач. Есть ли альтернативы QAudioProbe? У меня быстро заканчиваются идеи о том, как обойти эту проблему с памятью.
QMediaPlayer *player = new QMediaPlayer(this);
player->setMedia(QUrl_to_my.mp3);
QAudioProbe *probe = new QAudioProbe(this);
probe->setSource(player); // Memory usage stabilizes if I comment this line out
player->play();
ОБНОВЛЕНИЕ: другие вещи, которые я пробовал
QAudioDecoder — к сожалению, это, похоже, та же утечка памяти. Это также не реализовано под OSX.
Выполнение кода в отдельном QThread — все еще утечка памяти.
Задача ещё не решена.
Других решений пока нет …