我正在创建一个应用程序,我必须在其中混合歌曲。我已经完成了这一点,但问题是当我使用以下函数。
- (BOOL)insertTimeRange:(CMTimeRange)timeRange ofTrack:(AVAssetTrack *)track atTime:(CMTime)startTime error:(NSError **)error;
我必须在atTime参数中传递CMTime类型值,但它不接受浮点值,我必须在某个浮点值处添加另一首歌曲。有可能吗?
dwthyt8l1#
可以使用CMTimeMake...()函数,需要提供一个时间点和一个时间刻度值,时间点为64位整数;你可以将你的float截短或四舍五入,将它转换成整数,或者使用一个必要的高时间刻度:
CMTimeMake...()
float
CMTime tm = CMTimeMake(53425, 10000); // @ 5.3425 sec
x9ybnkn62#
在Swift 4.2和Xcode 10.1中
CMTimeMake(value: 53425, timescale: 10000)// @ 5.3425 sec
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。
preferredTimescale
mum43rcc4#
不幸的是每个答案都使用硬编码CMTimeScale(1000),正确的方法是
CMTimeScale(1000)
let t = CMTimeMake(value: 53425, timescale: CMTimeScale(NSEC_PER_SEC))
4条答案
按热度按时间dwthyt8l1#
可以使用
CMTimeMake...()
函数,需要提供一个时间点和一个时间刻度值,时间点为64位整数;你可以将你的float
截短或四舍五入,将它转换成整数,或者使用一个必要的高时间刻度:x9ybnkn62#
在Swift 4.2和Xcode 10.1中
uxhixvfz3#
Swift版本
将
preferredTimescale
设置得更大以获得更高的精度。可用性
iOS 7.0 + macOS 10.9+苹果Catalyst 13.0+电视操作系统9.0+手表操作系统6.0 + Xcode 7.1 +
同时检查Apple Documentation。
mum43rcc4#
不幸的是每个答案都使用硬编码
CMTimeScale(1000)
,正确的方法是