You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS开发:如何将Date().timeIntervalSince1970生成的Int64转为CMTime?

将Unix时间戳转换为CMTime格式

Date().timeIntervalSince1970返回的是自1970年1月1日00:00:00 UTC以来的秒数(带小数),要转成Core Media框架的CMTime格式,核心是利用CMTime的value和timescale两个参数构建实例,下面是具体实现方式:

基础转换方法(AVFoundation推荐方案)

AVFoundation通常使用600作为标准时间刻度(timescale),兼顾精度和性能,代码如下:

import CoreMedia

// 获取你的Unix时间戳
let unixTimestamp = Date().timeIntervalSince1970

// 定义时间刻度(AVFoundation常用600)
let timescale = CMTimeScale(600)

// 计算CMTime的value:将秒数乘以刻度,转换为Int64类型
let timeValue = Int64(unixTimestamp * Double(timescale))

// 生成CMTime实例
let targetCMTime = CMTime(value: timeValue, timescale: timescale)

自定义精度的转换

如果需要不同精度(比如毫秒级),只需调整timescale的值即可:

  • 毫秒精度:设置timescale = 1000,此时timeValue就是时间戳对应的毫秒数
import CoreMedia

let unixTimestamp = Date().timeIntervalSince1970
let timescale = CMTimeScale(1000) // 毫秒级刻度
let timeValue = Int64(unixTimestamp * Double(timescale))
let targetCMTime = CMTime(value: timeValue, timescale: timescale)

注意事项

  • timescale必须是正整数,避免设置过大导致timeValue超出Int64的范围(极端大的刻度会让数值溢出)
  • 若要将转换后的CMTime转回Unix时间戳,直接调用CMTimeGetSeconds(targetCMTime)即可得到秒数,与原始时间戳一致

内容的提问来源于stack exchange,提问作者normidar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 00:36:26