<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: 16.0.0 -",
    "macOS: 13.0.0 -",
    "tvOS: 16.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AVFoundation",
  "identifier" : "/documentation/AVFoundation/AVVideoComposition/videoComposition(withPropertiesOf:completionHandler:)",
  "metadataVersion" : "0.1.0",
  "role" : "Type Method",
  "symbol" : {
    "kind" : "Type Method",
    "modules" : [
      "AVFoundation"
    ],
    "preciseIdentifier" : "c:objc(cs)AVVideoComposition(cm)videoCompositionWithPropertiesOfAsset:completionHandler:"
  },
  "title" : "videoComposition(withPropertiesOf:completionHandler:)"
}
-->

# videoComposition(withPropertiesOf:completionHandler:)

Returns a new video composition that’s configured to present the video tracks of the specified asset.

```
class func videoComposition(withPropertiesOf asset: AVAsset, completionHandler: @escaping @Sendable (AVVideoComposition?, (any Error)?) -> Void)
```

## Parameters

`asset`

An asset to create a video composition for.

`completionHandler`

A callback the system invokes with the created video composition, or an error if a failure occurs.

## Discussion

This method creates the video composition object and configures it with the values and instructions suitable for presenting the video tracks of the specified asset. The returned object contains instructions that respect the spatial properties and time ranges of the specified asset’s video tracks. It also configures the object properties in the following way:

- The value of the [`frameDuration`](/documentation/AVFoundation/AVVideoComposition/frameDuration) property is short enough to accommodate the greatest nominal frame rate value among the asset’s video tracks, as indicated by the [`nominalFrameRate`](/documentation/AVFoundation/AVPartialAsyncProperty/nominalFrameRate) property of each track. If all its tracks have a nominal frame rate of `0`, it uses a frame rate of 30 frames per second, with the frame duration set accordingly.
- The value of the [`renderSize`](/documentation/AVFoundation/AVVideoComposition/renderSize) property depends on whether the asset is an [`AVComposition`](/documentation/AVFoundation/AVComposition) object. For an [`AVComposition`](/documentation/AVFoundation/AVComposition), the render size is the composition’s [`naturalSize`](/documentation/AVFoundation/AVComposition/naturalSize) value, and for other assets, its a size large enough to encompass all of its video tracks.
- The value of the [`renderScale`](/documentation/AVFoundation/AVVideoComposition/renderScale) property is `1.0`.
- The value of the [`animationTool`](/documentation/AVFoundation/AVVideoComposition/animationTool) property is `nil`.

> Note:
> If you specify an asset that doesn’t contain video tracks, this method returns a video composition with no instructions.

---

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)