<!--
{
  "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/AVPlaybackCoordinator",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "AVFoundation"
    ],
    "preciseIdentifier" : "c:objc(cs)AVPlaybackCoordinator"
  },
  "title" : "AVPlaybackCoordinator"
}
-->

# AVPlaybackCoordinator

An object that coordinates the playback of players in a connected group.

```
class AVPlaybackCoordinator
```

## Overview

The framework provides two playback coordinator subclasses that manage different types of player objects:

- [`AVPlayerPlaybackCoordinator`](/documentation/AVFoundation/AVPlayerPlaybackCoordinator) coordinates the state of [`AVPlayer`](/documentation/AVFoundation/AVPlayer) objects. If your app uses [`AVPlayer`](/documentation/AVFoundation/AVPlayer), continue to use its standard interfaces to control playback. The coordinator intercepts changes to the player’s rate and time, and propagates them to other players in the group.
- [`AVDelegatingPlaybackCoordinator`](/documentation/AVFoundation/AVDelegatingPlaybackCoordinator) coordinates the state of custom player objects. If your app uses a custom player, such as one that renders media using [`AVSampleBufferDisplayLayer`](/documentation/AVFoundation/AVSampleBufferDisplayLayer) and [`AVSampleBufferAudioRenderer`](/documentation/AVFoundation/AVSampleBufferAudioRenderer), use this object to coordinate group playback. Adopt the coordinator’s delegate protocol so that your player responds to the commands that the coordinator issues.

> Note:
> Use the <doc://com.apple.documentation/documentation/GroupActivities> framework to connect a playback coordinator to its peers.

## Topics

### Configuring playback policies

[`participantLimitForWaitingOutSuspensions(withReason:)`](/documentation/AVFoundation/AVPlaybackCoordinator/participantLimitForWaitingOutSuspensions(withReason:))

Returns the limit on the number of partipants that a group may contain before the coordinator stops waiting on suspensions that occur for a particular reason.

[`setParticipantLimit(_:forWaitingOutSuspensionsWithReason:)`](/documentation/AVFoundation/AVPlaybackCoordinator/setParticipantLimit(_:forWaitingOutSuspensionsWithReason:))

Sets a limit on the number of partipants that a group may contain before the coordinator stops waiting on suspensions that occur for a particular reason.

[`suspensionReasonsThatTriggerWaiting`](/documentation/AVFoundation/AVPlaybackCoordinator/suspensionReasonsThatTriggerWaiting)

The reasons that cause a coordinator to suspend playback.

[`pauseSnapsToMediaTimeOfOriginator`](/documentation/AVFoundation/AVPlaybackCoordinator/pauseSnapsToMediaTimeOfOriginator)

A Boolean value that indicates whether participants mirror the originator’s stop time when they pause.

### Suspending state coordination

[`beginSuspension(for:)`](/documentation/AVFoundation/AVPlaybackCoordinator/beginSuspension(for:))

Tells the coordinator to stop sending playback commands temporarily when the playback object disconnects from the group activity.

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

An object that represents a temporary suspension of coordinated playback.

[`expectedItemTime(atHostTime:)`](/documentation/AVFoundation/AVPlaybackCoordinator/expectedItemTime(atHostTime:))

Returns a time in the current item’s timeline that the coordinator expects to play at the specified host time.

### Observing suspension reasons

[`suspensionReasons`](/documentation/AVFoundation/AVPlaybackCoordinator/suspensionReasons)

The reasons a coordinator is currently unable to participate in a group playback activity.

[`suspensionReasonsDidChangeNotification`](/documentation/AVFoundation/AVPlaybackCoordinator/suspensionReasonsDidChangeNotification)

A notification that the coordinator posts when its suspension reasons change.

### Observing other participants

[`otherParticipants`](/documentation/AVFoundation/AVPlaybackCoordinator/otherParticipants)

The identifiers of the other participants in a group.

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

An object that represents a participant in a coordinated playback session.

[`otherParticipantsDidChangeNotification`](/documentation/AVFoundation/AVPlaybackCoordinator/otherParticipantsDidChangeNotification)

A notification that the coordinator posts when its other participants change.

### Coordinating with group sessions

[`coordinateWithSession(_:)`](/documentation/AVFoundation/AVPlaybackCoordinator/coordinateWithSession(_:))

Begins coordination of a player with a group session.



---

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)