Прерывистый щелчок при остановке воспроизведения AudioTrack

Я использую AudioTrack в потоковом режиме. Примерно в одном из 5-10 раз после остановки воспроизведения короткого фрагмента wav-файла я слышу щелчки. Это сводит меня с ума, потому что я не могу последовательно воспроизвести это. Я пробовал различные комбинации вызовов AudioTrack.flush(), AudioTrack.pause() и AudioTrack.stop() перед вызовом AudioTrack.release(). Я также пытался вызвать AudioTrack.setStereoVolume() и передать результат AudioTrack.getMinVolume(). Ничего не сработало.

Некоторые наблюдения:

  • Кажется, это происходит только при воспроизведении короткого фрагмента файла wav. Я не могу воспроизвести его, когда я играю более 3 секунд звука.
  • Иногда AudioTrack.write() возвращает -22, когда я записываю конец аудиоданных. Я не вижу спецификации для -22 в Javadoc. Также этот случай не всегда совпадает с щелчком.
  • Щелчок не всегда воспроизводится, даже если я воспроизведу один и тот же раздел wav-файла.
  • Щелкающий звук может исходить из правого или левого динамика, но не из обоих.

Я вижу это на Acer Iconia A500 под управлением Android 4.0.3. Буду признателен за любые предложения.


person Boris Burtin    schedule 27.03.2013    source источник


Ответы (1)


Поп, вероятно, потому, что песня закончилась на очень высоком сэмпле, а затем внезапно стала 0. Это вызывает «поп»-шум. Попробуйте затухать песню в течение даже 0,01 секунды.

Всплеск при переходе от высокого семпла к нулевой громкости звучит так: https://soundcloud.com/hertzdevil/dirac

person Patashu    schedule 27.03.2013
comment
Хороший звонок! Всплески в основном исчезают, когда я уменьшаю громкость до 0,75, 0,5, 0,25 и 0,01 с последними четырьмя буферами. Я до сих пор время от времени получаю всплывающие окна на Acer Iconia, но я почти уверен, что это не мой код. Это также происходит в YouTube и Play Music, когда я снова и снова воспроизводю/приостанавливаю трек. - person Boris Burtin; 04.05.2013
comment
@Boris Burtin Рад помочь! - person Patashu; 04.05.2013
comment
Я говорил слишком рано. Постепенное исчезновение помогло, но не полностью облегчило проблему. Я думаю, что хлопки также вызваны переходом аудиооборудования в режим ожидания и выходом из него. Я только что дважды воспроизвел звук в своем приложении. В первый раз хлопка не было, во второй раз был. Когда я смотрел в логах, я заметил эту строку, но только после второго воспроизведения: 05-14 15:58:48.780 D/AudioHardware(90): AudioHardware PCM воспроизведение переходит в режим ожидания. Любые предложения о том, как не допустить перехода оборудования в режим ожидания, пока мое приложение находится на переднем плане? - person Boris Burtin; 15.05.2013
comment
Я думаю, я мог бы попытаться сохранить пул объектов AudioTrack и не выпускать их, пока мое приложение не перейдет в фоновый режим. Если у кого-то есть другое предложение, я хотел бы услышать его. - person Boris Burtin; 15.05.2013
comment
Спасибо Паташу. Я ценю ваш быстрый ответ. Я уже сделал кучу поисков этого сообщения, но я не видел, чтобы кто-нибудь сообщил о симптоме, который я вижу. Большинство сообщений, которые я видел, касались блокировки приложения, а не всплывающих окон в аудиовыходе. Я почти уверен, что сообщение, на которое вы ссылаетесь (6662808), попадает в эту категорию. Мой симптом довольно тонкий. Большинство людей могут этого не заметить, если только они не пишут приложение для обработки звука, как я. - person Boris Burtin; 15.05.2013
comment
@Boris Burtin: Боюсь, у меня нет соответствующего опыта, чтобы помочь дальше. Удачи! - person Patashu; 15.05.2013