RecordableMetalView 0.1.5

RecordableMetalView 0.1.5

Afsar Ahmad维护。




  • Afsar Ahamad

CI Status Version License Platform

我们使用MTKView来渲染自定义视频和动画。MTKView不提供直接的视频录制支持。本项目旨在提供一个简单高效的直接录制视频+音频的方法(可以是麦克风的音频源或音频文件)。

image

  • API可以将CIImage直接渲染(或绘制)在MTKView上,帧率为30fps。
  • 使用麦克风音频源录制在MetalView上渲染的视频。
  • 使用自定义音频轨道录制在MetalView上渲染的视频。

要运行示例项目,首先从仓库中克隆并从Example目录中运行pod install。在本例中,每个相机帧都会被过滤并叠加到静态图像上,然后重新渲染到RecordableMetalView。点击按钮将开始视频录制,点击停止按钮将停止视频录制并保存在照片库中。

需求

  • Xcode 11.
  • Swift 5.
  • iOS 11 或更高版本。

安装

RecordableMetalView 可以通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile 中:

pod 'RecordableMetalView'

用法

创建 RecordableMetalView(Storyboard 实现)。

从对象库创建一个 MTKView 并将 MTKViewcustom class 设置为 RecordableMetalView图片

下一步是将此视图的出口创建到您的 ViewController 类中,通过将鼠标从 MTKView 拖动到 ViewController + 按 control 键来完成。

@IBOutlet weak var metalView: RecordableMetalView!

在 RecordableMetalView 上渲染或绘制 CIImage

要在 RecordableMetalView 上渲染 CIImage,您可以直接调用 RecordableMetalView 类的 public func draw(ciimage: CIImage) 方法。

示例。

//make sure your project image assets has image with name 'bgimg'
let image = UIImage(named: "bgimg")
let ciimage = CIImage(cgImage: (image?.cgImage)!)
...

metalView.draw(ciimage: ciimage)

设置 RecordableMetalView 回调委托。

为了接收录制事件(如开始和停止)的回调,您需要实现 RecordableMetalDelegate。为了简化,只需在您的 ViewController 中实现 RecordableMetalDelegate 并设置 metalView.recordingDelegate = self

import UIKit
import RecordableMetalView

class ViewController: UIViewController, RecordableMetalDelegate{

@IBOutlet weak var metalView: RecordableMetalView!
override func viewDidLoad() {
    super.viewDidLoad()
    metalView.recordingDelegate = self
}

//MARK: RecordableMetalDelegate callback methods
func didCompleteRecording(url: URL) {
    print("Completed at \(url)")
}
func didFailRecording(error: Error) {
    print("Error: \(error)")
}

}
...

使用麦克风音频源进行录制。

要使用麦克风音频源将渲染在 RecordableMetalView 上的自定义视频录制到 MP4 文件中,请使用以下调用。

metalView.startVideoRecoding()

要停止录制,请调用

metalView.stopVideoRecording()

停止录制后,RecordableMetalDelegate 的其中一个方法将被调用。如果录制成功完成,将调用 didCompleteRecording(url: URL)。其中 url 将是您应用程序文档目录中的输出文件。

使用自定义音频文件进行录制

要使用显式的文件作为音频源将渲染在 RecordableMetalView 上的自定义视频录制,请使用以下调用。

metalView.startVideoRecoding(backGroundAudioUrl: AUDIO_FILE_URL)

要停止录制,请调用

metalView.stopVideoRecording()

停止录制后,RecordableMetalDelegate 的其中一个方法将被调用。如果录制成功完成,将调用 didCompleteRecording(url: URL)。其中 url 将是您应用程序文档目录中的输出文件。

感谢

感谢使用 RecordableMetalView,您的支持非常宝贵!如果您想使这个库更好,我们欢迎您贡献。如果您想贡献,请随时创建一个 PR。

作者

Afsar Ahamad: [email protected]

许可协议

RecordableMetalView 在 MIT 许可协议下可用。更多信息,请参阅 LICENSE 文件。