93. Открываем видео по ссылке
Посмотрим как в SwiftUI можно воспроизводить видео по ссылке с использованием VideoPlayer и AVPlayerViewController + UIViewControllerRepresentable.
План
- Найдем демо-видео
- Сделаем задачу с использованием
VideoPlayer - Сделаем задачу с использованием
AVPlayerViewController
Демо-видео
В качестве демо будем использовать отрывок трейлера второго сезона "Бункера" по этой ссылке. Если на момент прочтения статьи ссылка не работает, ничего страшного - можно использовать ссылку на любое другое видео, которое открывается без специального сайта в браузере.
Используем VideoPlayer
Как и предлагают в документации, мы сделаем стейт-свойство для плеера и передадим его в VideoPlayer:
private let demoURL = URL(string: "https://leonardo.osnova.io/4afddc22-8d03-54d3-882f-5aa1fed0765c/-/format/mp4")!
struct DefaultVideoPlayerExample: View {
@State private var player = AVPlayer(url: demoURL)
var body: some View {
VideoPlayer(player: player)
.disabled(true) // выключает элементы управления плеером
.ignoresSafeArea()
.onAppear {
player.isMuted = true // выключает звук у видео
player.play() // запускает видео при появлении экрана
}
}
}
Для выключения элементов управления плеером используем стандартный модификатор .disabled, и при появлении вьюхи выключаем звук вместе с запуском видео.
Используем AVPlayerViewController
Сначала сделаем репрезентабл-вьюху для контроллера из UIKit:
struct AVPlayerVCRepresentable: UIViewControllerRepresentable {
let player: AVPlayer
func makeUIViewController(context: Context) -> AVPlayerViewController {
let controller = AVPlayerViewController()
controller.player = player
// выключает элементы управления плеером
controller.showsPlaybackControls = false
// Аналогично настройке картинок:
// .resizeAspectFill = .scaleToFill
// .resizeAspect = .scaleToFit
controller.videoGravity = .resizeAspect
return controller
}
func updateUIViewController(_ uiViewController: AVPlayerViewController, context: Context) {}
}
Для UIKit-экрана настроек, конечно же, намного больше, почитать можно в документации. Для нашего примера используем настройки как и в первой вьюхе, т.е. просто выключаем элементы управления плеером.
Делаем вьюху для этого примера:
struct AVPlayerSwiftUIDemo: View {
@State private var player = AVPlayer(url: demoURL)
var body: some View {
AVPlayerVCRepresentable(player: player)
.ignoresSafeArea()
.onAppear {
player.isMuted = true // выключает звук у видео
player.play() // запускает видео при появлении экрана
}
}
}
Заключение
Вот таким нехитрым способом можно открыть видео по ссылке в SwiftUI.
Если не выключать элементы управления плеером, то пользователь сможет делать все стандартные операции, доступные в обычном видеоплеере на iOS.
Звук выключили тоже просто для примера.
Код для этой статьи можно посмотреть тут, другие статьи по разработке - тут, а про инвестиции - тут.