以下のコードをビルドさせた際に、エラーが出ました。
UIKit
1import AVFoundation 2import photes 3 4class ViewController: UIViewController { 5 6 override func viewDidLoad() { 7 8 // パスからassetを生成. 9 let path = Bundle.main.path(forResource: "ビデオ名前", ofType: "mp4") 10 let fileURL = URL(fileURLWithPath: path!) 11 let avAsset = AVURLAsset(url: fileURL, options: nil) 12 13 // assetから画像をキャプチャーする為のジュネレーターを生成. 14 let generator = AVAssetImageGenerator(asset: avAsset) 15 generator.maximumSize = self.view.frame.size 16 17 // 動画の指定した時間での画像を得る(今回は動画の最後のキャプチャを撮る). 18 let capturedImage = try! generator.copyCGImage(at: avAsset.duration, actualTime: nil) 19 20 // 静止画用のImageViewを生成. 21 let imageView = UIImageView(frame: self.view.frame) 22 imageView.image = UIImage(cgImage: capturedImage) 23 print(avAsset.duration) 24 25 // imageViewをviewに追加. 26 self.view.addSubview(imageView) 27 } 28}
エラーが出たのは以下のコードです。
let fileURL = URL(fileURLWithPath: path!)
致命的エラー:オプション値のアンラップ中に予期せずnilが見つかりました
" "が空だと表示されるエラーと書いてあったので、動画をプロジェクトに読み込み、" "に名前と拡張子を設定しました。
しかし改善はされませんでした。
解決法があれば回答いただけると嬉しいです。
試したこと、結果
・ビルドし、開いたら画面は真っ白
・Assetliblaryが非推奨のためphotesを使用
環境 xcode12 swift5
> " "が空だと表示されるエラーと書いてあったので、動画をプロジェクトに読み込み、" "に名前と拡張子を設定しました。
プロジェクトのどこに追加したのでしょうか。
ちなみに、Assets.xcassets の中だと、Bundle.main.pathでは見つけることができないので、ほかの swift ファイルと同じフォルダにおく必要があります。
確認しました。Assets.xcasstsの中に動画はなく、他swiftファイルと同じフォルダにあります。しかしcaputure5(プロジェクト名)フォルダの中に、Assets.xcasstsが入っています。それが原因でしょうか?
回答1件
あなたの回答
tips
プレビュー