import Cocoa import AVFoundation

@NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate {

@IBOutlet weak var window: NSWindow!
@IBOutlet weak var view: NSView!

var player: AVPlayer?

func applicationDidFinishLaunching(_ aNotification: Notification) {
    // 设置窗口
    setupWindow()
    // 设置窗口为全屏
    NSApp.setPresentationOptions([.fullScreen])
    // 开始播放视频
    player?.play()
}

func setupWindow() {
    let mask: NSWindow.StyleMask = [.borderless, .resizable, .fullScreen]
    window.styleMask = mask
    window.level = .desktop // 窗口层次在桌面之下
    view.wantsLayer = true
    view.layer?.backgroundColor = NSColor.clear.cgColor // 设置窗口contentView为透明
    window.backgroundColor = NSColor.clear // 设置窗口为透明
}

func player() -> AVPlayer {
    if player == nil {
        let playerItem = itemWithIndex(3)
        player = AVPlayer(playerItem: playerItem)
        let playerLayer = AVPlayerLayer(player: player)
        playerLayer.frame = view.bounds
        playerLayer.videoGravity = .resizeAspect
        view.layer?.addSublayer(playerLayer)
        NotificationCenter.default.addObserver(self, selector: #selector(runLoopTheMovie(_:)), name: .AVPlayerItemDidPlayToEndTime, object: player?.currentItem)
    }
    return player!
}

func itemWithIndex(_ idx: Int) -> AVPlayerItem {
    let resName = 'demo(idx)'
    let path = Bundle.main.path(forResource: resName, ofType: 'mp4')!
    let url = URL(fileURLWithPath: path)
    let playerItem = AVPlayerItem(url: url)
    return playerItem
}

@objc func runLoopTheMovie(_ notification: Notification) {
    guard let playerItem = notification.object as? AVPlayerItem else {
        return
    }
    playerItem.seek(to: CMTime.zero) { [weak self] (finished) in
        self?.player?.play()
    }
}

}

AnyDesktop: A Fullscreen Video Player in macOS

原文地址: https://www.cveoy.top/t/topic/oshC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录