Objective c 使用AVCaptureSession(ObjC/Swift)录制视频的精确秒数
我正在录制一段由变量给定的预定时间长度的视频,例如,Objective c 使用AVCaptureSession(ObjC/Swift)录制视频的精确秒数,objective-c,swift,avcapturesession,Objective C,Swift,Avcapturesession,我正在录制一段由变量给定的预定时间长度的视频,例如,var-recordingTime:Double=4.0 我像往常一样触发录音: movieFileOutput.startRecording(toOutputFileURL: URL(fileURLWithPath: outputFilePath), recordingDelegate: self) 然后在func capture…中设置一个计时器,该计时器在录制时间结束后停止录制: DispatchQueue.main.asyncAfte
var-recordingTime:Double=4.0
我像往常一样触发录音:
movieFileOutput.startRecording(toOutputFileURL: URL(fileURLWithPath: outputFilePath), recordingDelegate: self)
然后在func capture…
中设置一个计时器,该计时器在录制时间结束后停止录制:
DispatchQueue.main.asyncAfter(deadline: .now() + self.recordingTime) {
captureOutput.stopRecording()
}
所以你会假设它会创建一个精确到4秒的视频,对吗?视频持续时间为
4.47
,奇怪的是,如果我使用var-recordingTime:Double=8.0
,视频持续时间就会变成8.87
?这到底是怎么回事?试着让recordingTime=3.53。然后会发生什么?@maximilian_cs我做了类似的事情来解释时间延迟,它创建了一个接近4秒(如4.03)但刚刚结束的视频。此外,随着recordingTime持续时间的增加,它确实把事情搞砸了,并且变得越来越不准确:(您可以尝试使用诸如:var-activeVideoMinFrameDuration:CMTime(当前活动的最小帧持续时间)或var-activeVideoMaxFrameDuration:CMTime(当前活动的最大帧持续时间)之类的内容)@maximilian_cs只是根据苹果的文档进行了尝试,似乎对时间没有影响。它按照指示设置了帧速率,但最终的持续时间仍然是4.47