我可以将NSManagedObject设置为AVAudioRecorder的目标(与NSURL相对)的方法是什么?我想保存微小的声音咬合作为选择“外部存储”选项的二进制核心数据类型......当然还要播放它们。我已经看到几个问题绕过这个主题,似乎有一些问题正在做这个,但我还没有找到任何硬核代码示例。到目前为止,我已经通过遵循本教程获得了基本文件类型录制的成功:http://www.supersuraccoon-cocos2d.com/2011/06/05/voice-record-demo/,我只想将其直接带到核心数据。
仅供参考 - 我确实认识到最佳做法是存储URL,然后检索,但我真的很想直接将二进制文件转换为CoreData(如果可能)。
谢谢!
P.S。如果你有一个Swift的样本,我将不胜感激!
答案 0 :(得分:3)
您需要将音频保存为NSData。您需要将文件保存在磁盘中并转换为NSData。
我有一个配置My Audio的功能,还有一个可以进行转换的功能!!!
-(void)persistDataAudioPlaylet{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"myAudio.caf"];
NSData *fileContents = [NSData dataWithContentsOfFile:filePath];
self.playlet.sound = fileContents;
}
-(void)configureAudioRecord{
NSArray *dirPaths;
NSString *docsDir;
dirPaths = NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = dirPaths[0];
NSString *soundFilePath = [docsDir
stringByAppendingPathComponent:@"myAudio.caf"];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
NSDictionary *recordSettings = [NSDictionary
dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:AVAudioQualityMin],
AVEncoderAudioQualityKey,
[NSNumber numberWithInt:16],
AVEncoderBitRateKey,
[NSNumber numberWithInt: 2],
AVNumberOfChannelsKey,
[NSNumber numberWithFloat:44100.0],
AVSampleRateKey,
nil];
NSError *error = nil;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord
error:nil];
self.audioRecorder = [[AVAudioRecorder alloc]
initWithURL:soundFileURL
settings:recordSettings
error:&error];
if (error)
{
NSLog(@"error: %@", [error localizedDescription]);
} else {
[self.audioRecorder prepareToRecord];
}
}