YaPlayer
public final class YaPlayer
Основной объект плеера для воспроизведения видеоконтента.
Содержание
На этой странице:
Описание
YaPlayer управляет воспроизведением: загрузкой источника, запуском, паузой, перемоткой, звуком и скоростью.
Чтобы создать экземпляр плеера, вызовите метод player() структуры Environment.
Мониторинг состояния
Чтобы отслеживать изменения состояния плеера, подпишитесь на события с помощью Combine. Методы подписки возвращают объекты PlayerPublisher, которые передают новые значения подписчикам. Пример подписки приведен в разделе Отслеживание состояния плеера.
Во всех методах подписки параметр queue задает очередь доставки событий. По умолчанию используется главная очередь .main.
Свойства
|
Имя |
Тип |
Описание |
|
|
|
Текущий источник воспроизведения. |
|
|
|
Идентификатор сессии просмотра (View Session ID). |
|
|
|
Текущее состояние плеера. |
|
|
|
Суммарное время просмотра текущего контента с момента последней установки источника. |
|
|
|
Текущая позиция воспроизведения. |
|
|
|
Общая длительность контента. |
|
|
|
Длительность буферизованного фрагмента, начиная с текущей позиции воспроизведения. |
|
|
|
Буферизованные диапазоны времени. |
|
|
|
Доступные для перемотки диапазоны времени. |
|
|
|
Текущее состояние звука. |
|
|
|
Текущий уровень громкости от |
|
|
|
Тип воспроизводимого контента. |
|
|
|
|
|
|
|
Текущая задержка воспроизведения относительно прямого эфира, в секундах. |
|
|
|
Целевая задержка воспроизведения относительно прямого эфира, в секундах. |
|
|
|
Текущая скорость воспроизведения. |
Методы
public func set<AdditionalParams: Encodable>(source endpoint: ContentIdEndpoint, config: PlaybackConfig, additionalParams: AdditionalParams)
Устанавливает источник воспроизведения с дополнительными параметрами телеметрии.
public func set(source endpoint: ContentIdEndpoint, config: PlaybackConfig = .base)
Устанавливает источник воспроизведения.
public func reset()
Сбрасывает текущий источник и останавливает воспроизведение.
public func play()
Запускает воспроизведение.
public func pause()
Ставит воспроизведение на паузу.
public func seek(to time: Time) async -> Bool
Перематывает воспроизведение на указанную позицию.
Параметры:
time— целевая позиция.
Возвращаемое значение: true, если перемотка выполнена успешно.
public func set(isMute: Bool)
Включает или отключает звук.
Параметры:
isMute:true— выключить звук,false— включить.
public func set(volume: Float)
Устанавливает уровень громкости.
Параметры:
volume— уровень громкости от0.0(тишина) до1.0(максимум).
public func set(playbackSpeed: PlaybackSpeed) throws
Устанавливает скорость воспроизведения.
Параметры:
playbackSpeed— желаемая скорость воспроизведения.
Исключения: ошибка, если заданная скорость не поддерживается для текущего контента.
public func canSet(playbackSpeed: PlaybackSpeed) -> Bool
Проверяет, поддерживает ли текущий контент заданную скорость воспроизведения.
Параметры:
playbackSpeed— скорость для проверки.
Возвращаемое значение: true, если скорость доступна для текущего контента.
public func playerStatusDidChange(queue: DispatchQueue = .main) -> PlayerPublisher<PlayerStatus>
Возвращает объект PlayerPublisher для отслеживания изменений состояния плеера.
public func bufferTimeRangesDidChange(queue: DispatchQueue = .main) -> PlayerPublisher<[Range<Time>]>
Возвращает объект PlayerPublisher для отслеживания изменений буферизованных диапазонов.
public func seekableTimeRangeDidChange(queue: DispatchQueue = .main) -> PlayerPublisher<[Range<Time>]>
Возвращает объект PlayerPublisher для отслеживания изменений диапазонов, доступных для перемотки.
public func periodicTimePublisher(interval: TimeInterval, queue: DispatchQueue = .main) -> PlayerPublisher<TimeInterval>
Возвращает объект PlayerPublisher для периодического получения позиции воспроизведения.
Параметры:
interval— интервал обновления позиции воспроизведения в секундах.
public func isMutedDidChange(queue: DispatchQueue = .main) -> PlayerPublisher<Bool>
Возвращает объект PlayerPublisher для отслеживания изменений состояния звука.
public func volumeDidChange(queue: DispatchQueue = .main) -> PlayerPublisher<Float>
Возвращает объект PlayerPublisher для отслеживания изменений уровня громкости.
public func errorDidDetected(queue: DispatchQueue = .main) -> PlayerPublisher<PlayerError>
Возвращает объект PlayerPublisher для получения ошибок воспроизведения.
public func goToLive() async throws
Перемещает позицию воспроизведения на правую границу шкалы времени трансляции — к прямому эфиру.
Исключения: ошибка, если операция невозможна, например при воспроизведении видео по запросу (VOD).
public func playbackSpeedDidChange(queue: DispatchQueue = .main) -> PlayerPublisher<PlaybackSpeed>
Возвращает объект PlayerPublisher для отслеживания изменений скорости воспроизведения.
Примеры
let environment = Environment(configuration: Configuration(from: From(raw: "my-app")))
let player = environment.player()
// Подключить поверхность для отображения
let surface = VideoSurface()
surface.attach(player: player)
// Установить источник и начать воспроизведение
if let source = ContentIdEndpoint(url: URL(string: "https://runtime.video.cloud.yandex.net/player/...")!) {
player.set(source: source, config: PlaybackConfig(autoplay: true, isMuted: false))
}
player.playerStatusDidChange()
.sink { status in
switch status {
case .play: showPlayButton(false)
case .pause: showPlayButton(true)
case .buffering: showSpinner(true)
case .fatal: showErrorScreen()
default: break
}
}
.store(in: &cancellables)