17期_AVFoundation_CMTime

2023-09-25  本文已影响0人  萧修
public struct CMTime {
    public var value: CMTimeValue
    public var timescale: CMTimeScale 
    public var flags: CMTimeFlags 
    public var epoch: CMTimeEpoch

    public init()
    public init(value: CMTimeValue, timescale: CMTimeScale, flags: CMTimeFlags, epoch: CMTimeEpoch)
}

CMTimeValue:64位有符号整型变量
CMTimeScale:32位有符号整型变量

CMTime定义了C语言的结构体,CMTime是以分数的形式表示时间,
value表示分子,
timescale表示分母。
flags是位掩码,表示时间的指定状态。

以32位或者64位存储,以防止计算时精度丢失。

CMTime

CMTime的创建

// CMTimeMake(int64_t value, <#int32_t timescale#>)
// value代表分子,timescale代表分母,tCMime

//表示5秒可以有
CMTime start = CMTimeMake(5, 1);
CMTime start1 = CMTimeMake(3000, 600);
CMTime end = CMTimeMake(5000, 1000);
CMTimeMakeWithSeconds(Float64 seconds, <#int32_t preferredTimescale#>)

seconds:表示当前的时间,单位是s
preferredTimescale:表示时间精度

//表示当前时间是3秒,每秒帧率是600
CMTime time1 = CMTimeMakeWithSeconds(3, 600);

CMTimeRange

创建CMTimeRange

CMTimeRange

CMTimeRangeMake(<#CMTime start#>, <#CMTime duration#>) 指定时间的开始和长度

CMTimeRange tRange = CMTimeRangeMake(CMTimeMake(5, 1), CMTimeMake(5, 1))

CMTimeRangeFromTimeToTime(CMTime start, <#CMTime end#>)
CMTimeRange tRange0 =  CMTimeRangeFromTimeToTime(CMTimeMake(5000, 1000), CMTimeMake(10000, 1000));

包含时间点和范围

Boolean b = CMTimeRangeContainsTime(tRange0, CMTimeMake(8000, 1000));

CMTimeRangeContainsTimeRange(<#CMTimeRange range#>, <#CMTimeRange otherRange#>)

时间合集和交集

//        交集
//        CMTimeRangeGetIntersection(<#CMTimeRange range#>, <#CMTimeRange otherRange#>)
        
//        合集
//        CMTimeRangeGetUnion(<#CMTimeRange range#>, <#CMTimeRange otherRange#>)

timescale

表示每秒分割的“切片”数,CMTime整体精度受这个限制,如果timescale

上一篇 下一篇

猜你喜欢

热点阅读