我正在从事一个涉及视频捕捉的项目。我本质上想以编程方式捕获视频,这意味着我不希望任何相机或任何东西弹出;我只想在按下两个按钮之间录制视频。
我定义了图像选择器并在按下按钮时开始视频捕获:
if (UIImagePickerController.isSourceTypeAvailable(.camera)) {
imagePicker.sourceType = .camera
imagePicker.cameraDevice = UIImagePickerControllerCameraDevice.front
imagePicker.allowsEditing = false
imagePicker.delegate = self
}
imagePicker.startVideoCapture()
print("Capture started")
后来我停止了视频拍摄:
imagePicker.stopVideoCapture()
print("capture over")
我知道这应该调用我的方法:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
print("captured")
}
由于某种原因,我的视频没有开始录制,因为布尔值 imagepicker.startvideocapture 返回 false。我完全不知道为什么会发生这种情况;有人可以提供一些建议吗?
根据文档,
startVideoCapture
在以下某些情况下返回false
值:
该方法可能返回一个值 由于各种原因而错误,其中包括:
影片拍摄已在进行中
设备不支持影片拍摄
设备磁盘空间不足
首先要检查是否发生上述任何情况。而且您正在设备而不是模拟器上进行测试,对吗?
试试这个..
imagePicker.CameraCaptureMode = .video
因为
CameraCaptureMode
// 默认是照片,而不是视频
或
可能是您没有通知
UIImagePickerController
录制视频。所以试试这条线
imagePicker.mediaTypes = [kUTTypeMovie as String]
如果您想将选择器配置为仅捕获照片和视频,您应该使用:
func openCameraPhoto() {
let cameraViewController = UIImagePickerController()
cameraViewController.sourceType = .camera
cameraViewController.cameraCaptureMode = .photo
cameraViewController.mediaTypes = [UTType.image.identifier]
viewController?.present(cameraViewController, animated: true, completion: nil)
}
func openCameraVideo() {
let cameraViewController = UIImagePickerController()
cameraViewController.sourceType = .camera
cameraViewController.mediaTypes = [UTType.movie.identifier]
viewController?.present(cameraViewController, animated: true, completion: nil)
}