Web Audio API на iOS Сбой памяти - PullRequest
0 голосов
/ 30 августа 2018

Мы используем Web Audio API для воспроизведения и управления аудио в веб-приложении. При попытке декодировать большие mp3-файлы (около 5 МБ) использование памяти в Safari на iPad резко возрастает, и если мы загрузим другой файл аналогичного размера, он просто рухнет.

Похоже, что API Web Audio на самом деле не работает при работе на iPad, если мы не используем небольшие файлы.

Обратите внимание, что тот же код хорошо работает в версии Chrome Desktop - версия Safari жалуется на высокое использование памяти.

Кто-нибудь знает, как обойти эту проблему? или какой предел памяти для воспроизведения аудиофайлов с помощью Web Audio на iPad?

Спасибо!

1 Ответ

0 голосов
/ 09 февраля 2019

Расшифрованные аудиофайлы весят в ОЗУ намного больше, чем на диске. В одном примере используется 4 байта (32-разрядное число с плавающей запятой) . Это переводит 230 МБ ОЗУ на 10 минут аудио с частотой дискретизации 48 000 Гц и в стерео. Один час аудио с той же частотой дискретизации и со стереозвуком займет ~ 1,3 ГБ ОЗУ!

Итак, если вы декодируете много файлов, вы можете использовать большие объемы оперативной памяти. Я предлагаю «отменить код» ненужных вам файлов (просто «забыть» ненужные звуковые буферы, чтобы сборщик мусора мог их повторно использовать).

Вы также можете использовать монофонические аудиофайлы вместо стерео, что должно уменьшить использование памяти вдвое.

Обратите внимание, что декодированные аудиофайлы всегда передискретизируются до частоты дискретизации устройства. Это означает, что использование аудио с низкой частотой дискретизации не поможет с использованием памяти.

...