Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift图像采集器StartVideoCapture_Swift_Video_Avfoundation_Avkit - Fatal编程技术网

Swift图像采集器StartVideoCapture

Swift图像采集器StartVideoCapture,swift,video,avfoundation,avkit,Swift,Video,Avfoundation,Avkit,我正在做一个涉及视频捕获的项目。我基本上是想通过编程方式拍摄视频,这意味着我不想让任何相机或任何东西弹出;我只想在按下两个按钮之间录制视频 我定义了imagepicker并在按下按钮时开始视频捕获: if (UIImagePickerController.isSourceTypeAvailable(.camera)) { imagePicker.sourceType = .camera imagePicker.cameraDevice = UIImagePicke

我正在做一个涉及视频捕获的项目。我基本上是想通过编程方式拍摄视频,这意味着我不想让任何相机或任何东西弹出;我只想在按下两个按钮之间录制视频

我定义了imagepicker并在按下按钮时开始视频捕获:

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]

在尝试捕获视频之前,您不需要演示图像选择器吗?为什么要尝试在
if
块之外调用
startVideoCapture
?您实际在哪里创建选择器?您应该只创建它,并在源类型可用的情况下使用它;我试着不带任何相机就录制。我在课程开始时创建了选择器。是的,我是,但我很确定这些都不适用;该设备支持媒体捕获,没有磁盘空间不足,而且我知道我还没有捕获电影。本质上,
UIImagePickerController
适用于需要UI的情况。如果您不需要任何UI,您可能需要查看
AVFoundation
来进行视频录制。因此,您在此处尝试执行的操作可能不起作用,因为您试图不显示任何UI。