我想在磁盘上阅读视频资产并对其进行大量处理,比如在每个帧上使用CICropFilter
并剪掉一个掩码,将一个视频分成几个较小的视频,以及将帧从原始轨道移除到"压缩"它下来,使它更像GIF。
我想出了一些可能的途径:
AVAssetWriter
和AVAssetReader
在这种情况下,我会从文件中读取CMSampleBuffer
s,执行我想要的操作,然后使用AVAssetWriter
写回新文件。
AVMutableComposition
在这里,给定一个CMTimes
列表,我可以轻松剪切帧并重写视频,甚至为我想要创建的每个新视频创建多个合成,然后使用AVAssetExportSession
导出所有这些视频。
我关注的指标:性能和功耗。也就是说,我对能够在执行编辑方面提供最高效率的方法感兴趣,同时也让我可以灵活地按照自己的意愿行事。我想象我所描述的视频编辑类型可以通过这两种方法完成,但实际上我需要最高性能/最佳功能。
答案 0 :(得分:1)
根据我的经验,AVAssetExportSession比直接格式A - >使用AVAssetReader和AVAssetWriter稍微更高效。格式B类型转换,但是说,它可能不足以过于关注。
您使用导出会话将现有资产重新编码为格式 由少数常用预设之一定义。如果你需要 更多地控制转换,在iOS 4.1及更高版本中你可以使用 资产阅读器和资产编写器对象串联转换资产 从一个表示到另一个表示。使用这些对象,你可以 例如,选择要在其中表示的曲目 输出文件,指定您自己的输出格式,或修改资产 在转换过程中。
鉴于您的问题的性质,您似乎对AVFoundation框架没有多少经验。我的建议是从AVAssetExportSession开始,然后当你遇到一个障碍时,将深层向下移动到AVAssetReader和AVAssetWriter。
最终,根据您采取的措施,您甚至可能希望编写自己的自定义合成器。