2015-08-12 4 views
-1

Я использую AVAudioSession иаудио Доступа к данным для конкретного устройства (AVAudioSession)

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

Есть ли способ сделать это? Я посмотрел на основной звук, но я недостаточно знаком с ним, чтобы использовать его для распечатки как ввода, так и вывода.

Спасибо!

+0

Там, вероятно, это способ сделать это. Что вы пробовали? Что пошло не так и где? – Nick

ответ

1

AVAudioSession - это только первый шаг к тому, чтобы узнать, что ваше приложение хочет что-то сделать с микрофоном. Я предполагаю, что «печать» означает визуальную визуализацию или добавление аудиоданных в файл.

Если вы хотите записывать аудио в файл можно использовать AVAudioRecorder класс:

//What are our output settings? 
NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init]; 
[recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey]; 
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey]; 
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey]; 

// Create the recorder where recorder is declared as a property of the class & outputFileURL is an NSURL to a file path you want to record to 
recorder = [[AVAudioRecorder alloc] initWithURL:outputFileURL settings:recordSetting error:NULL]; 
recorder.delegate = self; 
[recorder prepareToRecord]; 

// Tell the system you are going to use the mic 
AVAudioSession *session = [AVAudioSession sharedInstance]; 
[session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:0 error:nil]; 
[session setActive:YES error:nil]; 

// Start recording 
[recorder record]; 

--------------------------------- 

//When you are done call: 
[recorder stop]; 
NSURL *savedFileURL = recorder.url; 

Если вы хотите использовать CoreAudio, чтобы вы могли получить каждый буфер и решить, что делать с ним ваш идти чтобы сделать шаг назад и изучить структуру CoreAudio. CoreAudio позволяет вам быть более гибкими в отношении маршрутизации и дизайна вашей аудиосистемы. Это не может быть объяснено в одном посте, но если вы собираетесь что путь один метод для получения данных от микрофона заключается в следующем:

  1. Создание AudioUnit из AudioComponent (Тип: kAudioUnitType_Output, Подтип: kAudioUnitSubType_RemoteIO)

  2. Enable IO на AudioUnit

  3. Установите kAudioUnitProperty_StreamFormat свойство AudioUnit к (скорее всего формата PCM) AudioStreamBasicDescription

  4. Перехват данных с помощью AURenderCallbackStruct

+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. –

+0

@AshishKakkad я смотрю. Я отредактирую его тогда – kezi

 Смежные вопросы

  • Нет связанных вопросов^_^