Я пытался сделать снимок экрана, используя Broadcast Extension со скоростью 30 кадров в секунду или 120 кадров в секунду. Ниже приведен код
if lastSampleTime == nil{
self.lastSampleTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer)
}
var sampleTimingInfo: CMSampleTimingInfo = CMSampleTimingInfo(duration: CMTime.invalid, presentationTimeStamp: CMTime(), decodeTimeStamp: CMTime.invalid)
var newBuffer: CMSampleBuffer! = nil
CMSampleBufferGetSampleTimingInfo(sampleBuffer, at: 0, timingInfoOut: &sampleTimingInfo);
sampleTimingInfo.duration = CMTimeMake(value: 1, timescale: self.frameRate!) // Specify new frame rate.
sampleTimingInfo.presentationTimeStamp = CMTimeAdd(self.lastSampleTime!, sampleTimingInfo.duration)
self.lastSampleTime = sampleTimingInfo.presentationTimeStamp
let status: OSStatus = CMSampleBufferCreateCopyWithNewTiming(allocator: kCFAllocatorDefault, sampleBuffer: sampleBuffer, sampleTimingEntryCount: 1, sampleTimingArray: &sampleTimingInfo, sampleBufferOut: &newBuffer);
if status == noErr {
if sampleBufferType == .video{
appendVideoBuffer(newBuffer)
}
else if sampleBufferType == .audioMic{
appendAudioBuffer(newBuffer)
}
}
Но проблема в том, что когда я снимаю со скоростью 30 кадров в секунду, это замедляет видео, т.е. 7 секунд видео становится 17 секундами, а для 120 кадров в секунду 17 секунд видео становится 7 секундами или около того.
Как изменить частоту кадров при замедлении или ускорении видео ??