代码之家  ›  专栏  ›  技术社区  ›  ORStudios

将CMTime值转换为swift

  •  0
  • ORStudios  · 技术社区  · 6 年前

    我有以下两行代码,我正在移动到雨燕,但我有点卡住了。

    CMTime trimmingTime = CMTimeMake(lround(videoAsset.naturalTimeScale / videoAsset.nominalFrameRate), videoAsset.naturalTimeScale);
    CMTimeRange timeRange = CMTimeRangeMake(trimmingTime, CMTimeSubtract(videoAsset.timeRange.duration, trimmingTime));
    

    var trimmingTime: CMTime
    trimmingTime = CMTimeMake(value: lround(videoAsset.naturalTimeScale / videoAsset.nominalFrameRate), timescale: videoAsset.naturalTimeScale)
    

    二进制运算符“/”不能应用于类型为的操作数

    我试过几种不同的方法,但似乎都不管用。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Ankit Jayaswal    6 年前

    不能像其他语言一样,用swift中不同类型的操作数简单地执行数学运算。您需要手动键入cast。

    videoAsset.naturalTimeScale (这是 CMTimeScale 而CMTimeScale是 Int32 )浮起来让它工作。

    Float(videoAsset.naturalTimeScale)
    

    CMTimeMake 的值键将接受值 CMTimeValue

    trimmingTime = CMTimeMake(value: CMTimeValue(Float(videoAsset.naturalTimeScale) / videoAsset.nominalFrameRate), timescale: videoAsset.naturalTimeScale)
    

    再次让你的代码更快捷的使用 CMTime 相当地 作为:

    trimmingTime = CMTime(value: CMTimeValue(Float(videoAsset.naturalTimeScale) / videoAsset.nominalFrameRate), timescale: videoAsset.naturalTimeScale)
    
        2
  •  2
  •   Jogendar Choudhary    6 年前

    你需要改变信仰 CMTimeScale 进入之内 Float :

    trimmingTime = CMTimeMake(value: lround(Float(videoAsset.naturalTimeScale) / videoAsset.nominalFrameRate), timescale: videoAsset.naturalTimeScale)