2

我正在开发一个应用程序,其中视频和时间/GPS/加速度计数据同时记录到单独的文件中。

我可以播放视频并让我的叠加层实时完美显示,但我不能简单地导出它。

我想对视频进行后处理并叠加时间、坐标和视频。还有其他形状将被覆盖,它们会改变每一帧的大小/位置。

我尝试使用AVMutableComposition和添加CALayers结果有限 - 这在一定程度上有效,但我无法将时间戳与视频同步。我可以使用CAKeyframeAnimationwith values+keyTimes,但我需要处理的值数量过多。

我目前的方法是渲染一个单独的视频,包括CGImages使用数据创建的。这很好用,但我需要使用 ChromaKey 来使叠加层具有透明度。我已经读到这样做之后可能会出现质量问题。

有没有我应该研究的更简单的方法?

我知道渲染速度不会很好,但是我不希望需要单独的“PC”应用程序来渲染视频。

4

2 回答 2

0

使用 AVVideoCompositing 协议https://developer.apple.com/library/mac/documentation/AVFoundation/Reference/AVVideoCompositing_Protocol/index.html

这将允许您使用像素缓冲区逐帧回调以执行您想要的操作。

使用此协议,您将能够拍摄一帧并覆盖您想要的任何人。看看这个示例 - https://developer.apple.com/library/ios/samplecode/AVCustomEdit/Introduction/Intro.html了解如何处理逐帧修改。如果您利用 AVVideoCompositing 协议,您可以在 AVPlayerItem 和 AVExportSession 上设置自定义视频合成器和视频合成,以渲染/导出您想要的内容。

于 2015-02-07T05:39:59.953 回答
0

使用 AVAssetReader 录制视频。获取 CMSampleBufferRef,获取时间戳,在样本缓冲区上绘制时间,将缓冲区写入 AVAssetWriterInputPixelBufferAdaptor。录制视频的类似方法。

于 2014-12-18T12:25:26.140 回答