---
title: "play(at:)"
framework: avfaudio
role: symbol
role_heading: Instance Method
path: "avfaudio/avaudioplayernode/play(at:)"
---

# play(at:)

Starts or resumes playback at a time you specify.

## Declaration

```swift
func play(at when: AVAudioTime?)
```

## Parameters

- `when`: The node time to start or resume playback. Passing nil starts playback immediately.

## Discussion

Discussion This node is initially in a paused state. The framework enqueues your requests to play buffers or file segments, and any necessary decoding begins immediately. Playback doesn’t begin until the player starts playing through this method. The following example code shows how to start a player 0.5 seconds in the future: // Start the engine and player. NSError *nsErr = nil; [_engine startAndReturnError:&nsErr]; if (!nsErr) {     const float kStartDelayTime = 0.5; // sec     AVAudioFormat *outputFormat = [_player outputFormatForBus:0];     AVAudioFramePosition startSampleTime = _player.lastRenderTime.sampleTime + kStartDelayTime * outputFormat.sampleRate;     AVAudioTime *startTime = [AVAudioTime timeWithSampleTime:startSampleTime atRate:outputFormat.sampleRate];     [_player playAtTime:startTime]; }

## See Also

### Controlling Playback

- [prepare(withFrameCount:)](avfaudio/avaudioplayernode/prepare(withframecount:).md)
- [playAudio()](avfaudio/avaudioplayernode/playaudio().md)
- [playAudio(at:)](avfaudio/avaudioplayernode/playaudio(at:).md)
- [play()](avfaudio/avaudioplayernode/play().md)
- [isPlaying](avfaudio/avaudioplayernode/isplaying.md)
- [pause()](avfaudio/avaudioplayernode/pause().md)
- [stop()](avfaudio/avaudioplayernode/stop().md)
