Swiftでカメラロールから動画を取得して,UIImageViewに反映させたいです
Swift言語での開発で、以下の記事を参考にしています。
Swift3で動画をカメラから選択してきて描画して再生まで - Qiita
現在,"importButton"で動画のみが表示されたカメラロールを表示し,選択するところまでは,できているのですが,その後UIImageviewに反映されません.
動画を選択すると
2019-01 18:13:24.978844+0900 sport camera[16106:5106135] [discovery] errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}
とデバッグには表示されています.
解決方法があれば,教えていただきたいです.
import UIKit
import AVKit
import AVFoundation
class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
let imagePickerController = UIImagePickerController()
var videoURL: URL?
@IBOutlet weak var imageView: UIImageView!
@IBAction func importButton(_ sender: Any) {
print("UIBarButtonItem。カメラロールから動画を選択")
imagePickerController.sourceType = .photoLibrary
imagePickerController.delegate = self
imagePickerController.mediaTypes = ["public.movie"]
present(imagePickerController,animated: true,completion: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String:Any]) {
videoURL = info["UIImagePickerControllerReferenceURL"] as? URL
print(videoURL!)
imageView.image = previewImageFromVideo(videoURL!)!
imageView.contentMode = .scaleAspectFit
imagePickerController.dismiss(animated: true, completion: nil)
}
func previewImageFromVideo(_ url:URL) -> UIImage? {
print("動画からサムネイルを生成")
let asset = AVAsset(url: url)
let imageGenerator = AVAssetImageGenerator(asset: asset)
imageGenerator.appliesPreferredTrackTransform = true
var time = asset.duration
time.value = min(time.value, 2)
do{
let imageRef = try imageGenerator.copyCGImage(at: time, actualTime: nil)
return UIImage(cgImage: imageRef)
} catch {
return nil
}
}
}