ios 如何在数据类型为CMTime时传递浮点值?

i1icjdpr  于 2023-02-14  发布在  iOS
关注(0)|答案(4)|浏览(257)

我正在创建一个应用程序,我必须在其中混合歌曲。我已经完成了这一点,但问题是当我使用以下函数。

- (BOOL)insertTimeRange:(CMTimeRange)timeRange ofTrack:(AVAssetTrack *)track atTime:(CMTime)startTime error:(NSError **)error;

我必须在atTime参数中传递CMTime类型值,但它不接受浮点值,我必须在某个浮点值处添加另一首歌曲。有可能吗?

dwthyt8l

dwthyt8l1#

可以使用CMTimeMake...()函数,需要提供一个时间点和一个时间刻度值,时间点为64位整数;你可以将你的float截短或四舍五入,将它转换成整数,或者使用一个必要的高时间刻度:

CMTime tm = CMTimeMake(53425, 10000); // @ 5.3425 sec
x9ybnkn6

x9ybnkn62#

在Swift 4.2和Xcode 10.1中

CMTimeMake(value: 53425, timescale: 10000)// @ 5.3425 sec
uxhixvfz

uxhixvfz3#

Swift版本

CMTime(seconds: 5.3425, preferredTimescale: CMTimeScale(1000))

preferredTimescale设置得更大以获得更高的精度。
可用性
iOS 7.0 + macOS 10.9+苹果Catalyst 13.0+电视操作系统9.0+手表操作系统6.0 + Xcode 7.1 +
同时检查Apple Documentation

mum43rcc

mum43rcc4#

不幸的是每个答案都使用硬编码CMTimeScale(1000),正确的方法是

let t = CMTimeMake(value: 53425, timescale: CMTimeScale(NSEC_PER_SEC))

相关问题