2014-06-26 17 views
8

Ho uno schermo che è come uno strumento. Ci sono pulsanti che riproducono file audio.Registrare tutti i suoni generati dalla mia app in un file audio (non dal microfono)

Desidero registrare i suoni riprodotti mentre l'utente preme i pulsanti in un singolo file audio in modo da poter salvare quel file come mp4 o altro formato audio.

Potete indicarmi come ottenerlo in modo semplice?

sono in grado di registrare utilizzando il microfono con AVAudioRecorder

Come penso, il metodo di registrazione utilizza il microfono come sorgente, ma lo vorrei utilizzare il "audio out" equivalente della mia app da usare come fonte.

+0

Questa è una domanda fantastica! –

risposta

7

Si potrebbe provare a utilizzare The Amazing Audio Engine. È possibile installarlo tramite Cocoapods

pod 'TheAmazingAudioEngine' 

o clone git via

git clone --depth=1 https://github.com/TheAmazingAudioEngine/TheAmazingAudioEngine.git 

L'audio può essere registrato in un file con l'aiuto di this.

Quindi, se si desidera registrare l'uscita applicazioni è sufficiente utilizzare un Outputreceiver:

@property (nonatomic, strong) AEAudioController *audioController; 
@property (nonatomic, strong) AERecorder *recorder; 

... 

self.audioController = [[AEAudioController alloc] initWithAudioDescription:[AEAudioController nonInterleaved16BitStereoAudioDescription] inputEnabled:YES]; 

... 

//start the recording 
- (void) beginRecording{ 
    self.recorder = [[AERecorder alloc] initWithAudioController:self.audioController]; 
    NSString *documentsFolder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; 

    //the path to record to 
    NSString *filePath = [documentsFolder stringByAppendingPathComponent:@"AppOutput.aiff"]; 

    //start recording 
    NSError *error = NULL; 
    if (![_recorder beginRecordingToFileAtPath:filePath fileType:kAudioFileAIFFType error:&error]) { 
     //an error occured 
     return; 
    } 

    [self.audioController addOutputReceiver:self.recorder]; 
} 

... 

//end the recording 
- (void)endRecording { 
    [self.audioController removeOutputReceiver:self.recorder]; 
    [self.recorder finishRecording]; 
} 
+0

Ottima risposta! Tuttavia non può registrare l'audio riprodotto da 'AVPlayer' o altre fonti, sai come registrare audio come questo? Potrebbero esserci più 'AVPlayer'. – feihu

-3

utilizzare un registratore dello schermo, come Camtasia o Fraps. Quando vuoi, puoi fermare il record ed estrarre il suono in più formati, e non c'è bisogno di usare il microfono ... Ci sono anche alcuni open source ...

Problemi correlati