63

这可能看起来很荒谬,但是如何在 Objective-C 中将 CMTime 的秒数输出到控制台?我只需要将该值除以时间刻度,然后以某种方式在控制台中看到它。

4

6 回答 6

161
NSLog(@"seconds = %f", CMTimeGetSeconds(cmTime));
于 2012-02-18T23:31:40.837 回答
15

简单的:

        NSLog(@"%lld", time.value/time.timescale);
于 2012-02-18T23:30:13.053 回答
6

如果你想转换hh:mm:ss格式,那么你可以使用这个

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);
于 2015-07-21T06:34:57.010 回答
2

在此之前的所有答案都不处理 NaN 情况:

斯威夫特 5:

/// Convert CMTime to TimeInterval
///
/// - Parameter time: CMTime
/// - Returns: TimeInterval
func cmTimeToSeconds(_ time: CMTime) -> TimeInterval? {
    let seconds = CMTimeGetSeconds(time)
    if seconds.isNaN {
        return nil
    }
    return TimeInterval(seconds)
}
于 2019-08-25T19:58:36.977 回答
1

如果您只想将 a 打印CMTime到控制台以进行调试,请使用CMTimeShow

Objective-C

CMTime time = CMTimeMakeWithSeconds(2.0, 60000); 
CMTimeShow(time);

迅速

var time = CMTimeMakeWithSeconds(2.0, 60000)
CMTimeShow(time)

它将打印valuetimescale并计算seconds

{120000/6000 = 2.0}
于 2018-06-05T19:50:10.073 回答
0
 CMTime currentTime = audioPlayer.currentItem.currentTime;
 float videoDurationSeconds = CMTimeGetSeconds(currentTime);
于 2016-12-03T10:49:35.003 回答