2012-02-29 6 views
8

W jaki sposób można nagrać dźwięk za pomocą iOS? Nie jest to nagranie wejściowe z mikrofonu, ale chcę mieć możliwość przechwytywania/nagrywania bieżącego odtwarzanego dźwięku w mojej aplikacji?Nagrywanie dźwięku iOS

Tak, np. Zaczynam sesję nagraniową i każdy dźwięk, który jest odtwarzany tylko w mojej aplikacji, chcę nagrać go do pliku?

mam zrobić badania na ten temat, ale jestem mylić z tym, co w użyciu, gdyż wygląda mieszanie struktur dźwiękowych może powodować problemy?

Chcę po prostu być w stanie uchwycić i zapisać odtwarzanie dźwięku wewnątrz mojej aplikacji.

+0

Jak grasz dźwięk wewnątrz aplikacji? – sbooth

+0

Będę używał jednostek audio. Czy rejestrator sam będzie jednostką? – jarryd

+0

tylko po to, aby wyjaśnić, kiedy mówisz, że chcesz nagrać dźwięk odtwarzany w aplikacji (nie mikrofon), oznacza to, że chcesz nagrywać bezpośrednio z karty dźwiękowej, prawda? Powiedzmy więc, że jeśli ktoś włoży słuchawkę, będzie mógł nagrać wszystko, co usłyszy. – luca590

Odpowiedz

4

Dobrze, jeśli szukasz po prostu nagrać dźwięk, że aplikacja produkuje, to tak jest to bardzo możliwe.

Co nie jest możliwe, nagrywa wszystkie dźwięki, które są wyprowadzane przez głośnik. (EDYTOWANIE: Chcę tylko wyjaśnić, że nie ma sposobu na zapisanie wyjścia audio wyprodukowanego przez inne aplikacje.Możesz nagrywać tylko próbki audio, które TY produkujesz).

Jeśli chcesz nagrać dźwięk w aplikacji, musisz użyć zdalnej jednostki audio io (http://atastypixel.com/blog/using-remoteio-audio-unit/).

Wszystko, co naprawdę trzeba zrobić, to skopiować bufor odtwarzania po jej wypełnienia.

ex)

memcpy(void *dest, ioData->mBuffers[0].mData, int amount_of_bytes); 
1

Brak publicznego interfejsu API do przechwytywania lub rejestrowania wszystkich ogólnych danych wyjściowych audio z aplikacji na iOS.

1

Zapoznaj się przykładowa aplikacja MixerHostAudio od Apple. To świetny sposób, aby zacząć uczyć się o jednostkach audio. Kiedy już to zrozumiesz, istnieje wiele samouczków online, które mówią o dodawaniu nagrań.

2

Jest to możliwe poprzez owinięcie Core Audio użyteczności publicznej plik CAAudioUnitOutputCapturer http://developer.apple.com/library/mac/#samplecode/CoreAudioUtilityClasses/Introduction/Intro.html

Zobacz moją odpowiedź na to pytanie dla klas owijki. Properly use Objective C++

+0

Czy myślisz, że możliwe jest również nagrywanie dźwięku z innych aplikacji? Czy możesz nagrać czysty dźwięk, który na przykład produkuje Spotify? –

+0

@PiotrDabkowski iOS robi sandboxing, więc dźwięk prawdopodobnie pochodzi z samej aplikacji. Są rzeczy takie jak audio między aplikacjami, do których, Spotify w twoim przypadku musi wspierać, abyś mógł odbierać audio z niego. – lppier