gpt4 book ai didi

ios - AVAudioRecorderDelegate 的代表没有调用

转载 作者:行者123 更新时间:2023-12-01 20:18:28 26 4
gpt4 key购买 nike

实际上我想录制音频并存储到文档中,我找到了 FilePath 甚至附加了音频文件,但是我想将实际音频附加到该路径中,它不起作用,我在 DidFinish 中编写了该代码像这样。

    - (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.title = @"Recording Area";
[btnRecord setBackgroundImage:[UIImage imageNamed:@"Record.png"] forState:UIControlStateNormal];

session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];

audioRecorder.delegate = self;


NSDate *today = [[NSDate alloc]init];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"hh:mm:ss"];

NSString *currentTime = [dateFormatter stringFromDate:today];

NSString *outputPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];

outputPath = [outputPath stringByAppendingString:[NSString stringWithFormat:@"%@.m4a",currentTime]];

NSMutableDictionary *recordDictionary = [[NSMutableDictionary alloc] init];

[recordDictionary setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];
[recordDictionary setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
[recordDictionary setValue:[NSNumber numberWithInt:2] forKey:AVNumberOfChannelsKey];


audioRecorder = [[AVAudioRecorder alloc]initWithURL:[NSURL fileURLWithPath:outputPath] settings:recordDictionary error:nil];

audioRecorder.meteringEnabled = YES;
[audioRecorder prepareToRecord];

}

and For Recording Audio

-(IBAction)onClickRecord:(id)sender
{

if(player.playing)
{
[player stop];
}


if([[btnRecord backgroundImageForState:UIControlStateNormal]isEqual:[UIImage imageNamed:@"Record.png"]])
{

if (!audioRecorder.recording)

{
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:YES error:nil];


[audioRecorder record];
[btnRecord setBackgroundImage:[UIImage imageNamed:@"Pause.png"] forState:UIControlStateNormal];
}



}

else if([[btnRecord backgroundImageForState:UIControlStateNormal]isEqual:[UIImage imageNamed:@"Pause.png"]])
{
[audioRecorder pause];

[btnRecord setBackgroundImage:[UIImage imageNamed:@"Record.png"] forState:UIControlStateNormal];
}




}

用于保存录制的音频
    -(IBAction)onClickSave:(id)sender
{
[audioRecorder stop];
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setActive:NO error:nil];


}

最后那是我的代码实际上不起作用的代表我无法调用此方法
 - (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag
{


[btnRecord setBackgroundImage:[UIImage imageNamed:@"Record.png"] forState:UIControlStateNormal];
[arrayFiles addObject:recorder.url.absoluteString];
NSLog(@"Array %@",arrayFiles);

}

所以请指明我哪里错了。

最佳答案

您在初始化 AVAudioRecorder 之前设置委托(delegate)

移动audioRecorder.delegate = self;初始化后

audioRecorder = [[AVAudioRecorder alloc]initWithURL:[NSURL fileURLWithPath:outputPath] settings:recordDictionary error:nil];
audioRecorder.meteringEnabled = YES;
audioRecorder.delegate = self;

[audioRecorder prepareToRecord];

关于ios - AVAudioRecorderDelegate 的代表没有调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36131765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com