You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

29 lines
968 B

import AppKit
import AVKit
import SwiftUI
/// Dünne Hülle um AppKits `AVPlayerView` statt AVKits SwiftUI-`VideoPlayer`.
///
/// `VideoPlayer` crasht auf manchen macOS-Ständen beim Öffnen mit einem
/// Swift-Runtime-Fehler ("failed to demangle superclass of VideoPlayerView
/// from mangled name 'So12AVPlayerViewC'") — ein Metadata-Bug in Apples
/// eigener `_AVKit_SwiftUI`-Bridge, kein Fehler in diesem Code. `AVPlayerView`
/// direkt per `NSViewRepresentable` einzubinden umgeht den kaputten Codepfad.
struct PlayerView: NSViewRepresentable {
let player: AVPlayer
func makeNSView(context: Context) -> AVPlayerView {
let view = AVPlayerView()
view.player = player
view.controlsStyle = .inline
view.showsFullScreenToggleButton = false
return view
}
func updateNSView(_ nsView: AVPlayerView, context: Context) {
if nsView.player !== player {
nsView.player = player
}
}
}

Powered by TurnKey Linux.