web-dev-qa-db-ja.com

CMTime秒出力

これはばかげているように見えるかもしれませんが、CMTimeの秒をObjective-Cのコンソールに出力するにはどうすればよいですか?値をタイムスケールで割った値が必要なだけで、何らかの形でコンソールに表示されます。

55
arik
NSLog(@"seconds = %f", CMTimeGetSeconds(cmTime));
146
rob mayoff

シンプル:

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

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);
5

デバッグのために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}
1
Fantini

この前のすべての答えは、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)
}
0
 CMTime currentTime = audioPlayer.currentItem.currentTime;
 float videoDurationSeconds = CMTimeGetSeconds(currentTime);
0
amisha.beladiya