2016-01-08 17 views
8

Sto lavorando a un'app che consente all'utente di creare una sorta di dub. C'è un file audio in riproduzione, e l'utente può toccare in determinati momenti per inserire il suono (un po 'come un pulsante di censura.) Mi chiedo come fare per catturare il prodotto finale.È possibile registrare l'audio che esce da iPhone?

Catturare l'audio direttamente da iPhone sembra il percorso più semplice, in quanto l'utente sente già il prodotto finito così com'è. Tuttavia, non riesco a trovare nulla su come farlo. Se non è possibile, ci sono dei suggerimenti?

+0

Ciao, credo che tu possa prendere un punto di partenza qui http://zathras.de/programming/cocoa/UKSoundFileRecorder.zip/UKSoundFileRecorder/UKSoundFileRecorder/ Nonostante sia per MacOS, credo che funzionerà anche per iPhone – ColdSteel

+0

Una domanda: l'audio che viene riprodotto .., proviene dalla stessa app che si utilizzerà per censurarlo? –

+0

@HugoAlonso Sì, è corretto. – bkwebhero

risposta

1

Il modo migliore sarebbe probabilmente quello di utilizzare AV Foundation framework per il missaggio, quindi il buffering dell'audio e la riproduzione. Ciò consentirebbe un alto livello di astrazione, garantendo allo stesso tempo la riproduzione e l'audio salvato.

Oltre a quello: da un Come posso ottenere questo con il codice minimo -perspective, senza ulteriori informazioni sulla configurazione, la domanda è troppo ampia e/o basata su opinioni.

+0

Non penso che sia troppo ampio. Volevo scoprire se c'è un modo semplice per catturare l'audio dall'iPhone, in modo simile a come c'è un modo semplice per scattare immagini. – bkwebhero

1

Dovrai lavorare con i buffer. Non so in questo momento come è fatto in Swift ma è possibile implementarlo in Obj-C e poi scavalcandolo.

È possibile fare riferimento a questo risposte qui in StackOverflow (Sono un po 'vecchio)

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

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

e un progetto esiste anche (ma è in Obj-C) https://github.com/alexbw/novocaine

Principalmente l'idea per il tuo caso sarebbe avere 2 separat buffer ed il tuo effetto sonoro. Quindi, riproducete dal buffer A (la vostra musica) e copiando i dati riprodotti nel buffer B (uscita finale) a meno che non stiate giocando l'effetto. Nel caso in cui Quale sarete copiando i dati di effetti nel vostro tampone B.

Altra opzione è quella di farlo non in linea:

  1. Ascolta la tua musica (o audio) e mantenere un timer in esecuzione sincronizzato con il tempo trascorso del tuo "da censurare audio".
  2. Salvare il timestamp di inizio e fine toccando il pulsante di censura (ad esempio).
  3. Buffer di sovrapposizione A con il tuo effetto in quelli registrati (inizio).

  4. salvare il buffer in un file (o fare quello che devi fare con esso)

UPDATE:

si dovrebbe prendere uno sguardo l'attuazione di Apple di qualcosa di simile : https://developer.apple.com/library/ios/samplecode/AVAEMixerSample/Introduction/Intro.html

Problemi correlati