Yandex Cloud
Search
Discuss with expertTry it for free
  • Customer Stories
  • Documentation
  • Blog
  • All Services
    • Cloud Interconnect
    • Cloud Backup
    • Cloud Registry
    • Yandex AI Studio
    • Compute Cloud
    • Object Storage
    • Managed Service for Kubernetes®
    • Yandex BareMetal
    • Smart Web Security
    • Security Deck
    • Managed Service for PostgreSQL
    • Managed Service for ClickHouse®
    • Monium
    • Cloud CDN
    • Network Load Balancer
    • Virtual Private Cloud
    • Cloud DNS
    • Application Load Balancer
    • Yandex Cloud Video
    • Stackland
    • Yandex Cloud Router
    • Yandex Managed Service for Trino
    • Managed Service for MySQL®
    • Managed Service for Valkey™
    • Managed Service for Apache Spark™
    • Yandex StoreDoc
    • Managed Service for OpenSearch
    • Managed Service for Apache Kafka®
    • Data Transfer
    • Yandex MPP Analytics Engine for PostgreSQL
    • Yandex Managed Service for Apache Airflow®
    • Data Processing
    • Yandex MetaData Hub
    • Managed Service for YDB
    • Managed Service for Sharded PostgreSQL
    • Managed Service for YTsaurus
    • Yandex WebSQL
    • DataLens
    • Yandex Search API
    • SpeechSense
    • SpeechKit
    • DataSphere
    • Vision OCR
    • Translate
    • Yandex Identity Hub
    • Key Management Service
    • Certificate Manager
    • Yandex Lockbox
    • Audit Trails
    • SmartCaptcha
    • Yandex SIEM
    • SourceCraft Code Assistant
    • Container Registry
    • Managed Service for GitLab
    • Managed Service for Prometheus®
    • Cloud Functions
    • API Gateway
    • Yandex Cloud Postbox
    • Message Queue
    • IoT Core
    • Data Streams
    • Serverless Containers
    • Cloud Notification Service
    • Identity and Access Management
    • Yandex Cloud Console
    • Resource Manager
    • Yandex Cloud Billing
    • Yandex Cloud Quota Manager
    • Cloud Apps
  • System Status
  • Marketplace
    • Featured
    • Infrastructure & Network
    • Data Platform
    • AI for business
    • Security
    • DevOps tools
    • Serverless
    • Monitoring & Resources
  • All Solutions
    • By industry
    • By use case
    • Economics and Pricing
    • Security
    • Technical Support
    • Start testing with double trial credits
    • Cloud credits to scale your IT product
    • Gateway to Russia
    • Cloud for Startups
    • Center for Technologies and Society
    • Yandex Cloud Partner program
    • Price calculator
    • Pricing plans
  • Customer Stories
  • Documentation
  • Blog
© 2026 Direct Cursus Technology L.L.C.
Yandex Cloud Video
    • Overview
    • Control
      • Overview
        • Getting started
          • Environment
          • PictureInPictureController
          • VideoSurface
          • YaPlayer
    • Browser autoplay policy
  • Access management
  • Pricing policy
  • Audit Trails events
  • Release notes
  • Troubleshooting

In this article:

  • Contents
  • Description
  • State monitoring
  • Properties
  • Methods
  • Examples
  1. Video Player
  2. SDK
  3. iOS
  4. CloudVideoPlayer
  5. YaPlayer

YaPlayer

Written by
Yandex Cloud
Updated at November 5, 2026
View in Markdown
  • Contents
  • Description
  • State monitoring
  • Properties
  • Methods
  • Examples
public final class YaPlayer

Main player object for video content playback.

ContentsContents

This page displays:

  • Properties
  • Methods

DescriptionDescription

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 monitoringState 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.

PropertiesProperties

Name

Type

Description

currentSource

ContentIdEndpoint?

Current playback source

vsid

String

View session ID

status

PlayerStatus

Current state of the player

watchedTime

Time

Total playback time for the current content since the source was last set

currentTime

Time?

Current playback position

duration

Time?

Total content duration

remainingBufferedTime

Time?

Duration of the buffered fragment starting at the current playback position

bufferTimeRanges

[Range<Time>]

Buffered time ranges

seekableTimeRanges

[Range<Time>]

Seekable time ranges

isMuted

Bool?

Current audio state

volume

Float?

Current volume level, from 0.0 to 1.0

videoType

VideoType?

Playback content type

onAir

Bool

true if playback is at the live edge of the broadcast timeline

latency

TimeInterval

Current playback latency behind live, in seconds

targetLatency

TimeInterval

Target playback latency behind live, in seconds

playbackSpeed

PlaybackSpeed

Current playback speed

MethodsMethods

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: true to mute, false to unmute.

public func set(volume: Float)

Sets volume level.

Parameters:

  • volume: Volume level from 0.0 (muted) to 1.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.

ExamplesExamples

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)

Was the article helpful?

Previous
VideoSurface
Next
PlayerError
© 2026 Direct Cursus Technology L.L.C.