0

Currently I am using an AVPlayerView in combination with an AVPlayer in my Cocoa App. The video plays fine but I want to disable that the AVPlayerView or AVPlayer responds to key presses that for example pause the video with the pause key⏯️. Is there an attribute I am overlooking?

Here is my code:

import Cocoa
import AVKit
import AVFoundation

class MainPlayerController: NSViewController {
    private var player: AVPlayer
    private var video_player_view: AVPlayerView
    
    init(video_url: URL ) {
        self.player = AVPlayer(url: video_url)
        self.video_player_view = AVPlayerView.init()
        super.init(nibName: nil, bundle: nil)
    }
    
    required init?(coder: NSCoder) {
        fatalError("NSCoder is not supported")
    }
    
    override func loadView() {
        view = NSView.init()
        view.layer = CALayer.init()
        view.wantsLayer = true
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    override func viewWillAppear() {
        super.viewWillAppear()
        
        video_player_view.frame = view.frame
        
        player.isMuted = true
        
        video_player_view.videoGravity = .resizeAspectFill
        video_player_view.controlsStyle = .none
        video_player_view.player = player
        video_player_view.player?.play()
        view.addSubview(video_player_view)
        
        // Looping video
        player.actionAtItemEnd = AVPlayer.ActionAtItemEnd.none
        NotificationCenter.default.addObserver(self, selector: #selector(player_reached_end(notification:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem)
        
        player.play()
    }
    
    @objc func player_reached_end(notification: Notification) {
        player.seek(to: CMTime.zero)
    }
 
}
Willeke
  • 14,578
  • 4
  • 19
  • 47

0 Answers0