<!--
{
  "availability" : [
    "iOS: 15.0.0 -",
    "iPadOS: 15.0.0 -",
    "macCatalyst: 15.0.0 -",
    "macOS: 12.0.0 -",
    "tvOS: 15.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AVFoundation",
  "identifier" : "/documentation/AVFoundation/AVPlayerPlaybackCoordinator",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "AVFoundation"
    ],
    "preciseIdentifier" : "c:objc(cs)AVPlayerPlaybackCoordinator"
  },
  "title" : "AVPlayerPlaybackCoordinator"
}
-->

# AVPlayerPlaybackCoordinator

A playback coordinator subclass that coordinates the playback of player objects in a connected group.

```
class AVPlayerPlaybackCoordinator
```

## Overview

This object coordinates the state of [`AVPlayer`](/documentation/AVFoundation/AVPlayer) objects. You don’t create an instance of the coordinator, but instead access the player’s instance through its [`playbackCoordinator`](/documentation/AVFoundation/AVPlayer/playbackCoordinator) property.

Use the standard interfaces of [`AVPlayer`](/documentation/AVFoundation/AVPlayer) to control playback in your app. The coordinator automatically intercepts calls that affect transport control state, like [`setRate(_:time:atHostTime:)`](/documentation/AVFoundation/AVPlayer/setRate(_:time:atHostTime:)), [`pause()`](/documentation/AVFoundation/AVPlayer/pause()), and [`seek(to:completionHandler:)`](/documentation/AVFoundation/AVPlayer/seek(to:completionHandler:)-75bls), and propagates them to other participants in the group when appropriate. Similarly, the coordinator observes rate and time changes from other participants and imposes them on the player. If this occurs, the player item posts notifications that identify the originating participant.

![A diagram representing two devices that each contain representations of the app, AVPlayer, AVPlayerItem, and AVPlayerPlaybackCoordinator relationships. The two AVPlayerPlaybackCoordinator items have a two-way dotted-line connection between the two devices.](images/com.apple.avfoundation/media-3839391@2x.png)

This object may automatically suspend coordinated playback when a system state change causes the player’s [`timeControlStatus`](/documentation/AVFoundation/AVPlayer/timeControlStatus-swift.property) value to change from a playing state to a waiting or paused state. A suspension that begins because the player enters a waiting state due to an event like a network stall or interstitial playback, ends automatically when the player finishes waiting. However, if the system pauses playback due to a system state change, such as an audio session interruption, the suspension ends only after the player’s rate changes back to nonzero.

> Important:
> A playback coordinator doesn’t manage the playback queue of connected players. You need to implement custom logic to enqueue the same item across all connected players.

## Topics

### Accessing the player

[`player`](/documentation/AVFoundation/AVPlayerPlaybackCoordinator/player)

A player that participates in coordinated playback.

### Configuring the delegate

[`delegate`](/documentation/AVFoundation/AVPlayerPlaybackCoordinator/delegate)

A delegate object for the playback coordinator.

[`AVPlayerPlaybackCoordinatorDelegate`](/documentation/AVFoundation/AVPlayerPlaybackCoordinatorDelegate)

A protocol that defines the methods to implement to participate in playback coordination.

### Managing coordination

[`coordinate(using:)`](/documentation/AVFoundation/AVPlayerPlaybackCoordinator/coordinate(using:))

Connects the playback coordinator to the coordination medium

[`playbackCoordinationMedium`](/documentation/AVFoundation/AVPlayerPlaybackCoordinator/playbackCoordinationMedium)

The AVPlaybackCoordinationMedium this playback coordinator is connected to.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)