Android Soundpool Heast Limits -- android поле с участием audio поле с участием heap поле с участием overflow поле с участием soundpool пол Связанный проблема

Android SoundPool heap limits


2
vote

проблема

русский

Я использую Soundpool, чтобы загрузить несколько звуковых клипов и воспроизводить их обратно.

Это правильно функционирует на 100% от того, что я могу сказать. Но во время .load () звонит, я получаю свой журнал, спаминный:

 <код> 06-09 11:30:26.110: ERROR/AudioCache(23363): Heap size overflow! req size: 1050624, max size: 1048576   

Я загружаю в 11 звуковых файлах, из этих 2 очень маленькие ~ 3Kb, а остальные находятся между 10 кБ - 15 кБ. Windows отчетность

Размер: 114kb

Размер на диске: 128kb

Я нажимаю на пределы того, какой Soundpool способен удерживать? Есть ли некоторые настройки, я должен изменять, чтобы избежать этого переполнения? Любые руководства о том, как я должен создать, мои аудио контроля будут очень цениться.

Английский оригинал

I am using a SoundPool to load several sound clips into and play them back.

It is functioning 100% correctly from what I can tell. But during the .load() calls I am getting my log spammed with:

06-09 11:30:26.110: ERROR/AudioCache(23363): Heap size overflow! req size: 1050624, max size: 1048576 

I am loading in 11 sound files, of those 2 are very small ~3kb and the rest are between 10kb - 15kb. Windows is reporting

Size: 114kb

Size on disk: 128kb

Am I pushing the limits of what SoundPool is capable of holding? Is there some setting I should be altering to avoid this overflow? Any guidance on how I should be setting up my audio controls would be much appreciated.

</div
              
   
   

Список ответов

3
 
vote

Soundpool собирается распаковать загруженный аудио на данные PCM, чтобы он был готов играть мгновенно без задержки декодирования. Если аудио, которое вы загружаетесь, сильно сжимаются, такие как MP3, то это может немного немного взорваться. Попробуйте кодировать аудио как моно, если стерео не нужно (это обычно не для коротких звуковых эффектов).

 

SoundPool is going to decompress the loaded audio to PCM data so it is ready to play instantly without the latency of decoding. If the audio you are loading is compressed heavily, such as MP3, then that can get blown up quite a bit. Try encoding the audio as mono if stereo isn't necessary (it usually isn't for short sound effects).

</div
 
 
0
 
vote

<Код> SoundPool имеет ограничение размера буфера 1 МБ на трек. Но этот предел применяется не к размеру файла, а для распаковки необработанных данных PCM.

Я предлагаю использовать <код> SoundPoolCompat из библиотеки 3D вечеринки. Он имеет подобное API для SoundPool , но имеет пользовательский размер буфера, все данные в этом буфере будут загружены в память и воспроизведены с небольшим задержкой, такими как <код> SoundPool . Все данные, которые превышают этот размер буфера, будут загружены по требованию (что добавляет задержку, аналогичную <код> MediaPlayer ). Но он не сразится и не играет в данные, которые соответствует размеру буфера, как SoundPool. Также размер буфера выражается в размере файла не в разбном размере данных. Что удобнее для пользователя API.

 <код> implementation 'com.olekdia:sound-pool:3.2.0'   

https://gitlab.com/olekdia/common/Libraries/sound-pool

 

SoundPool has 1Mb buffer size limit per track. But this limit applies not to file size but to decompressed raw PCM data.

I suggest to use SoundPoolCompat from 3d party library. It has similar api to SoundPool, but has custom buffer size, all data within that buffer will be loaded into memory and played with small latency like SoundPool does. All data that exceed that buffer size will be loaded on demand (which adds latency, similar to MediaPlayer). But it will not crash nor play data that's only fits buffer size like SoundPool. Also buffer size is expressed in file size not in decompressed data size. Which is more convenient to api user.

implementation 'com.olekdia:sound-pool:3.2.0' 

https://gitlab.com/olekdia/common/libraries/sound-pool

</div
 
 
 
 

Связанный проблема

-1  Начать активность и не заканчивать деятельность  ( Start activity and dont finish activity ) 
У меня есть всплеск активности и свидетельствующая активность, в которой я открываю некоторые активиты: Резюме: SPLAH - & GT; Главная & GT; A или B или C и ...

1  Обновление поле PDF штрих-кода в IOS и устройстве Android  ( Updating a pdf barcode field in ios and android device ) 
Я создал одну корпус Acrobat, используя радиообъекты, текстовое поле, кнопку, флажок и штрих-код в Adobe Acrobat Pro. После этого я открыл эту форму в Adobe...

0  Как мой банк обратная связь обратно на мой мобильный телефон?  ( How does my bank reverse connect back to my mobile phone ) 
Я бродил, как это работает программирование мудрым. Если я вошел в мой веб-сайт онлайн-банкинга на моем компьютере, так как я вхожу в систему, приложение на...

0  Автоматически заканчивать приложение / или автоматическое уничтожение приложения, поставляемое в Android?  ( Automatically finish an app or auto destroy app posible in android ) 
Два вопроса: 1) Я хочу добавить к моему приложению возможность автоматически выхода через несколько минут бездействия. Что я подразумеваю под автоматическим в...

0  Бросить исключение, если код ответа не 20x  ( Throw exception if response code isnt 20x ) 
Я использую библиотеку koush Ion, и я хочу знать, есть ли возможность бросить исключение, если код ответа не 20x (например, если это 400, 401 и т. Д.). ...

0  Как мне изменить стиль кнопки в Android?  ( How do i change the style of a button in android ) 
Я хочу изменить стиль кнопки в приложении Android. Вот картинка, которая имеет оба вида кнопок, то, что у меня есть сейчас, и тот, который я хочу переключитьс...

23  Ошибка пропуска тестового прогона: запуск приборов не удалось из-за «Java.lang.classnotfoundException»  ( Test run failed instrumentation run failed due to java lang classnotfoundexcep ) 
Это мой первый раз настроив проект теста на Android для проверки проекта Android. Я создал очень базовый тестовый случай, который я пытаюсь запустить, однак...

8  Когда Android остановит свой процессор без блокировки Wake?  ( When will android stop its cpu without wake lock ) 
Я знаю, что Android использует Sake Blance, чтобы поддерживать запуск CPU или на экране. Очевидно, что Screen Sake Box предотвращает выключение экрана активно...

0  Новое намерение не начнется внутри Onlongpress?  ( New intent wont start inside onlongpress ) 
Я создал класс TapSturedEtector для поверхностного представления. Я поймаю длинное сенсорное событие, и я хочу начать новую активность. Но это не работает. На...

0  Класс libgdx не рисует текстуру  ( Libgdx class does not draw texture ) 
Я пытаюсь нарисовать игровой символ в моем классе "MaigaMestreen.java" из класса "Mavans.java", когда я касаюсь экрана моего телефона. К сожалению, моя прогр...

0  ValueAnimator не работает, как это должно быть. Перезапуск от 0, а не с 1-го значения  ( Valueanimator does not work how it should restarts from 0 instead of from 1st v ) 
Это мой код: <код> public static void countTextViewTravelMode(final Integer value, final TextView myView, final CrudStateCallback back){ Integer begin ...

0  Замена ViewPager с фрагментом меню  ( Replacing viewpager with menuitem fragment ) 
У меня есть <код> Activity , в котором всего 4 <код> fragments есть. Из 4, 3 фрагменты интегрированы в виде вкладок с Viewpager , 4-й в меню в качестве и...

37  Android получают путь к изображению от Drawnable в виде строки  ( Android get image path from drawable as string ) 
Есть ли способ, которым я могу получить путь к изображению от Drawable папки в Android в виде строки. Мне это нужно, потому что я реализую свой собственный пр...

0  Получить почту пользователя, используя FQL  ( Get user email using fql ) 
Я использую следующий FQL, чтобы получить дни рождения из Facebook (я знаю, что API TEH изменился) Однако я хочу продолжить с этим: <код> String fqlQuery = ...

18  Не может решить импорт LocalBroadCastManager на оператор Android.support.v4.content.localboadcastmanager;  ( Can not resolve import localbroadcastmanager on statement android support v4 con ) 
Я получил эту ошибку при импорте проекта Eclipse на Android Studio. Он показывает предложение добавить библиотеку <код> Gradle: com.android.support:support-co...

Связанный проблема

-1  Начать активность и не заканчивать деятельность 
1  Обновление поле PDF штрих-кода в IOS и устройстве Android 
0  Как мой банк обратная связь обратно на мой мобильный телефон? 
0  Автоматически заканчивать приложение / или автоматическое уничтожение приложения, поставляемое в Android? 
0  Бросить исключение, если код ответа не 20x 
0  Как мне изменить стиль кнопки в Android? 
23  Ошибка пропуска тестового прогона: запуск приборов не удалось из-за «Java.lang.classnotfoundException» 
8  Когда Android остановит свой процессор без блокировки Wake? 
0  Новое намерение не начнется внутри Onlongpress? 
0  Класс libgdx не рисует текстуру 
0  ValueAnimator не работает, как это должно быть. Перезапуск от 0, а не с 1-го значения 
0  Замена ViewPager с фрагментом меню 
37  Android получают путь к изображению от Drawnable в виде строки 
0  Получить почту пользователя, используя FQL 
18  Не может решить импорт LocalBroadCastManager на оператор Android.support.v4.content.localboadcastmanager;