如何在iphone中获取录制音频的时间?

Dav*_*ray 8 iphone objective-c avaudiorecorder ios

我正在录制音频AVAudioRecorder,现在我想获得录制音频的准确持续时间,我怎么能得到它.

我试过这个:

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

但我的time变量返回NULL并durationInSeconds返回'nan',这意味着什么是nan.

UPDATE

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

Dil*_*lip 14

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

像这样.

 NSError *playerError;

 audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:yoururl error:&playerError];

 NSlog(@"%@",audioPlayer.duration);
Run Code Online (Sandbox Code Playgroud)

但是,只有当你使用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];
    }
}
Run Code Online (Sandbox Code Playgroud)

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

  • @lipid:但我认为录制的声音的持续时间并不总是与使用AVAudioPlayer播放的声音相同.(如果我错了,请纠正我!) (2认同)