我正在使用ReplayKit API捕获视频/音频样本。下面是捕获屏幕框架的代码段
recorder.startCapture(handler: {
(cmSampleBuffer, rpSampleBufferType, error) in
AssetWriter.shared.write(buffer: cmSampleBuffer, bufferType: rpSampleBufferType)
}, completionHandler: {
(error) in
if let error = error {
self.isCapturing = false
NSLog("Error in capturing screens: \(error.localizedDescription)")
} else {
self.isCapturing = true
NSLog("Capturing started successfully.")
}
self.updateViewButtons()
})
,然后使用AVAssetWriter将这些cmSampleBuffers转换为电影文件,但是我想限制电影文件的大小,例如超过1分钟则只能捕获最后1分钟。
答案 0 :(得分:1)
棘手的部分是“仅保留最后1分钟”;据我所知,没有简单的方法可以做到这一点。因此,您最好的选择可能是:
AVAssets
的形式打开上一个和当前记录AVMutableComposition
中,以使它们导致记录的最后1分钟AVAssetExportSession
的构图导出到最终的电影中(使用直通预设可以避免重新编码的开销/质量损失)