Search code examples
swiftmacosavfoundationavkit

How to play a video in a macOS application with swift?


I'm trying to get a video I have in my project to play in my macOS application using swift. Here is my code:

import Cocoa
import AVKit
import AVFoundation

class ViewController: NSViewController {
    var player : AVPlayer!
    var avPlayerLayer : AVPlayerLayer!

    @IBOutlet weak var videoPlayer: AVPlayerView!

    override func viewDidLoad() {
        super.viewDidLoad()

        guard let path = Bundle.main.path(forResource: "Background", ofType:"mp4") else {
            debugPrint("Not found")
            return
        }

        let playerURL = AVPlayer(url: URL(fileURLWithPath: path))
        let playerView = AVPlayerView()
        playerView.player = playerURL
        playerView.player?.play()
    }
}

I also have an AVPlayerView in my storyboard that I have connected to my viewcontroller.

It builds and runs fine but when I run it nothing shows up. I just get a black screen.

Any help is appreciated. Thanks!


Solution

  • The problem is this line:

    let playerView = AVPlayerView()
    

    Instead of configuring the player view that is in your interface, you make a whole new separate player view — and then you throw it away.