在 iOS 上捕获视频:使用 AVMovieFileOutput 或 AVAssetWriter 捕获视频有什么区别?

Capturing video on iOS: what is the difference between capturing video using AVMovieFileOutput or AVAssetWriter?

我正在关注 this 关于如何在 iOS 上捕捉视频的教程。

当您下载他们的示例代码并 运行 它时,它显示了两种捕获视频的方法,使用 AVMovieFileOutput 和使用 AVAssetWriter

这两种方法在技术上有什么区别?一个比另一个好吗?

AVMovieFileOutputAVAssetWriter(结合 AVCaptureVideoDataOutput)都允许您将媒体样本捕获到文件,但 AVAssetWriter 是较低级别且更可配置* 的两个接口,所以使用 AVAssetWriter / AVCaptureVideoDataOutput 你可以在媒体样本被写入之前拦截和修改它们,这样你就可以应用效果,并流出设备等

上次我检查过你不能将 AVMovieFileOutputAVCaptureVideoDataOutput 添加到 iOS 捕获会话中,所以一旦你想检查 实时记录流过session的数据,没办法只能用AVAssetWriter / AVCaptureVideoDataOutput.

*其实AVMovieFileOutput大概是用using实现的 AVAssetWriter.