AVAudioplayer 有兩個初始化方法:網絡
NSData *audioData = [NSData dataWithContentsOfURL:someURL];
NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@.mp3", docDirPath , fileName];
[audioData writeToFile:filePath atomically:YES];
NSError *error;
NSURL *fileURL = [NSURL fileURLWithPath:filePath];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error];
if (player == nil)
{ NSLog(@"AudioPlayer did not load properly: %@", [error description]); }
else
{ [player play]; }
侷限性:recorder,player簡單易用,可是有侷限性。
對我項目影響最大的是,屢次錄音時,並播放時,會出現文件錯誤。
在繼續利用recorder,player的前提下,就須要將每次錄音完成的文件進行數據追加。app
if ([[NSFileManager defaultManager] fileExistsAtPath:臨時音頻路徑) { NSData *tempAudioData = [[NSData alloc] initWithContentsOfFile:臨時音頻路徑]; if ([[NSFileManager defaultManager] fileExistsAtPath:音頻路徑]) { NSMutableData *newAudioData = [NSMutableData data]; NSData *audioData = [[NSData alloc] initWithContentsOfFile:[self configureAudioRecordFilePath:self.currentFileName]]; [newAudioData appendData:audioData]; [newAudioData appendData:tempAudioData]; PADebug(@"data length:%zd", [newAudioData length]); [newAudioData writeToFile:音頻路徑 atomically:YES]; }else { [tempAudioData writeToFile:[self configureAudioRecordFilePath:self.currentFileName] atomically:YES]; } [[NSFileManager defaultManager]removeItemAtPath:音頻路徑 error:nil]; }