|
6 | 6 | // |
7 | 7 |
|
8 | 8 | import SwiftUI |
| 9 | +import AVKit |
9 | 10 |
|
10 | 11 | enum ExternalPlayer: String, CaseIterable, Identifiable { |
11 | 12 | case none = "Default" |
@@ -168,7 +169,60 @@ struct PlayerSettingsView: View { |
168 | 169 | .pickerStyle(.menu) |
169 | 170 | } |
170 | 171 | } |
| 172 | + |
| 173 | + Section(header: Text("Testing")) { |
| 174 | + Button(action: { |
| 175 | + playTestVideo() |
| 176 | + }) { |
| 177 | + Text("Test Video Player") |
| 178 | + .foregroundColor(accentColorManager.currentAccentColor) |
| 179 | + } |
| 180 | + } |
171 | 181 | } |
172 | 182 | .navigationTitle("Media Player") |
173 | 183 | } |
| 184 | + |
| 185 | + private func playTestVideo() { |
| 186 | + let testUrlString = "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" |
| 187 | + guard let streamURL = URL(string: testUrlString) else { return } |
| 188 | + |
| 189 | + let external = store.externalPlayer |
| 190 | + if let schemeUrl = external.schemeURL(for: testUrlString), external != .none, UIApplication.shared.canOpenURL(schemeUrl) { |
| 191 | + UIApplication.shared.open(schemeUrl, options: [:], completionHandler: nil) |
| 192 | + return |
| 193 | + } |
| 194 | + |
| 195 | + let inAppPlayer = store.inAppPlayer |
| 196 | + |
| 197 | + if inAppPlayer == .mpv { |
| 198 | + let preset = PlayerPreset.presets.first |
| 199 | + let pvc = PlayerViewController( |
| 200 | + url: streamURL, |
| 201 | + preset: preset ?? PlayerPreset(title: "Default", summary: "", stream: nil, commands: []), |
| 202 | + headers: nil, |
| 203 | + subtitles: nil |
| 204 | + ) |
| 205 | + pvc.mediaInfo = .movie(id: 0, title: "Big Buck Bunny") |
| 206 | + pvc.modalPresentationStyle = .fullScreen |
| 207 | + |
| 208 | + if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene, |
| 209 | + let rootVC = windowScene.windows.first?.rootViewController { |
| 210 | + rootVC.topmostViewController().present(pvc, animated: true, completion: nil) |
| 211 | + } |
| 212 | + } else { |
| 213 | + let playerVC = NormalPlayer() |
| 214 | + let asset = AVURLAsset(url: streamURL) |
| 215 | + let item = AVPlayerItem(asset: asset) |
| 216 | + playerVC.player = AVPlayer(playerItem: item) |
| 217 | + playerVC.mediaInfo = .movie(id: 0, title: "Big Buck Bunny") |
| 218 | + playerVC.modalPresentationStyle = .fullScreen |
| 219 | + |
| 220 | + if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene, |
| 221 | + let rootVC = windowScene.windows.first?.rootViewController { |
| 222 | + rootVC.topmostViewController().present(playerVC, animated: true) { |
| 223 | + playerVC.player?.play() |
| 224 | + } |
| 225 | + } |
| 226 | + } |
| 227 | + } |
174 | 228 | } |
0 commit comments