var maxDuration : CMTime = CMTimeMake(seconds, preferredTimeScale)
aMovieFileOutput.maxRecordedDuration = CMTimeMake(seconds, preferredTimeScale)
1行有错误: 使用模块 'CMTime' 作为类型
2行有错误: 未解决的标识符 'CMTimeMake' 的使用
我做错了什么?
var maxDuration : CMTime = CMTimeMake(seconds, preferredTimeScale)
aMovieFileOutput.maxRecordedDuration = CMTimeMake(seconds, preferredTimeScale)
1行有错误: 使用模块 'CMTime' 作为类型
2行有错误: 未解决的标识符 'CMTimeMake' 的使用
我做错了什么?
CMTime
和 CMTimeMake
定义在 "CoreMedia" 模块中,因此您需要
import CoreMedia
然后这段代码可以顺利编译:
let seconds : Int64 = 10
let preferredTimeScale : Int32 = 1
let aMovieFileOutput = AVCaptureMovieFileOutput()
let maxDuration : CMTime = CMTimeMake(seconds, preferredTimeScale)
aMovieFileOutput.maxRecordedDuration = maxDuration
Swift 3更新:
let maxDuration = CMTime(seconds: Double(seconds), preferredTimescale: 1)
CMTimeMake
也接收秒数,那么它与CMTimeMakeWithSeconds
有什么区别?如果preferredTimeScale
只是CMTimeMake
中的分母,在CMTimeMakeWithSeconds
中它的目的不清楚。 - dashesyCMTimeMake(value, timescale)
返回一个具有给定值和时间刻度的 CMTime,表示秒数 = value/timescale(例如请参见 https://dev59.com/n2cs5IYBdhLWcg3wYy5T#13001917)。`CMTimeMakeWithSeconds(seconds, preferredTimeScale)返回一个 CMTime,其中选择了值和时间刻度,使得秒数=value/timescale,并且时间刻度为preferredTimeScale(在溢出的情况下是其分数)。例如,
CMTimeMake(2, 10)和
CMTimeMakeWithSeconds(0.2, 10)` 给出相同的结果。 - Martin R