我有一個像樂器一樣的屏幕。有播放聲音文件的按鈕。在音頻文件(不是來自麥克風)中記錄我的應用程序生成的所有聲音
我想記錄用戶在單個音頻文件中按下按鈕時播放的聲音,以便我可以將該文件保存爲mp4或其他音頻格式。
你能指導我如何以簡單的方式實現這一點?
我能夠使用的麥克風與AVAudioRecorder
當我想到記錄,該記錄方法使用麥克風作爲來源,但我想它用我的應用程序的「音頻輸出」等同用作爲一個來源。
我有一個像樂器一樣的屏幕。有播放聲音文件的按鈕。在音頻文件(不是來自麥克風)中記錄我的應用程序生成的所有聲音
我想記錄用戶在單個音頻文件中按下按鈕時播放的聲音,以便我可以將該文件保存爲mp4或其他音頻格式。
你能指導我如何以簡單的方式實現這一點?
我能夠使用的麥克風與AVAudioRecorder
當我想到記錄,該記錄方法使用麥克風作爲來源,但我想它用我的應用程序的「音頻輸出」等同用作爲一個來源。
您可以嘗試使用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];
}
很好的答案!但是它不能記錄'AVPlayer'或其他來源播放的音頻,你知道如何記錄音頻嗎?可能有多個'AVPlayer'。 – feihu
使用屏幕錄製,像Camtasia
或Fraps
。 當你想要的時候,你可以停止記錄和提取多種格式的聲音,並且不需要使用麥克風... 也有一些開源...
這是一個很棒的問題! –