(一)前言
视频内容的捕捉。当设置捕捉会话时,添加一个名为AVCaptureMovieFileOutput的输出。这个了定义了方法将QuickTime 影片捕捉到磁盘。这个类大多数核心功能继承于超类AVCaptureFileOutput.这个超类定义了许多实用功能。比如录制到最长时限或录制到特定文件大小时为止。还可以配置成保留最小可用的磁盘空间。这一点在存储空间有限的移动设备上录制视频时非常重要。
通常当QuickTime影片准备发布时,影片头的元数据处于文件的开始位置。这样可以让视频播放器快速读取头包含信息,来确定文件的内容、结构和其包含的多个样本的位置。不过,当录制一个QuickTime影片时,直到所有的样片都完成捕捉后才能创建信息头。当录制结束时,创建头数据并将它附在文件结尾处。

将创建头的过程放在所有影片样本完成捕捉之后存在一个问题,尤其是在移动设备的情况下。如果遇到崩溃或其他中断,比如有电话拨入,则影片头就不会被正确写入,会在磁盘生成一个不可读的影片文件。 AVCaptureMovieFileOutput 提供一个核心功能就是分段捕捉QuickTime影片。

当录制开始时,在文件最前面写入一个最小化的头信息,随着录制的进行,片段按照一定的周期写入,创建完整的头信息。默认状态下,每10秒写入一个片段,不过这个时间的间隔可以通过修改捕捉设备输出的movieFragentInterval属性来改变。写入片段的方式可以逐步创建完整的QuickTime影片头。这样确保了当遇到应用程序崩溃或中断时,影片仍然会以最好的一个写入片段为终点进行保存。我们用默认的间隔来做这demo,但是如果你可以在你的的APP修改这个值。









小伙伴们阅读后,请喜欢一下。文章更新可以提醒到你哦~~~~
网友评论