2014-06-26 38 views
8

我有一個像樂器一樣的屏幕。有播放聲音文件的按鈕。在音頻文件(不是來自麥克風)中記錄我的應用程序生成的所有聲音

我想記錄用戶在單個音頻文件中按下按鈕時播放的聲音,以便我可以將該文件保存爲mp4或其他音頻格式。

你能指導我如何以簡單的方式實現這一點?

我能夠使用的麥克風與AVAudioRecorder

當我想到記錄,該記錄方法使用麥克風作爲來源,但我想它用我的應用程序的「音頻輸出」等同用作爲一個來源。

+0

這是一個很棒的問題! –

回答

7

您可以嘗試使用The Amazing Audio Engine。您可以通過git的

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

聲音不能被記錄到與this幫助的文件通過的CocoaPods

pod 'TheAmazingAudioEngine' 

或克隆安裝。

所以,如果你要錄製的應用程序輸出只需使用一個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

很好的答案!但是它不能記錄'AVPlayer'或其他來源播放的音頻,你知道如何記錄音頻嗎?可能有多個'AVPlayer'。 – feihu

-3

使用屏幕錄製,像CamtasiaFraps。 當你想要的時候,你可以停止記錄和提取多種格式的聲音,並且不需要使用麥克風... 也有一些開源...

相關問題