---
title: AVMutableComposition
framework: avfoundation
role: symbol
role_heading: Class
path: avfoundation/avmutablecomposition
---

# AVMutableComposition

An object that you use to create a new composition from existing assets.

## Declaration

```swift
class AVMutableComposition
```

## Overview

Overview Use this object to add and remove composition tracks, and add, remove, and scale their time ranges. You can make an immutable snapshot of a mutable composition for playback and inspection as follows: // Use a mutable composition object you create. let mutableComposition = AVMutableComposition()          guard let composition = mutableComposition.copy() as? AVComposition else { return }          // Create a player item to inspect and play the composition. let playerItem = AVPlayerItem(asset: composition)

## Topics

### Creating a composition

- [init(urlAssetInitializationOptions:)](avfoundation/avmutablecomposition/init(urlassetinitializationoptions:)-rh4y.md)

### Loading tracks

- [tracks](avfoundation/avpartialasyncproperty/tracks-92p4a.md)
- [loadTrack(withTrackID:completionHandler:)](avfoundation/avmutablecomposition/loadtrack(withtrackid:completionhandler:).md)
- [loadTracks(withMediaType:completionHandler:)](avfoundation/avmutablecomposition/loadtracks(withmediatype:completionhandler:).md)
- [loadTracks(withMediaCharacteristic:completionHandler:)](avfoundation/avmutablecomposition/loadtracks(withmediacharacteristic:completionhandler:).md)

### Accessing tracks

- [tracks](avfoundation/avmutablecomposition/tracks.md)
- [track(withTrackID:)](avfoundation/avmutablecomposition/track(withtrackid:).md)
- [tracks(withMediaType:)](avfoundation/avmutablecomposition/tracks(withmediatype:).md)
- [tracks(withMediaCharacteristic:)](avfoundation/avmutablecomposition/tracks(withmediacharacteristic:).md)

### Managing composition tracks

- [mutableTrack(compatibleWith:)](avfoundation/avmutablecomposition/mutabletrack(compatiblewith:).md)
- [addMutableTrack(withMediaType:preferredTrackID:)](avfoundation/avmutablecomposition/addmutabletrack(withmediatype:preferredtrackid:).md)
- [removeTrack(_:)](avfoundation/avmutablecomposition/removetrack(_:).md)

### Managing Cinematic tracks

- [addTracks(for:preferredStartingTrackID:)](avfoundation/avmutablecomposition/addtracks(for:preferredstartingtrackid:).md)

### Managing time ranges

- [removeTimeRange(_:)](avfoundation/avmutablecomposition/removetimerange(_:).md)
- [scaleTimeRange(_:toDuration:)](avfoundation/avmutablecomposition/scaletimerange(_:toduration:).md)
- [insertEmptyTimeRange(_:)](avfoundation/avmutablecomposition/insertemptytimerange(_:).md)
- [insertTimeRange(_:of:at:completionHandler:)](avfoundation/avmutablecomposition/inserttimerange(_:of:at:completionhandler:).md)
- [insertTimeRange(_:of:at:)](avfoundation/avmutablecomposition/inserttimerange(_:of:at:).md)

### Configuring video size

- [naturalSize](avfoundation/avmutablecomposition/naturalsize.md)

### Instance methods

- [insertTimeRange(_:of:at:isolation:)](avfoundation/avmutablecomposition/inserttimerange(_:of:at:isolation:).md)

### Initializers

- [init(URLAssetInitializationOptions:)](avfoundation/avmutablecomposition/init(urlassetinitializationoptions:)-6codz.md)

## Relationships

### Inherits From

- [AVComposition](avfoundation/avcomposition.md)

### Conforms To

- [AVAsynchronousKeyValueLoading](avfoundation/avasynchronouskeyvalueloading.md)
- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCopying](foundation/nscopying.md)
- [NSMutableCopying](foundation/nsmutablecopying.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Mutable compositions

- [AVMutableCompositionTrack](avfoundation/avmutablecompositiontrack.md)
