2014-06-26 25 views
8

Enstrüman gibi görünen bir ekranım var. Ses dosyalarını çalan düğmeler var.Uygulamam tarafından oluşturulan tüm sesleri bir ses dosyasında (mikrofondan değil) kaydedin.

Kullanıcı olarak çalınan sesleri kaydetmek için, bu dosyayı mp4 veya başka bir ses biçiminde kaydedebilmem için tek bir ses dosyasındaki düğmelere basıyorum.

Bunu nasıl basit bir şekilde gerçekleştirebilirim? Sanırım şöyle AVAudioRecorder

ile mikrofon kullanarak kayıt am güçlü

, kayıt yöntemi kaynağı olarak mikrofon kullanır, ama kullanmak benim app "ses çıkışı" eşdeğer kullanmak istiyorum bir kaynak olarak.

+0

Bu harika bir soru! –

cevap

7

Sen The Amazing Audio Engine kullanarak deneyebilirsiniz. Olarak git

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

ses this yardımıyla bir dosyaya kaydedilir olabilir yoluyla Cocoapods

pod 'TheAmazingAudioEngine' 

veya klon yoluyla yükleyebilirsiniz.

Yani uygulamalar çıkışını kaydetmek isterseniz sadece kullanım bir 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

Harika cevap! Ancak 'AVPlayer' veya diğer kaynakların çaldığı sesleri kaydedemez, bu şekilde nasıl ses kaydedileceğini biliyor musunuz? Birden çok "AVPlayer" olabilir. – feihu

-3

kullanın Camtasia veya Fraps gibi bir Screen Recorder. Ne zaman isterseniz, kaydı durdurabilir ve sesleri birden fazla formatta çıkarabilirsiniz ve mikrofon kullanmanıza gerek yoktur ... Bazı açık kaynak kodları da vardır ...

İlgili konular