概要概要
私は子供向けの簡単な歌のゲームをしています。ゲームはビデオを再生するだけで、3つのオプションが表示されます。ビデオを更新していたので、Assets.xcassetsから削除してから、新しいビデオを追加しました。
問題
今、私はこのエラーを受け取っています:
Fatal error: Unexpectedly found nil while unwrapping an Optional value: file /Volumes/Documentos/Trabajo/Codigo proyectos/Currents/HANDSUP/diloEnSenas/SingsCategoryView.swift, line 69
2020-05-12 14:03:46.769427-0500 HandsUP[12221:549710] Fatal error: Unexpectedly found nil while unwrapping an Optional value: file /Volumes/Documentos/Trabajo/Codigo proyectos/Currents/HANDSUP/diloEnSenas/SingsCategoryView.swift, line 69
これは私が問題を抱えているコードです
struct video: View {
var url: String
var body: some View{
VideoPlayerView(playerQueve: self.changeVideo(file: self.url))
}
func changeVideo(file: String) -> AVQueuePlayer {
//let fileURL = file
//let url = Bundle.main.url(forResource: fileURL , withExtension: "mp4")
let url = Bundle.main.url(forResource: "color_1" , withExtension: "mp4")
let playerItem = AVPlayerItem(url: url!)
//set video
let player = AVQueuePlayer(playerItem: playerItem)
return player
}
}
以前は問題なく動作していました。そのため、最初に考えたのは、ファイルを正しい方法で追加していないということでしたが、もう一度確認したところ、ビデオと同じフォルダーにあるボタンが正しく表示されています。
最後の画像でわかるように、ボタンはよく表示されており、ボタンの画像は同じフォルダーにあります
次に確認したのはビルドフェーズでしたが、すべてのファイルは正しいフォルダーにあります。
質問
ビデオファイルをメインバンドルに追加する場合は、ドラッグアンドドロップして必要に応じてアイテムをコピーすることで、次のように直接アクセスできます。
let url = Bundle.main.url(forResource: "Test" , withExtension: "mov")
あなたは資産から直接ビデオにアクセスしたい場合は、としてそれを得ることができるNSObject
とNSDataAsset
。
let dataVideo : NSObject = NSDataAsset(name: "MyVideo")!
編集:
ビデオ/画像をMainBundleに追加すると、アプリのパッケージコンテンツを表示するときにそれらを表示できます。それがURLが指しているところです。アセットを使用すると、在庫ごとにURLを取得できません。私がやっていることは、アセットのコンテンツをデータとして取得し、それをアプリケーションのDocumentsフォルダーにコピーして、そこに保存することです。次に、そのディレクトリへのURLも取得します。(これはあなたのケースに最適なソリューションであるはずです、私はあなたのバンドルに直接ビデオをコピーするだけです)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加