【问题标题】:iOS postprocessing - overlay timestamp to video and exportiOS 后处理 - 将时间戳叠加到视频和导出
【发布时间】:2014-07-22 05:10:54
【问题描述】:

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

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

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

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

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

我应该研究一种更简单的方法吗?

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

【问题讨论】:

    标签: ios timestamp avmutablecomposition overlays chromakey


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      使用 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 上设置自定义视频合成器和视频合成,以呈现/导出您想要的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-25
        • 1970-01-01
        • 1970-01-01
        • 2019-07-30
        • 1970-01-01
        • 1970-01-01
        • 2017-02-04
        • 2016-04-28
        相关资源
        最近更新 更多