2014-06-26 4 views
8

Ich habe einen Bildschirm, der wie ein Instrument ist. Es gibt Schaltflächen, die Sounddateien abspielen.Notieren Sie alle von meiner App erzeugten Sounds in einer Audiodatei (nicht vom Mikrofon)

Ich möchte die Klänge aufnehmen, wenn der Benutzer die Tasten in einer einzigen Audiodatei drückt, so dass ich diese Datei als mp4 oder ein anderes Audioformat speichern kann.

Können Sie mir bitte erklären, wie Sie dies auf einfache Weise erreichen?

ich in der Lage bin mit dem Mikrofon mit AVAudioRecorder

aufnehmen, wie ich glaube, verwendet das Aufzeichnungsverfahren das Mikrofon als Quelle, aber ich mag es die „audio out“ äquivalent meine App nutzen zu verwenden als eine Quelle.

+0

Das ist eine tolle Frage! –

Antwort

7

Sie könnten versuchen mit The Amazing Audio Engine. Sie können es über Cocoapods installieren

pod 'TheAmazingAudioEngine' 

oder Klon via git

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

Der Ton könnte mit Hilfe von this in einer Datei aufgezeichnet werden.

Also, wenn Sie die Anwendungen Ausgabe einfach aufnehmen möchten verwenden ein 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

Große Antwort! Es kann jedoch nicht den Ton abspielen, der von 'AVPlayer' oder anderen Quellen abgespielt wird, wissen Sie, wie man Audio so aufnimmt? Es könnte mehrere "AVPlayer" geben. – feihu

-3

Verwenden Sie einen Screen Recorder, wie Camtasia oder Fraps. Wenn Sie möchten, können Sie die Aufnahme stoppen und den Ton in mehreren Formaten extrahieren, und es gibt keine Notwendigkeit, Mikrofon zu verwenden ... Es gibt einige Open-Source auch ...

Verwandte Themen