CameraKit 帮助您快速将可靠的相机添加到您的应用中。我们的开源相机平台提供一致的捕获结果,可扩展的服务和无尽的相机可能性。
使用 CameraKit,您可以轻松地完成以下操作
✅ 能够扩展并创建自定义会话。✅ 图像和视频捕获可以无缝地与相同的预览会话一起工作。✅ 自动处理系统权限。✅ 自动调整预览大小。✅ 自动处理预览/图像/视频输出方向。📷 能够为捕获照片设置自定义分辨率。📹 能够为捕获视频设置分辨率/帧率。- 👱 内置人脸检测。
📐 内置叠加网格。👆 内置触摸对焦。🔍 内置捏合缩放。📸 内置闪光灯切换,适用于照片和视频。🤳 内置摄像头位置切换。🖥 与 Objective-C 兼容。
赞助商
安装
演示
如果您想先测试演示应用,您可以克隆此仓库到本地磁盘
git clone https://github.com/CameraKit/camerakit-ios.git
然后导航到 camerakit-ios
并使用 Xcode 打开 CameraKit.xcworkspace
文件。在运行按钮附近选择 CameraKitDemo
方案,使用您的 Apple 帐户解决签名冲突,然后在真实设备上运行它。在模拟器上您无法做太多,因为我们需要实际的相机硬件。
Cocoapods
如果您还没有安装Cocoapods,可以通过在终端中运行以下代码来安装:
sudo gem install cocoapods
如果没有任何Podfile
,请运行:
pod init
然后在你的工程中的Podfile
文件中添加以下行到你的app target:
pod CameraKit-iOS
它将自动创建一个Podfile
文件,并通过创建一个单独的.xcworkspace
文件来集成pods到项目中。从现在起,你将打开这个文件在Xcode中。
Carthage
如果您还没有安装Carthage,请运行以下命令:
brew install carthage
然后创建一个Cartfile
并在其中添加以下行:
github "CameraKit/camerakit-ios"
Code
在添加与相机相关的代码之前,请确保在app项目的Info.plist
文件中包含了您的代码所需的工作权限。
<!-- Required for photos and videos -->
<key>NSCameraUsageDescription</key>
<string></string>
<!-- Optional for photos -->
<key>NSMicrophoneUsageDescription</key>
<string></string>
<!-- Optional for the demo app to copy the photos/videos to your photo library -->
<key>NSPhotoLibraryAddUsageDescription</key>
<string></string>
以下是一个包含session和实时相机预览的快速启动代码示例:
import CameraKit
...
override func viewDidLoad() {
super.viewDidLoad()
// Init a photo capture session
let session = CKFPhotoSession()
// Use CKFVideoSession for video capture
// let session = CKFVideoSession()
let previewView = CKFPreviewView(frame: self.view.bounds)
previewView.session = session
}
使用CKFPhotoSession
类捕获图像,请使用以下代码:
session.capture({ (image, settings) in
// TODO: Add your code here
}) { (error) in
// TODO: Handle error
}
如果想要使用CKFVideoSession
类录制视频,以下代码可以开始录制:
// You can also specify a custom url for where to save the video file
session.record(url: URL(string: ""), { (url) in
// TODO: Add your code here
}) { (error) in
// TODO: Handle error
}
然后结束录制:
// You can also specify a custom url for where to save the video file
session.stopRecording()
您可以通过isRecording
属性来获取当前录制状态,以确定是否正在录制。
Session属性和方法
CKFPhotoSession | CKFVideoSession |
---|---|
zoom: Double |
zoom: Double |
resolution: CGSize |
isRecording: Bool |
cameraPosition: CameraPosition |
cameraPosition: CameraPosition |
cameraDetection: CameraDetection |
flashMode: FlashMode |
flashMode: FlashMode |
start() |
start() |
stop() |
stop() |
togglePosition() |
focus(at point: CGPoint) |
setWidth(_ width: Int, height: Int, frameRate: Int) |
togglePosition() |
record(url: URL? = nil, _ callback: @escaping (URL) -> Void, error: @escaping (Error) -> Void) |
capture(_ callback: @escaping (UIImage, AVCaptureResolvedPhotoSettings) -> Void, _ error: @escaping (Error) -> Void) |
stopRecording() |
导入到Objective-C项目中
转到 项目设置
, 编译设置
, 总是嵌入Swift标准库
并将其值设置为 是
。
然后使用以下命令导入CameraKit框架
@import CameraKit;
创建自定义会话
CameraKit可以分为两个主要部分:预览和会话。会话是通过扩展基础CKFSession
类实现的。如果您需要一个自定义会话,可以扩展CKFSession
类并使用其静态辅助函数来初始化它。或者您也可以扩展内置的会话并添加自定义逻辑。
class MyCustomSession: CKFSession {
public override init() {
super.init()
do {
let deviceInput = try CKFSession.captureDeviceInput(type: .backCamera)
self.session.addInput(deviceInput)
} catch let error {
print(error.localizedDescription)
}
}
// TODO: Add your code here
}
许可协议
CameraKit遵循MIT许可协议发布。