Monotouch: попытка воспроизведения звука из файла, который генерируется на лету с использованием AVAudioPlayer - PullRequest
3 голосов
/ 29 апреля 2011

У меня возникла следующая проблема. Я хочу записать аудиофайл с микрофона с помощью AVAudioRecorder и транслировать вывод в AVAudioPlayer в режиме реального времени.Я попробовал это, открыв поток

FileStream f = new FileStream (fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

, где fileName - этоимя файла, который записывает диктофон.Затем я попытался инициализировать AVAudioPlayer:

AVAudioPlayer player = AVAudioPlayer.FromData (NSData.FromStream (f));

, который всегда возвращал нулевой проигрыватель, поэтому яобернул FileStream в BufferedStream как

BufferedStream bf = new BufferedStream (f);

Затем я инициализировал проигрыватель, используя приведенную выше строку кода, но вместо передачипоток f Я передал поток bf.

Это заставило игрока хотя бы получить значение, отличное от нуля, но я ничего не слышал.

Есть ли вероятность того, что кто-то столкнулся с той же проблемой и знает решение??Могу ли я использовать AVAudioPlayer таким образом или я делаю все это неправильно?

1 Ответ

1 голос
/ 26 октября 2011

Я знаю, что это старый вопрос, но я отвечаю, если кто-то еще сталкивается с вопросом.

Для воспроизведения только что записанного аудио создайте аудиопроигрыватель по URL-адресу, основанному на файлеимя, на которое вы только что записали:

AVAudioPlayer player = AVAudioPlayer.FRomUrl(NSUrl.FromFileName(fileName));
player.PrepareToPlay();
player.Play();

Надеюсь, это кому-нибудь поможет.

...