VideoCamera
AVFoundation摄像头的封装。与多个数据输出兼容,例如元数据、视频数据、静态图像捕获。
要求
- iOS 11.0+
- Xcode 11.0+
- Swift 5.0+
安装
CocoaPods
使用 CocoaPods 将 VideoCamera 集成到您的 Xcode 项目中,只需在您的 Podfile
中指定它
pod 'Shakuro.VideoCamera'
然后,运行以下命令
$ pod install
手动
如果您不希望使用 CocoaPods,只需将 Shakuro.VideoCamera 拷贝到您的项目中即可简单地集成它。
用例
每个 VideoCamera
必须提供 VideoCameraConfiguration
结构。浏览其广泛的设置。对于简单的后置摄像头设置,仅提供视频数据预览,无权获取静态图像
private var camera: VideoCamera?
override func viewDidLoad() {
super.viewDidLoad()
// ...
var cameraConfig = VideoCameraConfiguration()
cameraConfig.cameraDelegate = self
cameraConfig.captureSessionPreset = .high
cameraConfig.capturePhotoEnabled = false
cameraConfig.videoFeedDelegate = self
cameraConfig.simulatedImage = UIImage(named: "card_backside.png")?.cgImage
let videoCamera = VideoCameraFactory.createCamera(configuration: cameraConfig)
camera = videoCamera
// ...
}
显示摄像头预览的一种简单方法是,在 storyboard 中准备容器视图,然后将其添加到摄像头预览中
@IBOutlet private var cameraPreviewContainerView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// setup camera (see above)
let preview = videoCamera.previewView
preview.translatesAutoresizingMaskIntoConstraints = true
preview.autoresizingMask = [UIViewAutoresizing.flexibleHeight, UIViewAutoresizing.flexibleWidth]
preview.frame = cameraPreviewContainerView.bounds
cameraPreviewContainerView.insertSubview(preview, at: 0)
// ...
}
通过代理观察摄像头属性的更改
extension MyViewController: VideoCameraDelegate {
func videoCamera(_ videoCamera: VideoCamera, error: Error) {
// display/process error
}
func videoCameraInitialized(_ videoCamera: VideoCamera, errors: [VideoCameraError]) {
// update UI - such as flash button (with actual state of camera)
}
func videoCamera(_ videoCamera: VideoCamera, flashModeForPhotoDidChanged newValue: AVCaptureDevice.FlashMode) {
// update flash button
}
// ... other delegate functions
}
许可
Shakuro.VideoCamera 根据 MIT 许可发布。有关详细信息,请参阅 LICENSE
试一试并联系我们
如果你喜欢这个工具,请给它标星,这将帮助我们成长并添加更多有用的功能。随时联系我们并雇佣我们的团队为你开发移动或网页项目。