如何获得最大录制限制的AVKit录制视频的最后一帧

时间:2019-04-11 15:28:17

标签: swift avkit avurlasset avcapturemoviefileoutput avassetimagegenerator

首先,我需要获取使用AVKit录制的视频的最后一帧。因此,在给我didFinishRecordingTo的{​​{1}}委托方法中,我使用的outputFileURL参数等于{{1}的AVAssetImageGenerator's copyCGImage方法}。

我的视频记录在time中设置了5秒的限制,这是Apple文档中所述的“ 硬限制”,这意味着(经过测试)视频记录将永远不会准确地击中5s,它将更早停止,即4.90123s。 我还使用videoAsset.durationAVCaptureMovieFileOutput.maxRecordedDuration设置为requestedTimeToleranceBefore来获得确切的最后一帧,因为没有它们,它将给我带来完全不同的帧。

到目前为止一切都很好。当我在<= 5s的任何时间停止记录,因此尚未达到限制时,copyCGImage方法将成功返回我的cgImage。 遇到maxRecordedDuration时不是这种情况,在这种情况下,copyCGImage方法每次都会引发带有“无法打开”消息的异常。如果我删除那两个能给我确切的最后一帧的公差选项,则不会发生这种情况,但是我需要它们在那。

为什么会这样?与已录制视频文件的已达到和未达到的限制有什么区别?看起来当达到限制时,最后几帧损坏并且无法使用。但是,无论如何,对此有任何明确的解释吗?还有其他人遇到过这个问题吗?我该如何解决?

结论和明确的问题:达到maxRecordedDuration限制后,如何使用AVKit获取录制视频的最后一帧?

谢谢。

下面的示例代码:

requestedTimeToleranceAfter

0 个答案:

没有答案