-2
I have a series of videos in one folder.

in another folder I have the following code:


import Foundation
import AVKit

var videoPlayer: AVPlayer?

func playVideo(filename: String, fileFormat: String) -> AVPlayer {
    if Bundle.main.url(forResource: filename, withExtension: fileFormat) != nil {
        videoPlayer = AVPlayer(url: Bundle.main.url(forResource: filename, withExtension: fileFormat)!)
        videoPlayer?.play()
    }
    return videoPlayer!
}

in another folder I have the following code, but in live it does not play the video in SwiftUi because it gives me the following error: implicity unwrapper nil value in XXXXXXX.swift.:

import SwiftUI
import AVKit

struct VideoPlayerView: View {
    // MARK: - PROPERTIES
    
    var videoSelected: String
    var videoTitle: String
    
    
    // MARK: - BODY
    var body: some View {
        VideoPlayer(player: playVideo(filename: videoSelected, fileFormat: "mp4"))
    }
}

// MARK: - PREVIEW
struct VideoPlayerView_Previews: PreviewProvider {
    static var previews: some View {
        VideoPlayerView(videoSelected: "lion", videoTitle: "Lion")
    }
}

1 Answers1

0

You can't display a VideoPlayer if your file doesn't exist.

var body: some View {
  AVPlayer(fileName: videoSelected, fileFormat: "mp4").map(VideoPlayer.init)
}
extension AVPlayer {
  convenience init?(fileName: String, fileFormat: String) {
    guard let url = Bundle.main.url(forResource: fileName, withExtension: fileFormat)
    else { return nil }

    self.init(url: url)
    play()
  }
}