Swift ImagePicker StartVideoCapture

Posted

技术标签:

【中文标题】Swift ImagePicker StartVideoCapture【英文标题】: 【发布时间】:2017-03-26 00:41:02 【问题描述】:

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

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

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

【问题讨论】:

在尝试捕获视频之前您不需要展示图像选择器吗? 你为什么要尝试在if 块之外调用startVideoCapture 你实际上在哪里创建选择器?仅当源类型可用时才应创建并使用它。 我以为我只需要使用 start 和 stopvideocapture 方法;我正在尝试在不出示任何相机的情况下进行录制。我在课程开始时创建了选择器。 【参考方案1】:

根据文档,startVideoCapture 在某些情况下会返回 false 值:

这个方法可能返回一个值 错误的原因有很多,其中包括:

电影拍摄已经在进行中

设备不支持视频拍摄

设备磁盘空间不足

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

【讨论】:

是的,我是,但我很确定这些都不适用;该设备支持媒体捕获,它没有磁盘空间不足,而且我知道我还没有捕获电影。 基本上,UIImagePickerController 适用于您确实需要 UI 的情况。如果您不想要任何 UI,您可能需要查看 AVFoundation 进行视频录制。因此,您在此处尝试执行的操作可能行不通,因为您试图不显示任何 UI。【参考方案2】:

试试这个..

imagePicker.CameraCaptureMode = .video

因为CameraCaptureMode // 默认是照片,不是视频

可能是您没有通知UIImagePickerController 录制视频。所以试试这条线

imagePicker.mediaTypes = [kUTTypeMovie as String]

【讨论】:

以上是关于Swift ImagePicker StartVideoCapture的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift/SwiftUI 从 ImagePicker 获取选定的图像文件名

iOS Swift:在呈现 imagePicker 后,SlidingMenuView 位置错误

Swift ImagePicker VideoCapture didFInishPickingMedia 未被调用

UIImagePickerController 委托未调用 Swift 3

UIImagePickerController委托不叫Swift 3

Swift,相机图像不返回