Spitfire 2.1.1

Spitfire 2.1.1

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最新发布2020年6月
SPM支持 SPM

Sean McNeil维护。



Spitfire 2.1.1

  • Sean McNeil

Spitfire

Spitfire: Seamlessly create videos from images

Version License Platform

Spitfire 是一个简单的工具,可以将图像数组转换为视频。

示例

要运行示例项目,请克隆存储库,然后从 Example 目录运行 pod install

以下代码可在示例项目中找到,但演示了如何调用它以及如何处理它支持的各个回调。

要初始化 Spitfire 实例,您必须提供一个代理。在 UIViewController 中,这种方法通常使用懒加载属性来实现,如下所示

lazy var spitfire: Spitfire = {
    return Spitfire(delegate: self)
}()

还有一个用于创建视频的功能,使用 [UIImage] 调用 images,帧率为 30 fps

spitfire.makeVideo(with: images, fps: 30)

Spitfire 会通过一系列的代理函数返回反馈。这包括以下内容

  • 进度状态 - 将包含一个 Progress 对象,可以用来更新您的 UI 以显示视频写入的进度
  • 完成,包括 URL - 当视频写入完成后,将包含文件系统中的 URL
  • 失败,包括错误 - 将包含一个突出显示失败部分的 SpitfireError

Spitfire 代理协议

public protocol SpitfireDelegate: class {
    func videoProgress(progress: Progress)
    func videoCompleted(url: URL)
    func videoFailed(error: SpitfireError)
}

性能考虑因素

请注意,用于喂送到作者的图像数组可能会变得非常大,轻易超过1GB的RAM。在创建视频时要特别注意这一点,否则由于内存使用可能会崩溃。一般规则是保持视频段不超过一分钟,但这个值会基于图像大小和设备而变化。

需求

  • iOS 11.0+
  • Xcode 10.2+
  • Swift 5.0+

安装

Spitfire可以通过CocoaPods获取。要安装它,只需将以下行添加到Podfile中即可。

pod "Spitfire"

使用

import Spitfire

确保在类级别声明 Spitfire 属性,以避免在执行期间超出作用域

class MyClass {
    lazy var spitfire: Spitfire = {
        return Spitfire(delegate: self)
    }()
    ...
}

调用 makeVideo 函数,接受帧率的默认值 30

spitfire.makeVideo(with: images)

调用 makeVideo 函数并指定介于 1 到 60 之间的帧率

spitfire.makeVideo(with: images, fps: 60)

如果以 1-60 以外的值调用 makeVideo 函数,将导致 invalidFramerate 错误。

错误

Spitfire通过枚举提供了一系列相对丰富的错误,这些错误应该能够解决应用中可能出现的所有潜在失败情况。这些错误包括

public enum SpitfireError: Swift.Error {
    case imageArrayEmpty
    case invalidFramerate(String)
    case imageDimensionsMatchFailure
    case imageDimensionsMultiplierFailure(String)
    case videoWriterFailure
    case pixelBufferPointeeFailure
    case invalidStatusCode(Int)
    case pixelBufferApendFailure
}

致谢

这项工作基于最初由 acj 执行的工作,相关信息请参见这里

许可协议

Spitfire 在 MIT 许可证下可用。更多信息请参阅 LICENSE 文件。