Выход CMTime секунд - программирование
Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Ответ 2

Простой:

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

Ответ 3

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

Ответ 4

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

Objective-C

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

Swift

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

Он напечатает value, timescale и вычислит seconds:

{120000/6000 = 2.0}

Ответ 5

 CMTime currentTime = audioPlayer.currentItem.currentTime;
 float videoDurationSeconds = CMTimeGetSeconds(currentTime);

Ответ 6

Все ответы до этого не относятся к случаю NaN:

Swift 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)
}