我怎样才能获得我在iPhone录制的audio的时间?
我正在使用AVAudioRecorder
录制audio,现在我想要获得录制audio的确切时间,我怎么能得到这个。
我试过这个:
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:avAudioRecorder.url options:nil]; CMTime time = asset.duration; double durationInSeconds = CMTimeGetSeconds(time);
但是我的time
variables返回NULL和durationInSeconds
返回'南',这是什么意思南。
UPDATE
user1903074
答案已经解决了我的问题,但只是为了好奇,是没有AVAudioplayer任何方式做到这AVAudioplayer
。
如果您使用AVAudioPlayer
与AVAudioRecorder
比你可以得到audioPlayer.duration
并获得时间。
喜欢这个。
NSError *playerError; audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:yoururl error:&playerError]; NSlog(@"%@",audioPlayer.duration);
但只有当您使用AVAudioPlayer
与AVAudioRecorder
。
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]; }