共享相册中缺少视频 UIImagePickerController

问题描述

我的照片库中有一个图像选择器和一个共享相册。在共享相册的内部,我找不到我的视频,仅显示照片。在视频相册中,它在那里。

这是我的代码:

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,completion: nil)
            }
        }

imagePickerController

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)
    
}

希望我什么都没忘记

相关问答

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