AVFoundation -> 用动画覆盖记录相机视频

Posted

技术标签:

【中文标题】AVFoundation -> 用动画覆盖记录相机视频【英文标题】:AVFoundation -> record camera video with animated overlay 【发布时间】:2021-08-02 18:04:16 【问题描述】:

在我的应用程序中,我正在使用 AVFoundation 录制相机输出。我不仅要保存相机输出,还要保存在相机表面上呈现的 GUI 布局(覆盖)。

我正在 GUI 层上执行一些基本动画(显示和隐藏 UIView 和 UIProgressView 动画)。

那么有没有可能用动画覆盖记录相机输出?

我的研究:

1.) https://www.raywenderlich.com/2734-avfoundation-tutorial-adding-overlays-and-animations-to-videos

后处理不是一种选择。而且这个解决方案不适用于我的问题。

2.) iPhone Watermark on recorded Video. 所以可以加水印。也许有可能从相机捕获帧,从覆盖捕获帧,然后将捕获的相机帧与捕获的覆盖帧重叠? :(

【问题讨论】:

【参考方案1】:

我的解决方案(我现在正在研究它)是创建一个子类 CALayer 的对象并将其添加到您的预览 uiview.layer。

protocol VideoCameraLayer 
  func playAnimation()
  func stopAnimation()


class CircleFaceLayer: : CALayer,VideoCameraLayer
  init()
   //... add sublayers to this layer or whatever you need 
  

  func playAnimation()
  //Add animation/s to your layer/sublayers
  

  func stopAnimation()
  //Pause animation/s to your layer/sublayers
  

您可以在您的 avassetexportsession.animatioToll 和您的 UIView 的预览层中使用此对象和子分层:

 let animatedLayer:VideoCameraLayer = CircleFaceLayer()
 self.view.layer.addSublayer(animatedLayer)

【讨论】:

以上是关于AVFoundation -> 用动画覆盖记录相机视频的主要内容,如果未能解决你的问题,请参考以下文章

用AVFoundation自定义相机拍照

用动画剪出形状

iOS开发进阶 - 用AVFoundation自定义视频录制功能

IOS音频1:之采用四种方式播放音频文件AudioToolbox AVFoundation OpenAL AUDIO QUEUE

无法覆盖prepareForSegue函数[重复]

AVFoundation自己定义音视频频播放