FlexibleAVCapture
这个库提供了一个具有灵活摄像框的 AV 捕获视图控制器。它包括默认捕获设置、预览层、按钮、点击手势对焦、捏合手势缩放等功能。
屏幕录制
示例
要运行示例项目,请克隆仓库,然后从示例目录首先运行 pod install
安装
FlexibleAVCapture 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 即可
pod 'FlexibleAVCapture'
用法
您的视图控制器应符合以下条件
- 采用
FlexibleAVCaptureDelegate
协议,并实现didCapture(withFileURL fileURL: URL)
函数。 - 创建一个
FlexibleAVCaptureViewController
对象,并设置其delegate
。
import UIKit
import FlexibleAVCapture
class ViewController: UIViewController, FlexibleAVCaptureDelegate {
let flexibleAVCaptureVC: FlexibleAVCaptureViewController = FlexibleAVCaptureViewController()
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.flexibleAVCaptureVC.delegate = self
self.present(flexibleAVCaptureVC, animated: true, completion: nil)
}
func didCapture(withFileURL fileURL: URL) {
print(fileURL)
}
}
API
FlexibleAVCaptureViewController
一个管理捕获设置和会话的对象。它还显示预览层和处理用户交互。
主题 | API |
---|---|
初始化 | init() -> FlexibleAVCaptureViewController 使用后置相机初始化一个 FlexibleAVCaptureViewController 对象。 |
init(cameraPosition: AVCaptureDevice.Position) -> FlexibleAVCaptureViewController 初始化一个 FlexibleAVCaptureViewController 对象,使用后置相机或前置相机。 |
|
管理交互 | var delegate: FlexibleAVCaptureDelegate? 充当灵活 AV 捕获视图代理的对象。 |
管理捕获设置 | var allowsResizing: Bool 一个布尔值,表示用户是否可以调整相机帧大小。允许此功能将隐藏调整大小滑块和调整大小按钮。该属性的默认值是 true。 |
var allowsReversingCamera: Bool 一个布尔值,表示用户是否可以逆转相机位置。允许此功能将隐藏相机逆转按钮。该属性的默认值是 true。 |
|
var allowsSoundEffect: Bool 一个布尔值,表示视频录制开始和结束时是否会有声音效果。该属性的默认值是 true。 |
|
var cameraPosition: AVCaptureDevice.Position 正在使用的摄像头位置来捕获视频。默认将使用后置相机。(这是一个只读属性。) |
|
var maximumRecordDuration: CMTime 允许录制的最长持续时间。该属性的默认值是 invalid,表示没有限制。 |
|
var minimumFrameRatio: CGFloat 当应用宽屏(或最高)帧时,全帧的垂直(或水平)边长比率。该属性的默认值是 0.34。 |
|
var videoQuality: AVCaptureSession.Preset 表示输出质量级别或比特率的常量值。该属性的默认值是 medium。(这是一个只读属性。) |
|
func canSetVideoQuality(_ videoQuality: AVCaptureSession.Preset) -> Bool 返回一个布尔值,表示接收器是否可以使用给定的设置。 |
|
func forceResize(withResizingParameter resizingParameter: Float) -> Void 接收一个介于 0.0 和 1.0 之间的 Float 值,并使用该值调整相机帧大小。 |
|
func reverseCameraPosition() -> Void 将摄像机位置更改为当前位置的相反位置。 |
|
func setVideoQuality(_ videoQuality: AVCaptureSession.Preset) -> Void 更改视频捕获的质量。 |
|
替换默认 UI | func replaceFullFramingButton(with button: UIButton) -> Void 替换现有的全帧按钮。 |
func replaceResizingSlider(with slider: UISlider) -> Void 替换现有的缩放滑块。滑块的取值范围将被强制设置为 0.0 到 1.0。 |
|
func replaceRecordButton(with button: UIButton) -> Void 替换现有的录制按钮。 |
|
func replaceReverseButton(with button: UIButton) -> Void 替换现有的相机位置反转按钮。 |
|
func replaceSquareFramingButton(with button: UIButton) -> Void 替换现有的方形框按钮。 |
|
func replaceTallFramingButton(with button: UIButton) -> Void 替换现有的高框按钮。 |
|
func replaceWideFramingButton(with button: UIButton) -> Void 替换现有的宽框按钮。 |
FlexibleAVCaptureDelegate
定义了FlexibleAVCaptureViewController的代理接口,以响应录制单个文件过程中发生的事件。
FlexibleAVCaptureViewController对象的代理必须采用FlexibleAVCaptureDelegate协议。
主题 | API |
---|---|
代理方法 | didCapture(withFileURL fileURL: URL) -> Void 在所有挂起的数据都已写入输出文件时通知代理。必须实现。 |
作者
hahnah, [email protected]
许可协议
FlexibleAVCapture遵循MIT许可协议。更多信息请参阅LICENSE文件。