4

我一直在查看与创建CMTimes 相关的文档。所有函数(CMTimeMake(),CMTimeMakeWithSeconds()等)都带有一个名为 的第二个参数preferredTimeSale

有人可以向我解释这是什么,为什么以这种方式指定?

4

1 回答 1

8

根据Apple CMTime 文档的开头段落

CMTime 表示为一个有理数,有一个分子(一个 int64_t 值)和一个分母(一个 int32_t 时间刻度)。从概念上讲,时间刻度指定分子中每个单位占用的秒数。因此,如果时间刻度为 4,则每个单位表示四分之一秒;如果时间刻度为 10,则每个单位表示十分之一秒,依此类推。除了简单的时间值之外,CMTime 还可以表示非数字值:+infinity、-infinity 和 indefinite。使用标志 CMTime 指示时间是否在某个点被舍入。

因此,如果时间刻度为 4,则每个时间测量单位为四分之一秒。

如果您的时间刻度是 1,那么每个时间测量单位是一秒(但这对您的用户来说可能是一个相当慢的动画)。

许多视频格式使用 600 的时间刻度

您经常使用 600 的时间刻度,因为这是几个常用帧速率的公倍数:电影每秒 24 帧 (fps),NTSC 每秒 30 帧(用于北美和日本的电视),以及 25 PAL 的 fps(用于欧洲的电视)。使用 600 的时间刻度,您可以准确地表示这些系统中的任意数量的帧。

于 2013-05-18T20:43:04.950 回答