MLT时间规范格式

MLT time specification format

我正在查找有关 MLT 如何解析时间规范字符串的文档。我看到的似乎是两种样式:

认为m:s格式小数点右边的数字是秒的几分之一,即1.5在24fps时表示36帧而不是 29。我正在寻找权威文档。我在这里没有看到答案 https://www.mltframework.org/docs/ 虽然我可能正在浏览它。

另外,我很好奇 MLT 如何将时间规格舍入到最近的帧。如果我的剪辑是 23.976 fps 并且我指定 out=0:10,则计算结果为 239.76 帧。 MLT 是四舍五入、四舍五入还是四舍五入到最接近的整数?

这里有时间格式的解释: https://www.mltframework.org/blog/time_properties/

您的理解是正确的。如果有小数点,它表示秒的小数部分,并会按照您的描述转换为帧。

MLT 使用 lrint 将秒舍入为帧: https://github.com/mltframework/mlt/blob/master/src/framework/mlt_property.c#L334

lrint 的默认模式是 "round to nearest"。

附加信息:

MLT 还可以解析 SMPTE 时间码。时间码从右到左解析,最右边的值是帧: https://github.com/mltframework/mlt/blob/master/src/framework/mlt_property.c#L377

冒号分隔符用于分隔不同的单位。此外,分号可用于分隔帧字段以指示丢帧。单位可以从左侧排除。示例:

  • FFFFFFF - 仅框架(可以任意大)
  • SS:FF - 秒和帧(不掉帧)
  • HH:MM:SS:FF - 时、分、秒、帧(不掉帧)
  • HH:MM:SS;FF - 时、分、秒、帧(掉帧)