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