Swift ImagePicker 开始视频捕捉

问题描述 投票:0回答:3

我正在从事一个涉及视频捕捉的项目。我本质上想以编程方式捕获视频,这意味着我不希望任何相机或任何东西弹出;我只想在按下两个按钮之间录制视频。

我定义了图像选择器并在按下按钮时开始视频捕获:

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。我完全不知道为什么会发生这种情况;有人可以提供一些建议吗?

swift video avfoundation avkit
3个回答
0
投票

根据文档,

startVideoCapture
在以下某些情况下返回
false
值:

该方法可能返回一个值 由于各种原因而错误,其中包括:

影片拍摄已在进行中

设备不支持影片拍摄

设备磁盘空间不足

首先要检查是否发生上述任何情况。而且您正在设备而不是模拟器上进行测试,对吗?


0
投票

试试这个..

imagePicker.CameraCaptureMode = .video

因为

CameraCaptureMode
// 默认是照片,而不是视频

可能是您没有通知

UIImagePickerController
录制视频。所以试试这条线

imagePicker.mediaTypes = [kUTTypeMovie as String]

0
投票

如果您想将选择器配置为仅捕获照片和视频,您应该使用:

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)
}
© www.soinside.com 2019 - 2024. All rights reserved.