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
// 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
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