swift - AVCapturePhotoOutput capturePhotoWithSettings:delegate: No active and enabled video connection'
问题描述
嗨,我对编码还很陌生,我在使用 AVCapturePhotoOutput 时遇到了这个错误。我正在使用 Swift 5 和 Xcode 12.5.1。我在我的实际设备上运行它,我已经坚持了一段时间。该错误仅在我尝试拍摄照片时发生。任何帮助将不胜感激谢谢:)
private let output = AVCapturePhotoOutput()
private var captureSession: AVCaptureSession?
private let previewLayer = AVCaptureVideoPreviewLayer()
private let cameraView = UIView()
吨
private func setUpCamera() {
let captureSession = AVCaptureSession()
if let device = AVCaptureDevice.default(for: .video) {
do {
let input = try AVCaptureDeviceInput(device: device)
if captureSession.canAddInput(input) {
captureSession.addInput(input)
}
if captureSession.canAddOutput(output) {
captureSession.addOutput(output)
}
// Layer
previewLayer.session = captureSession
previewLayer.videoGravity = .resizeAspectFill
cameraView.layer.addSublayer(previewLayer)
captureSession.startRunning()
captureSession.sessionPreset = AVCaptureSession.Preset.high
self.captureSession = captureSession
}
catch {
print(error)
}
}
}
吨
Extension CameraViewController: AVCapturePhotoCaptureDelegate {
func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
guard let data = photo.fileDataRepresentation(),
let image = UIImage(data: data) else {
return
}
captureSession?.stopRunning()
showEditPhoto(image: image)
}
private func showEditPhoto(image: UIImage) {
guard let resizedImage = image.sd_resizedImage(
with: CGSize(width: 640, height: 640),
scaleMode: .aspectFill
) else {
return
}
let vc = PostEditViewController(image: resizedImage)
if #available(iOS 14.0, *) {
vc.navigationItem.backButtonDisplayMode = .minimal
}
navigationController?.pushViewController(vc, animated: false)
}
解决方案
尝试使用“cgImageRepresentation()”而不是“fileDataRepresentation()”。并从给定的 cgImage 初始化一个 UIImage
推荐阅读
- c# - 检查键的字典值是否为空
- couchbase - 更新 couchbase 中的嵌套数组
- amazon-s3 - 使用 Rest Assured 将 CSV 文件上传到 S3
- python - 如何获得分布中特定值的特定概率?
- c# - EF 在数据库中创建一个关系 id 列,它不是模型的一部分
- css - 删除或修改 CSS 类名“svelte-”前缀
- unity3d - Unity - AddForce() 同时使用 MovePosition() 进行移动
- azure-devops - 将 TFVC 存储库从一个项目迁移到另一个项目?
- javascript - 未根据 nativescript 中 json api 的请求加载
- java - Java、Selenium、IntelliJ - 无法使用 DataFile.properties 中的变量