#c# #streaming #xamarin.ios #avaudioplayer
#c# #потоковая передача #xamarin.ios #avaudioplayer
Вопрос:
Я столкнулся со следующей проблемой.. Я хочу записать аудиофайл с микрофона с помощью AVAudioRecorder и передавать выходные данные в AVAudioPlayer в режиме реального времени. Я попробовал это, открыв поток
FileStream f = новый FileStream (имя файла, FileMode.Откройте, доступ к файлу.Прочитайте, общий файловый ресурс.ReadWrite);
где fileName — это имя файла, который записывается устройством записи. Затем я попытался инициализировать AVAudioPlayer:
Проигрыватель AVAudioPlayer = AVAudioPlayer.Из данных (NSData.FromStream(f));
Это всегда возвращало значение null player, поэтому я преобразовал FileStream в BufferedStream, например
BufferedStream bf = новый BufferedStream(f);
Затем я инициализировал проигрыватель, используя приведенную выше строку кода, но вместо передачи потока f я передал поток bf.
Это заставило проигрыватель, по крайней мере, получить значение, отличное от null, но я ничего не мог услышать.
Есть ли шанс, что кто-то сталкивался с такой же проблемой и знает решение? Могу ли я использовать AVAudioPlayer таким образом или я делаю все это неправильно?
Ответ №1:
Я знаю, что это старый вопрос, но я отвечаю на случай, если кто-то еще столкнется с этим вопросом.
Для воспроизведения только что записанного аудио создайте аудиоплеер по URL-адресу, основанному на имени файла, в который вы только что записали:
AVAudioPlayer player = AVAudioPlayer.FRomUrl(NSUrl.FromFileName(fileName));
player.PrepareToPlay();
player.Play();
Надеюсь, это кому-нибудь поможет.