teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

エラー追加

2017/08/18 08:04

投稿

gtime
gtime

スコア51

title CHANGED
File without changes
body CHANGED
@@ -3,6 +3,7 @@
3
3
  import AVFoundation
4
4
  import Photos
5
5
  class ViewController: UIViewController {
6
+
6
7
  var videoPlayerView = AVPlayerLayer()
7
8
  var videoPlayer = AVPlayer()
8
9
 
@@ -29,25 +30,36 @@
29
30
  self.videoPlayer.play()
30
31
 
31
32
 
32
- let exportPath = NSTemporaryDirectory().appendingFormat("/video.mp4")
33
+ let exportPath: NSString = NSTemporaryDirectory().appendingFormat("video.mov")
33
- let exportURL = URL(fileURLWithPath: exportPath)
34
+ let exportUrl: NSURL = NSURL.init(fileURLWithPath: exportPath as String)
34
-
35
+ print(exportUrl)
35
36
  let exporter = AVAssetExportSession(asset: avAsset, presetName: AVAssetExportPresetHighestQuality)
36
- exporter?.outputURL = exportURL
37
+ exporter?.outputURL = exportUrl as URL
38
+ exporter?.shouldOptimizeForNetworkUse = true
39
+ exporter?.outputFileType = AVFileTypeQuickTimeMovie
37
40
 
41
+ exporter?.exportAsynchronously(completionHandler: {
42
+ if exporter?.status == AVAssetExportSessionStatus.completed {
38
- PHPhotoLibrary.shared().performChanges({
43
+ PHPhotoLibrary.shared().performChanges({
39
- PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: exportURL)
44
+ PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: exportUrl as URL)
40
- }) { saved, error in
45
+ }) { saved, error in
41
- if saved {
46
+ if saved {
42
- let alertController = UIAlertController(title: "Your video was successfully saved", message: nil, preferredStyle: .alert)
47
+ let alertController = UIAlertController(title: "Your video was successfully saved", message: nil, preferredStyle: .alert)
43
- let defaultAction = UIAlertAction(title: "OK", style: .default, handler: nil)
48
+ let defaultAction = UIAlertAction(title: "OK", style: .default, handler: nil)
44
- alertController.addAction(defaultAction)
49
+ alertController.addAction(defaultAction)
45
- self.present(alertController, animated: true, completion: nil)
50
+ self.present(alertController, animated: true, completion: nil)
51
+ } else {
52
+ print("エラー")
53
+ }
54
+ }
46
55
  } else {
47
- print("エラー")
56
+ print(exporter?.error.debugDescription)
48
57
  }
49
- }
58
+ })
50
59
  }
51
60
  }
61
+
52
62
  ```
53
- AVURLAsset で読み込んだ動画をフォトライブラリに保存したいのでこのコードを書いたのですがエラーと出力されフォトライブラリへの保存がうまくいきません。
63
+ AVURLAsset で読み込んだ動画をフォトライブラリに保存したいのでこのコードを書いたのですがエラーと出力されフォトライブラリへの保存がうまくいきません。
64
+
65
+ エラー内容 Optional("Optional(Error Domain=AVFoundationErrorDomain Code=-11838 \"Operation Stopped\" UserInfo={NSUnderlyingError=0x6000000595f0 {Error Domain=NSOSStatusErrorDomain Code=-12109 \"(null)\"}, NSLocalizedFailureReason=The operation is not supported for this media., NSLocalizedDescription=Operation Stopped})")