CMTime是C语言结构体,value代表分子,timescale代表分母,flag是一个枚举类型,代表时间的状态。
CMTime的创建 :
CMTime可以通过两种方式创建:
CMTimeMake(value, timeScale) : value参数是时间(不是秒,可以理解为当前帧)。 timeScale参数:可以理解为每秒多少帧。
方法结构:
获取视频当前播放时间:value/timescale
例子:
CMTime t1=CMTimeMake(8,4) //t1当前播放时间为2秒
CMTime t2=CMTimeMake(4, 2)
播放时间为2秒,但视频播放速率不同。第一个2秒播放8帧,第二个2秒播放4帧。比率是差额的2倍。
CMTimeMakeWithSeconds ( a , b ) : a 当前秒数,b 每秒帧数。比如CMTimeMakeWithSeconds(4.000, 2) 其实和CMTimeMake(8, 2) 一样,每秒2 帧,总共4 秒,所以当前帧是8。
可以使用CMTimeShow函数打印CMTime相关信息
如CMTimeShow(t1)
输出:{8/4=2.000}
CMTime的计算 :
添加:
CMTime t3=CMTimeAdd(t1,t2)(相当于分数相加,不做约减)
输出:{16/4=4.000}
减去:
CMTime t4=CMTimeSubtract(t1, t2) (相当于减去分数)
输出:{0/4=0.000}
CMTimeRange
CMTimeRange是表示时间范围的数据类型,定义如下:
其中start表示时间的起点,duration表示时间范围的持续时间。
CMTimeRange的创建
创建CMTimeRange有两种方法:
CMTimeRangeMake ( a , b ) : a 为时间起点,b 为持续时间
CMTimeRangeFromTimeToTime( a , b ) : a 为时间起点,b 为时间终点,会自动计算持续时间,如下面的r3。但如果b的播放时间小于a的播放时间,就会出现问题,比如下面的r4。
代码及输出如下
CMTimeRange 的交集和并集
交集:两个时间范围交叉的时间范围
CMTimeRangeGetIntersection(timeRange2, timeRange1)
Union:两个时间范围时间范围之和
CMTimeRangeGetUnion(时间范围1,时间范围2)
代码及输出如下:
深度解析:CMTime在现代媒体中的运用与影响和的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!
【深度解析:CMTime在现代媒体中的运用与影响】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则