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