Flutter SoundPool проблемы с воспроизведением звука - PullRequest
0 голосов
/ 04 апреля 2020

Мне трудно проигрывать звуки с помощью SoundPool на Flutter. Я прочитал / гуглил о страшном сообщении "AUDIO_OUTPUT_FLAG_FAST отклонено сервером; frameCount 0 -> 48000"

До сих пор вот шаги, которые я предпринял:

  • Изображение работает в эмулятор Pixel 3A
  • Файлы wav, размером 90 КБ, они длятся по 1 секунде каждый, выборка 48 КБ (ffmprobe говорит: Длительность: 00: 00: 01.00, битрейт: 768 КБ / s Поток # 0: 0: Аудио: pcm_s16le ([1] [0] [0] [0] / 0x0001), 48000 Гц, 1 канал, s16, 768 кбит / с)

  • Я предварительно загрузил затем во время запуска приложения с активом, следует код (в пределах foreach):

     var content = await _bundle.load(notePath);
     sounds[notePath] = content;
     newNote.soundId = await _pool.load(content);
     new Timer(const Duration(milliseconds: (2000)), () => print("loaded $notePath"));

Я поставил продолжительность, иначе некоторые (случайным образом) звуки были не загружен (у меня есть 72 звука для загрузки). Когда мне нужно воспроизвести звук (после нажатия на экран), я просто делаю

_pool.stop(1);
_pool.play(noteToPlay.soundId);

, который создает некоторый треск (один парень предложил вместо этого всегда воспроизводить звук на громкости 0, чтобы избежать этого, но это разряжает батарею).

Теперь проблема: сообщение появляется в консоли, но я мог бы жить с ним, если бы не было следующей проблемы: Случайно, некоторые звуки не воспроизводятся, касания просто игнорируются. Приложение никогда не падает. Если я удаляю вызов soundPool.play, то все в порядке (соответствующий файл найден, нажатие обработано ...), поэтому я понимаю, что soundPool теряется во время одного из воспроизведений в будущем. Плеер может играть очень быстро, но даже если я go медленно, он все равно не работает.

SoundPool запускается так:

class NoteService {
  final Soundpool _pool = Soundpool(streamType: StreamType.notification);
[snip class definition]

Спасибо за понимание.

...