Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用AVCaptureSession(ObjC/Swift)录制视频的精确秒数_Objective C_Swift_Avcapturesession - Fatal编程技术网

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