Swift 共享相册中缺少视频。UIImagePickerController

Swift 共享相册中缺少视频。UIImagePickerController,swift,uiimagepickercontroller,Swift,Uiimagepickercontroller,我的照片库中有一个图像采集器和一个共享相册。在共享相册内,我找不到我的视频,只显示照片。虽然在影集里,它就在那里 这是我的密码: imagePicker.sourceType = .photoLibrary imagePicker.mediaTypes = ["public.image", "public.movie"] 是否有一种方法可以使用imagepicker显示共享相册中的视频,或者这是它的一个限制?谢谢大家! 我以前做过,这需要几天的时间 im

我的照片库中有一个图像采集器和一个共享相册。在共享相册内,我找不到我的视频,只显示照片。虽然在影集里,它就在那里

这是我的密码:

imagePicker.sourceType = .photoLibrary
imagePicker.mediaTypes = ["public.image", "public.movie"]

是否有一种方法可以使用imagepicker显示共享相册中的视频,或者这是它的一个限制?谢谢大家!

我以前做过,这需要几天的时间

import MobileCoreServices // out of class

//make sure //viewDidLoad()
    imagePicker.delegate = self 
    imagePicker.sourceType = .savedPhotosAlbum 
    imagePicker.allowsEditing = false  
在按钮中单击

    if(sender.tag == 120){ // imagePicker
        IS_MediaPicker = false
        if UIImagePickerController.isSourceTypeAvailable(.savedPhotosAlbum){
            print("Button imagePicker")
 
            imagePicker.delegate = self
            imagePicker.sourceType = .savedPhotosAlbum
            imagePicker.mediaTypes = [kUTTypeImage as String] //import MobileCoreServices
            imagePicker.allowsEditing = false
            present(imagePicker, animated: true, completion: nil)
        }
    }
    
    if(sender.tag == 121){ // videoPicker
        IS_MediaPicker = true
        if(Suffix_selected == ""){
            if 
  UIImagePickerController.isSourceTypeAvailable(.savedPhotosAlbum){
                print("Button videoPicker")
                imagePicker = UIImagePickerController()
                imagePicker.delegate = self
                imagePicker.sourceType = .savedPhotosAlbum
                //imagePicker.mediaTypes = ["public.movie"]
                imagePicker.mediaTypes = 
  UIImagePickerController.availableMediaTypes(for: .savedPhotosAlbum)!
                imagePicker.mediaTypes = [kUTTypeMovie as String] //import 
    MobileCoreServices
                imagePicker.allowsEditing = false
                imagePicker.videoExportPreset = AVAssetExportPresetPassthrough
                imagePicker.videoQuality = .typeLow
                //imagePicker.videoMaximumDuration = .init(floatLiteral: 1.5)
                present(imagePicker, animated: true, completion: nil)
            }
        }
图像选择器控制器

var IS_MediaPicker = false // if false it will be image
func imagePickerController(_ picker: UIImagePickerController, 
    didFinishPickingMediaWithInfo info:
    [UIImagePickerController.InfoKey : Any]) {
    if(self.IS_MediaPicker){ // true it's vedio or audio
        if let videoURL = info[UIImagePickerController.InfoKey.mediaURL] as? 
        URL {
            print(videoURL)
            var Suffix = ""
            if(videoURL.absoluteString.hasSuffix("MOV")){
                print("MOV")
                Suffix = ".MOV"
                Suffix_selected = "MOV"
            }else{
                print("mp4")
                Suffix = ".mp4"
                Suffix_selected = "mp4"
            }
            do {
                let date = Date()
                let format = DateFormatter()
                format.dateFormat = "yyyyMMddHHmmss"
                let formattedDate = format.string(from: date)
                print(formattedDate)
                
                                let outputData = NSData(contentsOf: videoURL)
                                let strBase64 = 
  outputData!.base64EncodedString(options: .lineLength64Characters)
                
      // let data = try Data(contentsOf: videoURL, options: .mappedIfSafe)
      // let strBase64 = data.base64EncodedString(options:.lineLength64Characters)
                 
            } catch {
            }


      // btn_takevedio.isEnabled = false
        }
    }else{ // false it's Image
        
        let assetPath = info[.imageURL] as! NSURL
        var Suffix = ""
        if (assetPath.absoluteString?.hasSuffix("jpeg"))! {
            print("jpeg")
            //print(assetPath)
            //print(assetPath.path)
            Suffix = ".jpg"
        }else if (assetPath.absoluteString?.hasSuffix("jpg"))! {
            print("jpg")
            Suffix = ".jpg"
            //picker.dismiss(animated: true, completion: nil)
        }
        else if (assetPath.absoluteString?.hasSuffix("png"))! {
            print("png")
            Suffix = ".png"
            //picker.dismiss(animated: true, completion: nil)
        }
        else if (assetPath.absoluteString?.hasSuffix("gif"))! {
            print("gif")
            Suffix = ".gif"
            //picker.dismiss(animated: true, completion: nil)
        }
        else {
            print("Unknown")
            //print(assetPath)
            //print(assetPath.filePathURL?.absoluteURL)
            //picker.dismiss(animated: true, completion: nil)
        }
        
        let date = Date()
        let format = DateFormatter()
        format.dateFormat = "yyyyMMddHHmmss"
        let formattedDate = format.string(from: date)
        print(formattedDate)
        
        let image = info[.originalImage] as! UIImage
        productimage.image = image
        //guard let data = image.jpegData(compressionQuality: 1.0) else { return }
        let imageData:NSData = image.pngData()! as NSData
        let strBase64 = imageData.base64EncodedString(options: .lineLength64Characters) 
        
    }
    picker.dismiss(animated: true, completion: nil)
    
}

希望我没有忘记任何东西

如果我错了,请纠正我,
.savedPhotosAlbum
仅显示“瞬间”相册,我想改用
.photoLibrary
,可以吗?非常感谢。从逻辑上说你是对的,但我有1周或更长的时间来处理这段代码,我相信你应该使用.savedPhotoAlbum来处理图像、音频或视频。无论如何,此代码帮助您单击并接收数据(imagePickerController)。只需添加您想要使用“outputData”的位置,将其复制并通过,使用debug进行尝试,以确保您可以完成您的工作,Happy Code^^^ your ask==>。imagePicker.mediaTypes=UIImagePickerController.availableMediaTypes(适用于:.savedPhotosAlbum)!magePicker.mediaTypes=UIImagePickerController.availableMediaTypes(适用于:.savedPhotosAlbum)!imagePicker.mediaTypes=[kUTTypeMovie作为字符串]//导入MobileCoreServices