I am working with OpalImagePickerController in Swift dealing with uploading multiple images and videos. I can easily deal with images and converting to PHAsset to UIImage but I am trying to upload multiple videos with OpalImagePickerController but unable to convert PHAsset to Video format to upload. I am providing my code .
let imagePicker = OpalImagePickerController()
imagePicker.imagePickerDelegate = self
imagePicker.allowedMediaTypes = Set([PHAssetMediaType.image])
imagePicker.maximumSelectionsAllowed = 20
self.present(imagePicker, animated: true, completion: nil)
internal func imagePicker(_ picker: OpalImagePickerController, didFinishPickingAssets assets: [PHAsset])
{
var image = UIImage()
for asset in assets
{
switch asset.mediaType {
case .image:
print("Image")
image = asset.getAssetThumbnail()
let data = image.pngData() as NSData?
self.sendImage(data:data! as Data, previewImage: image)
case .video:
print("Video")
let options: PHVideoRequestOptions = PHVideoRequestOptions ()
options.deliveryMode = .highQualityFormat
options.version = .original
PHImageManager.default().requestAVAsset (forVideo: asset, options: options, resultHandler: {(asset, audioMix, info) in
if let urlAsset = asset as? AVURLAsset {
let playerItem = AVPlayerItem(asset: urlAsset)
self.sendVideo(video: playerItem, isFromCamera: false)
} else {
}
})
case .audio:
print("Audio")
default:
print("Unknown")
}
}
picker.dismiss(animated: true, completion: nil)
}
extension PHAsset {
func getAssetThumbnail() -> UIImage {
let manager = PHImageManager.default()
let option = PHImageRequestOptions()
var thumbnail = UIImage()
option.isSynchronous = true
manager.requestImage(for: self,
targetSize: CGSize(width: self.pixelWidth, height: self.pixelHeight),
contentMode: .aspectFit,
options: option,
resultHandler: {(result, info) -> Void in
thumbnail = result!
})
return thumbnail
}
Please help me to convert PHAsset to Video format