我怎样才能获得我在iPhone录制的audio的时间?

我正在使用AVAudioRecorder录制audio,现在我想要获得录制audio的确切时间,我怎么能得到这个。

我试过这个:

 AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:avAudioRecorder.url options:nil]; CMTime time = asset.duration; double durationInSeconds = CMTimeGetSeconds(time); 

但是我的timevariables返回NULL和durationInSeconds返回'南',这是什么意思南。

UPDATE

user1903074答案已经解决了我的问题,但只是为了好奇,是没有AVAudioplayer任何方式做到这AVAudioplayer

如果您使用AVAudioPlayerAVAudioRecorder比你可以得到audioPlayer.duration并获得时间。

喜欢这个。

  NSError *playerError; audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:yoururl error:&playerError]; NSlog(@"%@",audioPlayer.duration); 

但只有当您使用AVAudioPlayerAVAudioRecorder

UPDATE

或者你可以这样做。

 //put this where you start recording myTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTime) userInfo:nil repeats:YES]; // a method for update - (void)updateTime { if([recorder isRecording]) { float minutes = floor(recorder.currentTime/60); float seconds = recorder.currentTime - (minutes * 60); NSString *time = [[NSString alloc] initWithFormat:@"%0.0f.%0.0f", minutes, seconds]; } } 

钢,你可以得到一些延迟,因为他们是一些微秒的价值,我不知道如何剪辑它,但是这一切。

我的解决scheme是跟踪开始date,最后计算时间。 它为我工作,因为用户正在启动和停止logging器。

在logging器类

 NSDate* startTime; NSTimeInterval duration; -(void) startRecording { //start the recorder ... duration = 0; startTime = [NSDate date]; } -(void) stopRecording { //stop the recorder ... duration = [[NSDate date] timeIntervalSinceDate:startRecording]; }