2012-12-14 52 views
6

我正在使用AVAudioRecorder錄製音頻,現在我想要獲得錄製音頻的確切時間,我該如何獲取該音頻。我如何在iphone中獲得我錄製音頻的時間?

我已經試過這樣:

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

但我time變量返回NULL和durationInSeconds回報「南」,這是什麼由南手段。

UPDATE

user1903074答案已經解決了我的問題,但只是出於好奇,是thair任何方式做沒有AVAudioplayer

+1

nan表示不是數字。資產是否爲NULL? – geraldWilliam

+0

我不知道thanx。 –

回答

13

如果您使用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]; 
    } 
} 

鋼,你可以得到一些延遲becouse他們是一些微秒價值,我不知道如何將它夾。但多數民衆贊成。

+0

是的,我使用AVAudioPlayer和AVAudioRecorder。 –

+0

這項工作很棒 –

+2

@lipid:但我認爲錄製的聲音的持續時間不會總是與使用AVAudioPlayer播放的聲音相同。 (糾正我,如果我錯了!) – iShwar

1

我的解決方案是簡單地跟蹤開始日期,並在最後計算經過的時間。 它對我來說很有用,因爲用戶正在啓動和停止錄像機。

在記錄類

NSDate* startTime; 
NSTimeInterval duration; 

-(void) startRecording 
{ 
    //start the recorder 
    ... 
    duration = 0; 
    startTime = [NSDate date]; 

} 

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

我才知道,原來問題是尋找在Objective-C的答案,但對於那些希望在斯威夫特這樣做,這可與雨燕4.0:

let recorder = // Your instance of an AVAudioRecorder 
let player = try? AVAudioPlayer(contentsOf: recorder.url) 
let duration = player?.duration ?? 0.0 

假設你有一個有效的記錄器,那麼你將得到一個持續時間值,其值爲TimeInterval

相關問題