如何解决共享相册中缺少视频 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)
}
希望我什么都没忘记
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。