2012-02-18 17 views
46

Questo può sembrare ridicolo, ma come posso inviare i secondi di CMTime alla console in Objective-C? Ho semplicemente bisogno del valore diviso per la scala temporale e quindi in qualche modo vederlo nella console.CMTime seconds output

risposta

128
NSLog(@"seconds = %f", CMTimeGetSeconds(cmTime)); 
+2

come su quel caso quando CMTimeGetSeconds restituisce NaN? – BUDDAx2

+0

La mia ipotesi è che l'input è una delle costanti ['CMTime'] (https://developer.apple.com/library/IOs/documentation/CoreMedia/Reference/CMTime/index.html#//apple_ref/doc/constant_group/Time_Constants) (probabilmente non 'kCMTimeZero'). Prova a usare 'CMTimeShow' per vedere quali sono i suoi campi. –

+0

il controllo per "durata> 0" funziona per me – BUDDAx2

12

Semplice:

 NSLog(@"%lld", time.value/time.timescale); 
+0

perfetto, funziona come un fascino! – arik

4

Se si desidera convertire in formato hh:mm:ss allora si può usare questo

NSUInteger durationSeconds = (long)CMTimeGetSeconds(audioDuration); 
NSUInteger hours = floor(dTotalSeconds/3600); 
NSUInteger minutes = floor(durationSeconds % 3600/60); 
NSUInteger seconds = floor(durationSeconds % 3600 % 60); 
NSString *time = [NSString stringWithFormat:@"%02ld:%02ld:%02ld", hours, minutes, seconds]; 
NSLog(@"Time|%@", time); 
0
CMTime currentTime = audioPlayer.currentItem.currentTime; 
float videoDurationSeconds = CMTimeGetSeconds(currentTime);