swift - UIImagePickerController 不会在 iOS 14 上录制视频或拍照
问题描述
我有这个代码
let picker = UIImagePickerController()
picker.sourceType = .camera
picker.cameraDevice = .rear
picker.mediaTypes = [kUTTypeMovie as String]
picker.cameraCaptureMode = .video
picker.videoMaximumDuration = 15.0
picker.videoQuality = .typeLow
picker.allowsEditing = true
picker.delegate = self
picker.showsCameraControls = true
self.present(picker, animated: true, completion: nil)
此代码在 iOS 14 下正常工作。在 iOS 14 上,预览时显示黑屏并且不录制视频或拍照。
我设置正确:
- 隐私 - 相机使用说明
- 隐私 - 媒体库使用说明
- 隐私 - 麦克风使用说明
- 隐私 - 照片库使用说明
我检查这个:
UIImagePickerController.isCameraDeviceAvailable(.rear)
UIImagePickerController.isSourceTypeAvailable(.camera)
两种方法都返回 true。我不使用模式对话框来启动 UIImagePickerController。
在控制台中,我看到以下消息:
[Camera] 无法读取 exposureBiasesByMode 字典:错误域 = NSCocoaErrorDomain 代码 = 4864 "*** -[NSKeyedUnarchiver _initForReadingFromData:error:throwLegacyExceptions:]: 数据为 NULL" UserInfo={NSDebugDescription=*** -[NSKeyedUnarchiver _initForReadingFromData:error: throwLegacyExceptions:]: 数据为 NULL}
[Camera] [CAMCaptureEngine] 收到会话运行时错误通知:Error Domain=AVFoundationErrorDomain Code=-11819 "Cannot Complete Action" UserInfo={NSLocalizedDescription=Cannot Complete Action, NSLocalizedRecoverySuggestion=稍后重试。}
Xcode 版本 12.4 (12D4e)
更新:
我发现了问题。如果评论 picker.videoQuality = .typeLow 它将适用于 iOS 14。
为什么我不能在 iOS14 上使用低质量?
解决方案
推荐阅读
- java - 如何将 JTextArea 字符串更改为其他内容
- c# - 有没有办法在 C# 中将自动生成的值(增量整数)赋予字典键值对中的值
- node.js - 格式错误的属性选择器 Cheerio
- arrays - 在数组中切换 UIbuttons 以选择/取消选择
- python - 带递归的帕斯卡三角
- java - Java - 从地图中的列表中检索单个值
- python - Instagram 抓取:我将如何保存故事?
- image-processing - 对梯度直方图的理解
- visual-studio-code - VS Code 更新服务权限被拒绝错误
- javascript - 无法访问组件中的 json 数据