Монотач: попытка воспроизвести звук из файла, созданного на лету с помощью AVAudioPlayer

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

FileStream f = новый FileStream (имя файла, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

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

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

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

BufferedStream bf = новый BufferedStream (f);

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

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

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


person defstat    schedule 29.04.2011    source источник


Ответы (1)


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

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

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

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

person competent_tech    schedule 25.10.2011