Мне трудно проигрывать звуки с помощью 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]
Спасибо за понимание.