RTSDA-iOS/Views/JellyfinPlayerView.swift
2025-02-03 16:15:57 -05:00

39 lines
1.1 KiB
Swift

import SwiftUI
import AVKit
class PlayerViewController: AVPlayerViewController {
override func viewDidLoad() {
super.viewDidLoad()
allowsPictureInPicturePlayback = true
}
}
struct JellyfinPlayerView: View {
let videoUrl: String
@Environment(\.dismiss) private var dismiss
var body: some View {
if let url = URL(string: videoUrl) {
VideoViewControllerRepresentable(url: url, dismiss: dismiss)
.ignoresSafeArea()
.onAppear {
try? AVAudioSession.sharedInstance().setCategory(.playback)
try? AVAudioSession.sharedInstance().setActive(true)
}
}
}
}
struct VideoViewControllerRepresentable: UIViewControllerRepresentable {
let url: URL
let dismiss: DismissAction
func makeUIViewController(context: Context) -> PlayerViewController {
let controller = PlayerViewController()
controller.player = AVPlayer(url: url)
controller.player?.play()
return controller
}
func updateUIViewController(_ uiViewController: PlayerViewController, context: Context) {}
}