Luf*_*fen 12 iphone xcode objective-c avaudiorecorder ios
我目前正在开发一款支持应用内录音的应用.用户可以获得他/她已经通过应用程序记录的本地保存的音频文件的标准表格视图,或者按下按钮转到新的录制视图,从那里可以录制新的音频会话,这将自动获得保存到应用程序沙箱.现在这个功能在大多数情况下运行良好.我可以录制新文件并从应用程序播放它们,但随机时间录音机将无法以此方法开始录制:
-(void) startRecording
{
if (!isRecording)
{
isRecording = YES;
BOOL recordingSucess = [audioRecorder record];
if (recordingSucess)
NSLog(@"WE STARTED THE RECORDING!");
else
NSLog(@"WE DID NOT START THE RECORDING!");
// Start the timer
recordTiming = [NSDate date];
timeCheck = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(timeCheck) userInfo:nil repeats:YES]
}
Run Code Online (Sandbox Code Playgroud)
也就是说,NSLog将打印出"我们没有开始录制",表示它无法开始录制.这导致仍然将空音频文件保存到应用程序,文件大小通常为4096字节.这是录音机对象的初始化方式:
-(id) initWithContentURL:(NSURL *)contentURL
{
self = [super init];
if (self)
{
NSLog(@"Initializing audio recorder!");
// Specific settings for the audio recording
NSDictionary *recordSettings = [NSDictionary
dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:AVAudioQualityMin],
AVEncoderAudioQualityKey,
[NSNumber numberWithInt:8],
AVEncoderBitRateKey,
[NSNumber numberWithInt: 2],
AVNumberOfChannelsKey,
[NSNumber numberWithFloat:22000.0],
AVSampleRateKey,
nil];
NSError *error = nil;
audioRecorder = [[AVAudioRecorder alloc] initWithURL:contentURL settings:recordSettings error:&error];
audioRecorder.delegate = self;
}
Run Code Online (Sandbox Code Playgroud)
还有NSLog检查,它检查错误是否为零,所以此时我确信初始化似乎没有失败.什么可能导致记录方法在看似随机的时间失败,而在大多数其他时间它的效果非常好?
A-L*_*ive 23
在录制开始之前,应初始化音频会话:
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *err = nil;
[audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];
if(err){
NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
return;
}
err = nil;
[audioSession setActive:YES error:&err];
if(err){
NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
return;
}
Run Code Online (Sandbox Code Playgroud)
请参阅接受的答案以供参考.
| 归档时间: |
|
| 查看次数: |
3990 次 |
| 最近记录: |