2016-01-08 4 views
8

Я работаю над приложением, которое позволяет пользователю создавать своего рода дубликат. Существует звуковой файл, и пользователь может нажать в определенные моменты, чтобы вставить звук (вроде как кнопка цензора.) Мне интересно, как сделать захват конечного продукта.Можно ли записать звук, выходящий из iPhone?

Захват звука прямо с iPhone кажется самым легким путем, так как пользователь уже слышит готовый продукт, как он сделан. Однако я ничего не могу найти о том, как это сделать. Если это невозможно, есть ли предложения?

+0

Привет, я считаю, что вы можете взять отправную точку здесь http://zathras.de/programming/cocoa/UKSoundFileRecorder.zip/UKSoundFileRecorder/UKSoundFileRecorder/ Несмотря на это для MacOS, я считаю, что он будет работать и для iPhone – ColdSteel

+0

. Один вопрос: воспроизводимый звук .., из того же приложения, которое вы собираетесь использовать для его цензуры? –

+0

@HugoAlonso Да, это правильно. – bkwebhero

ответ

1

Лучшим способом, вероятно, будет использование AV Foundation framework для микширования, а затем буферизации звука, а также его воспроизведения. Это позволит обеспечить высокий уровень абстракции, гарантируя равное воспроизведение как воспроизводимого, так и сохраненного аудио.

Помимо этого: от Как я могу достичь этого с минимальным кодом, - без дополнительной информации о вашей настройке вопрос слишком широк и/или основан на мнениях.

+0

Я не думаю, что он слишком широк. Я хотел выяснить, есть ли простой способ захватить аудио с iPhone, подобно тому, как есть простой способ скриншотов. – bkwebhero

1

Вам придется работать с буферами. Не знаю сейчас, как это делается в Swift, но вы можете реализовать его в Obj-C, а затем свернуть его.

Вы можете обратиться к этому отвечает здесь в StackOverflow (Они немного старый)

https://stackoverflow.com/a/11218339/2683201

https://stackoverflow.com/a/10101877/2683201

и проект также существует (но в Obj-C) https://github.com/alexbw/novocaine

В основном идея вашего дела состояла бы в том, чтобы иметь 2 сепарата буферов и звукового эффекта. Затем вы будете играть из буфера A (ваша музыка) и копировать воспроизводимые данные в буфер B (окончательный вывод), если вы не играете эффект. В случае, если Wich будет копирование данных эффектов в вашем буфере В.

Другой вариант, чтобы сделать его в автономном режиме:

  1. Воспроизведение музыки (или аудио) и держать работает таймер синхронизирован с истекшего времени вашего «быть подвергнутым цензуре аудио».
  2. Сохраните отметку времени, когда вы начинаете и заканчиваете нажатие кнопки цензора (например).
  3. Буфер переполнения A с вашим эффектом в записанных (стартовом конце) временных меток.

  4. Сохранить буфер в виде файла (или делать то, что вам нужно сделать с ним)

UPDATE:

Вы должны смотреть в реализацию Apple, что-то вроде этого : https://developer.apple.com/library/ios/samplecode/AVAEMixerSample/Introduction/Intro.html

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