SDK видеоплеера для iOS
С помощью SDK
Для работы с SDK нужна среда разработки Xcode
Подключение библиотеки SDK видеоплеера
-
В окне Xcode навигатора проектов (Project Navigator) выберите свой проект.
-
На верхней панели нажмите File и выберите Add Package Dependencies...
-
В строке поиска
введитеhttps://github.com/yandex-cloud/cloud-video-player-ios-sdk/и выберите пакетcloud-video-player-ios-sdk. -
В поле Dependency Rule выберите Up to Next Major Version и укажите версию
0.1.6. -
В поле Add to Project выберите проект, к которому вы хотите подключить библиотеки, и нажмите Add Package.
-
Во всплывающем окне укажите, к какому таргету в проекте подключить библиотеки, и нажмите Add Package.
Пакет содержит библиотеки:
CloudVideoPlayer— основная библиотека SDK видеоплеера для iOS.CloudVideoPlayerUI— дополнительная библиотека с набором интерфейсных элементов (оболочка видеоплеера).
-
В окне Xcode навигатора проектов (Project Navigator) выберите свой проект.
-
Откройте
Package.swift. -
Добавьте в массив
dependenciesследующую зависимость:dependencies: [ .package( url: "https://github.com/yandex-cloud/cloud-video-player-ios-sdk/", from: "0.1.6" ) ], -
Добавьте библиотеки в массив
dependenciesконкретного таргета:.target( name: "MyTargetName", dependencies: [ .product(name: "CloudVideoPlayer", package: "cloud-video-player-ios-sdk"), .product(name: "CloudVideoPlayerUI", package: "cloud-video-player-ios-sdk") ] ),Где:
CloudVideoPlayer— основная библиотека SDK видеоплеера для iOS.CloudVideoPlayerUI— дополнительная библиотека с набором интерфейсных элементов (оболочка видеоплеера).
-
Сохраните изменения.
Импорт библиотек
Чтобы импортировать библиотеки, добавьте в файл с кодом следующие строки:
import CloudVideoPlayer
import CloudVideoPlayerUI
Использование SDK
Настройте запуск воспроизведения
-
Импортируйте библиотеку в файле:
import CloudVideoPlayer -
Создайте объекты
Configuration,EnvironmentиYaPlayer:let environment = Environment(configuration: Configuration(from: From(raw: "your-app-bundle"))) class ViewController: UIViewController { let player = environment.player() } -
Создайте UIView-компонент
VideoSurface, добавьте его в иерархию и подключите к экземпляру плеера:let surface = VideoSurface() override func loadView() { super.loadView() self.view.addSubview(surface) surface.frame = UIScreen.main.bounds } override func viewDidLoad() { super.viewDidLoad() surface.attach(player: player) } -
Запустите воспроизведение:
if let source = ContentIdEndpoint(url: URL(string: "https://runtime.video.cloud.yandex.net/player/...")!) { player.set(source: source) player.play() }
Где https://runtime.video.cloud.yandex.net/player/... — ссылка на видео, трансляцию или плейлист.
Полный код настройки запуска воспроизведения
import CloudVideoPlayer
let environment = Environment(configuration: Configuration(from: From(raw: "your-app-bundle")))
class ViewController: UIViewController {
let player = environment.player()
let surface = VideoSurface()
override func loadView() {
super.loadView()
self.view.addSubview(surface)
surface.frame = UIScreen.main.bounds
}
override func viewDidLoad() {
super.viewDidLoad()
surface.attach(player: player)
if let source = ContentIdEndpoint(url: URL(string: "https://runtime.video.cloud.yandex.net/player/...")!) {
player.set(source: source)
player.play()
}
}
}
Где https://runtime.video.cloud.yandex.net/player/... — ссылка на видео, трансляцию или плейлист.
Подключение оболочки видеоплеера
-
Импортируйте библиотеку в файле:
import CloudVideoPlayerUI -
Создайте UIView-компонент
VideoView, добавьте его в иерархию и подключите к экземпляру плеера:let videoView = VideoView() override func loadView() { super.loadView() self.view.addSubview(videoView) videoView.frame = UIScreen.main.bounds } override func viewDidLoad() { super.viewDidLoad() videoView.attach(player: player) }
Полный код подключения оболочки видеоплеера
import CloudVideoPlayerUI
let videoView = VideoView()
override func loadView() {
super.loadView()
self.view.addSubview(videoView)
videoView.frame = UIScreen.main.bounds
}
override func viewDidLoad() {
super.viewDidLoad()
videoView.attach(player: player)
}
Воспроизведение в SwiftUI
Чтобы встроить плеер в SwiftUI, оберните VideoView из CloudVideoPlayerUI в UIViewRepresentable и подключите к нему экземпляр YaPlayer, созданный через Environment.
-
Импортируйте библиотеки в файле:
import SwiftUI import CloudVideoPlayer import CloudVideoPlayerUI -
Создайте объекты
EnvironmentиYaPlayer:let environment = Environment(configuration: Configuration(from: From(raw: "your-app-bundle"))) final class PlayerViewModel: ObservableObject { let player: YaPlayer = environment.player() init() { guard let url = URL(string: "https://runtime.video.cloud.yandex.net/player/..."), let source = ContentIdEndpoint(url: url) else { return } player.set(source: source) player.play() } } -
Создайте тип
UIViewRepresentable, который создаетVideoViewи вызываетattach(player:):struct VideoViewRepresentable: UIViewRepresentable { let player: YaPlayer func makeUIView(context: Context) -> VideoView { let view = VideoView() view.attach(player: player) return view } func updateUIView(_ uiView: VideoView, context: Context) { uiView.attach(player: player) } } -
Добавьте обертку в иерархию SwiftUI:
struct ContentView: View { @StateObject private var viewModel = PlayerViewModel() var body: some View { VideoViewRepresentable(player: viewModel.player) .aspectRatio(16 / 9, contentMode: .fit) .frame(maxHeight: .infinity, alignment: .top) } }
Где https://runtime.video.cloud.yandex.net/player/... — ссылка на видео, трансляцию или плейлист.
Полный код воспроизведения в SwiftUI
import SwiftUI
import CloudVideoPlayer
import CloudVideoPlayerUI
let environment = Environment(configuration: Configuration(from: From(raw: "your-app-bundle")))
final class PlayerViewModel: ObservableObject {
let player: YaPlayer = environment.player()
init() {
guard
let url = URL(string: "https://runtime.video.cloud.yandex.net/player/..."),
let source = ContentIdEndpoint(url: url)
else {
return
}
player.set(source: source)
player.play()
}
}
struct VideoViewRepresentable: UIViewRepresentable {
let player: YaPlayer
func makeUIView(context: Context) -> VideoView {
let view = VideoView()
view.attach(player: player)
return view
}
func updateUIView(_ uiView: VideoView, context: Context) {
uiView.attach(player: player)
}
}
struct ContentView: View {
@StateObject private var viewModel = PlayerViewModel()
var body: some View {
VideoViewRepresentable(player: viewModel.player)
.aspectRatio(16 / 9, contentMode: .fit)
.frame(maxHeight: .infinity, alignment: .top)
}
}
Где https://runtime.video.cloud.yandex.net/player/... — ссылка на видео, трансляцию или плейлист.
См. также
Справочники по библиотекам SDK:
- CloudVideoPlayer — основная библиотека с объектами
Environment,YaPlayer,VideoSurfaceи настройками воспроизведения. - CloudVideoPlayerUI — дополнительная библиотека интерфейсных элементов с готовой оболочкой плеера
VideoView.