概述
FilterCam 是一个简单的 iOS 相机框架,可以应用自定义 CIFilters 记录视频。此外,FilterCam 还受到了 SwiftyCam 的很大启发。
特性
FilterCam | |
---|---|
支持 iOS 10.0+ | |
视频捕获 | |
自定义滤镜 | |
手动设置图片质量 | |
前后摄像头支持 | |
支持手电筒 | |
支持手动对焦 | |
支持背景音频 |
要求
-
iOS 10.0+
-
Swift 4.1+
许可协议
FilterCam 在 MIT 许可下可用。更多信息请参阅 LICENSE 文件。
安装
Carthage
将此添加到 Cartfile
github "nkmrh/FilterCam"
$ carthage update FilterCam
Cocoapods
FilterCam 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod "FilterCam"
手动安装
只需将 FilterCam 文件夹的内容复制到您的项目中。
用法
使用 FilterCam 非常简单。
先决条件
截至 iOS 10,苹果要求向应用程序的 info.plist 添加 NSCameraUsageDescription 和 NSMicrophoneUsageDescription 字符串。例如
<key>NSCameraUsageDescription</key>
<string>To record video</string>
<key>NSMicrophoneUsageDescription</key>
<string>To record audio with video</string>
入门指南
如果您从 Cocoapods 安装 FilterCam,请确保将模块导入到您的 View Controller 中
import FilterCam
FilterCam 是一个即插即用的便利框架。要创建 Camera 实例,创建一个新的 UIViewController 子类。将 UIViewController 子类声明替换为 FilterCamViewController
class MyCameraViewController : FilterCamViewController
以上即为设置拍照和摄像的 AVSession 所需的所有内容。FilterCam 会提示用户授予使用摄像头/麦克风的权限,并配置设备输入和输出。
捕获
录像的捕获同样简单。要开始录制视频,调用 startRecording
函数。
startRecording()
要结束视频捕获,调用 stopRecording
函数。
stopRecording()
代理
您必须实现 FilterCamViewControllerDelegate
并将 cameraDelegate
设置为您的视图控制器实例。
class MyCameraViewController : FilterCamViewController, FilterCamViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
cameraDelegate = self
}
...
}
代理方法
func filterCamDidStartRecording(_ filterCam: FilterCamViewController) {
// Called when startRecording() is called
}
func filterCamDidFinishRecording(_ filterCame: FilterCamViewController) {
// Called when stopRecording() is called
}
func filterCam(_ filterCam: FilterCamViewController, didFinishWriting outputURL: URL) {
// Called when stopRecording() is called and the video is finished processing
// Returns a URL in the temporary directory where video is stored
}
func filterCam(_ filterCam: FilterCamViewController, didFocusAtPoint tapPoint: CGPoint) {
// Called when a user initiates a tap gesture on the preview layer
// Returns a CGPoint of the tap location on the preview layer
}
func filterCam(_ filterCam: FilterCamViewController, didFailToRecord error: Error) {
// Called when recorder fail to record
}
手电筒
可以通过修改手电筒级别的属性(torchLevel)来启用手电筒。
torchLevel = 1
手电筒级别指定的是介于 0.0 和 1.0 之间的值。
切换摄像头
默认情况下,FilterCam 会启动后置摄像头。这可以通过在 viewDidLoad 中修改 defaultCamera 属性来改变。
devicePosition = .front
配置
应用过滤器
通过在过滤器属性中指定一个过滤器数组,您可以对自定义过滤器进行应用。
filters = [CIFilter(name: "CIPhotoEffectInstant")!, CIFilter(name: "CIPhotoEffectNoir")!]
过滤器属性的类型是一个CIFilter数组。它将从第一个过滤器依次应用。
预览视图
如果需要指定预览帧,您可以使用自定义初始化器。
MyCameraViewController(previewViewRect: CGRect)
视频质量
可以通过FilterCamViewController的videoQuality属性设置视频质量。可用的选择包括AVCaptureSessionPreset。
联系
如果您有任何问题、请求或增强,请随时提交拉取请求,创建问题。
中村 株二 [email protected]