YaPlayer
public final class YaPlayer
Main player object for video content playback.
Contents
This page displays:
Description
YaPlayer manages playback, including source loading, play, pause, rewind/fast forward, volume, and payback speed.
To create a player instance, call the player() method on the Environment struct.
State monitoring
To monitor changes in the player’s state, subscribe to events using Combine. The subscription methods return PlayerPublisher objects that provide subscribers with updated values. For a subscription example, see Monitoring the player state.
All subscription methods use the queue parameter to specify the event delivery queue. Its default value is .main.
Properties
|
Name |
Type |
Description |
|
|
|
Current playback source |
|
|
|
View session ID |
|
|
|
Current state of the player |
|
|
|
Total playback time for the current content since the source was last set |
|
|
|
Current playback position |
|
|
|
Total content duration |
|
|
|
Duration of the buffered fragment starting at the current playback position |
|
|
|
Buffered time ranges |
|
|
|
Seekable time ranges |
|
|
|
Current audio state |
|
|
|
Current volume level, from |
|
|
|
Playback content type |
|
|
|
|
|
|
|
Current playback latency behind live, in seconds |
|
|
|
Target playback latency behind live, in seconds |
|
|
|
Current playback speed |
Methods
public func set<AdditionalParams: Encodable>(source endpoint: ContentIdEndpoint, config: PlaybackConfig, additionalParams: AdditionalParams)
Sets a playback source with additional telemetry parameters.
public func set(source endpoint: ContentIdEndpoint, config: PlaybackConfig = .base)
Sets a playback source.
public func reset()
Resets the current source and stops playback.
public func play()
Starts playback.
public func pause()
Pauses playback.
public func seek(to time: Time) async -> Bool
Rewinds/fast forwards to a specified position.
Parameters:
time: Target position.
Return value: true if rewind/fast forward is successful.
public func set(isMute: Bool)
Enables or disables audio.
Parameters:
isMute:trueto mute,falseto unmute.
public func set(volume: Float)
Sets volume level.
Parameters:
volume: Volume level from0.0(muted) to1.0(maximum).
public func set(playbackSpeed: PlaybackSpeed) throws
Sets playback speed.
Parameters:
playbackSpeed: Desired playback speed.
Exceptions: Throws an error if the specified speed is not supported for the current content.
public func canSet(playbackSpeed: PlaybackSpeed) -> Bool
Checks whether current content supports the specified playback speed.
Parameters:
playbackSpeed: Speed to check.
Return value: true if the speed is available for the current content.
public func playerStatusDidChange(queue: DispatchQueue = .main) -> PlayerPublisher<PlayerStatus>
Returns a PlayerPublisher object to monitor changes in the player state.
public func bufferTimeRangesDidChange(queue: DispatchQueue = .main) -> PlayerPublisher<[Range<Time>]>
Returns a PlayerPublisher object to monitor changes in the buffered ranges.
public func seekableTimeRangeDidChange(queue: DispatchQueue = .main) -> PlayerPublisher<[Range<Time>]>
Returns a PlayerPublisher object to monitor changes in the seekable ranges.
public func periodicTimePublisher(interval: TimeInterval, queue: DispatchQueue = .main) -> PlayerPublisher<TimeInterval>
Returns a PlayerPublisher object to periodically retrieve the playback position.
Parameters:
interval: Playback position update interval, in seconds.
public func isMutedDidChange(queue: DispatchQueue = .main) -> PlayerPublisher<Bool>
Returns a PlayerPublisher object to monitor changes in the audio state.
public func volumeDidChange(queue: DispatchQueue = .main) -> PlayerPublisher<Float>
Returns a PlayerPublisher object to monitor changes in the volume level.
public func errorDidDetected(queue: DispatchQueue = .main) -> PlayerPublisher<PlayerError>
Returns a PlayerPublisher object to get notified of playback errors.
public func goToLive() async throws
Moves the playback position to the live edge of the broadcast timeline.
Exceptions: Throws an error if the operation is not available, e.g., during video-on-demand (VOD) playback.
public func playbackSpeedDidChange(queue: DispatchQueue = .main) -> PlayerPublisher<PlaybackSpeed>
Returns a PlayerPublisher object to monitor changes in the playback speed.
Examples
let environment = Environment(configuration: Configuration(from: From(raw: "my-app")))
let player = environment.player()
// Connecting a surface for content
let surface = VideoSurface()
surface.attach(player: player)
// Setting a source and starting playback
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)