使用ImagePickerController选择视频而不是图像-Swift

问题描述

我的情况是我有一个运行中的图像选择器控制器,该控制器允许用户从其相机胶卷中拾取图像并将其显示在应用程序内的图像视图中。

问题是我也希望能够对视频执行相同的操作,而是将视频显示在avplayer上。我已经进行了一些研究,但找不到任何好的来源。

有人可以告诉我该怎么做吗?可能通过编辑下面的代码?

谢谢!

这是我用于从cameraroll导入和显示图像的代码(均在viewDidLoad()上方):

@IBOutlet weak var imageView: UIImageView!

// the image picker controller
var imagePicker = UIImagePickerController()

// this is the button you tap to import your photo
@IBAction func imageViewButtonTapped(_ sender: Any) {
  
    if UIImagePickerController.isSourceTypeAvailable(.savedPhotosAlbum) {
        
        imagePicker.delegate = self
        imagePicker.allowsEditing = true
        
        present(imagePicker,animated: true,completion: nil)

    }
}
    

func imagePickerController(_ picker: UIImagePickerController,didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    
    var selectedImageFromPicker: UIImage?
    
    if let editedImage = info[.editedImage] as? UIImage{
        selectedImageFromPicker = editedImage
    }else if let originalImage = info[.originalImage] as? UIImage{
        selectedImageFromPicker = originalImage
    }
    
    if let selectedImage = selectedImageFromPicker {
        imageView.image = selectedImage
    }
    
    dismiss(animated: true,completion: nil)
}

解决方法

尝试一下:

import AVFoundation

class VideoHelper {
    
    static func startMediaBrowser(delegate: UIViewController & UINavigationControllerDelegate & UIImagePickerControllerDelegate,sourceType: UIImagePickerController.SourceType) {
        guard UIImagePickerController.isSourceTypeAvailable(sourceType) else { return }
        
        let mediaUI = UIImagePickerController()
        mediaUI.sourceType = sourceType
        mediaUI.mediaTypes = [kUTTypeMovie as String]
        mediaUI.allowsEditing = true
        mediaUI.delegate = delegate
        delegate.present(mediaUI,animated: true,completion: nil)
    }
}

,您可以将其用作:

let source = UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.camera) ? UIImagePickerController.SourceType.camera : UIImagePickerController.SourceType.savedPhotosAlbum
        VideoHelper.startMediaBrowser(delegate: self,sourceType: source)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...