Вывод секунд CMTime

Это может показаться смешным, но как вывести секунды CMTime на консоль в Objective-C? Мне просто нужно значение, разделенное на шкалу времени, а затем каким-то образом увидеть его в консоли.


person arik    schedule 18.02.2012    source источник


Ответы (5)


Простой:

        NSLog(@"%lld", time.value/time.timescale);
person 0xDE4E15B    schedule 18.02.2012

Если вы хотите конвертировать в формат 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);
person Inder Kumar Rathore    schedule 21.07.2015

Все ответы до этого не обрабатывают случай 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)
}
person Alexander Volkov    schedule 25.08.2019

Если вы просто хотите вывести CMTime на консоль для целей отладки, используйте CMTimeShow:

Цель-C

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

Свифт

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

Он напечатает value, timescale и рассчитает seconds:

{120000/6000 = 2.0}
person Fantini    schedule 05.06.2018

person    schedule
comment
как насчет того случая, когда CMTimeGetSeconds возвращает NaN? - person BUDDAx2; 27.11.2014
comment
Я предполагаю, что ввод является одним из CMTime константы (вероятно, не kCMTimeZero). Попробуйте использовать CMTimeShow, чтобы увидеть, что это за поля. - person rob mayoff; 28.11.2014