---
title: AVAssetWriter
framework: avfoundation
role: symbol
role_heading: Class
path: avfoundation/avassetwriter
---

# AVAssetWriter

An object that writes media data to a container file.

## Declaration

```swift
class AVAssetWriter
```

## Overview

Overview You use an asset writer to write media to file formats such as the QuickTime movie file format and MPEG-4 file format. An asset writer automatically supports interleaving media data from concurrent tracks for efficient playback and storage. It can reencode media samples it writes to the output file, and may also write collections of metadata to the output file. important: An asset writer is a single-use object that writes one output file. Create multiple asset writer instances if your app requires writing multiple output files.

## Topics

### Creating an asset writer

- [init(url:fileType:)](avfoundation/avassetwriter/init(url:filetype:)-xt34.md)
- [init(outputURL:fileType:)](avfoundation/avassetwriter/init(outputurl:filetype:).md)
- [init(contentType:)](avfoundation/avassetwriter/init(contenttype:).md)

### Configuring inputs

- [inputs](avfoundation/avassetwriter/inputs.md)
- [availableMediaTypes](avfoundation/avassetwriter/availablemediatypes.md)
- [canApply(outputSettings:forMediaType:)](avfoundation/avassetwriter/canapply(outputsettings:formediatype:).md)
- [canAdd(_:)](avfoundation/avassetwriter/canadd(_:)-6al7j.md)
- [add(_:)](avfoundation/avassetwriter/add(_:)-4c4d0.md)

### Configuring input receivers

- [inputReceiver(for:)](avfoundation/avassetwriter/inputreceiver(for:).md)
- [inputCaptionReceiver(for:)](avfoundation/avassetwriter/inputcaptionreceiver(for:).md)
- [inputCaptionReceiverRequestingMultiPass(for:)](avfoundation/avassetwriter/inputcaptionreceiverrequestingmultipass(for:).md)
- [inputMetadataReceiver(for:)](avfoundation/avassetwriter/inputmetadatareceiver(for:).md)
- [inputMetadataReceiverRequestingMultiPass(for:)](avfoundation/avassetwriter/inputmetadatareceiverrequestingmultipass(for:).md)
- [inputPixelBufferReceiver(for:pixelBufferAttributes:)](avfoundation/avassetwriter/inputpixelbufferreceiver(for:pixelbufferattributes:).md)
- [inputPixelBufferReceiverRequestingMultiPass(for:pixelBufferAttributes:)](avfoundation/avassetwriter/inputpixelbufferreceiverrequestingmultipass(for:pixelbufferattributes:).md)
- [inputReceiverRequestingMultiPass(for:)](avfoundation/avassetwriter/inputreceiverrequestingmultipass(for:).md)
- [inputTaggedPixelBufferGroupReceiver(for:pixelBufferAttributes:)](avfoundation/avassetwriter/inputtaggedpixelbuffergroupreceiver(for:pixelbufferattributes:).md)
- [inputTaggedPixelBufferGroupReceiverRequestingMultiPass(for:pixelBufferAttributes:)](avfoundation/avassetwriter/inputtaggedpixelbuffergroupreceiverrequestingmultipass(for:pixelbufferattributes:).md)

### Configuring input groups

- [inputGroups](avfoundation/avassetwriter/inputgroups.md)
- [canAdd(_:)](avfoundation/avassetwriter/canadd(_:)-8s1oh.md)
- [add(_:)](avfoundation/avassetwriter/add(_:)-3san4.md)

### Configuring output

- [metadata](avfoundation/avassetwriter/metadata.md)
- [shouldOptimizeForNetworkUse](avfoundation/avassetwriter/shouldoptimizefornetworkuse.md)
- [directoryForTemporaryFiles](avfoundation/avassetwriter/directoryfortemporaryfiles.md)

### Configuring fragment output

- [movieFragmentInterval](avfoundation/avassetwriter/moviefragmentinterval.md)
- [initialMovieFragmentInterval](avfoundation/avassetwriter/initialmoviefragmentinterval.md)
- [initialMovieFragmentSequenceNumber](avfoundation/avassetwriter/initialmoviefragmentsequencenumber.md)
- [producesCombinableFragments](avfoundation/avassetwriter/producescombinablefragments.md)
- [overallDurationHint](avfoundation/avassetwriter/overalldurationhint.md)
- [movieTimeScale](avfoundation/avassetwriter/movietimescale.md)

### Managing writing sessions

- [start()](avfoundation/avassetwriter/start().md)
- [startWriting()](avfoundation/avassetwriter/startwriting().md)
- [startSession(atSourceTime:)](avfoundation/avassetwriter/startsession(atsourcetime:).md)
- [endSession(atSourceTime:)](avfoundation/avassetwriter/endsession(atsourcetime:).md)
- [finishWriting(completionHandler:)](avfoundation/avassetwriter/finishwriting(completionhandler:).md)
- [cancelWriting()](avfoundation/avassetwriter/cancelwriting().md)
- [finishWriting()](avfoundation/avassetwriter/finishwriting().md)

### Inspecting writing status

- [status](avfoundation/avassetwriter/status-swift.property.md)
- [AVAssetWriter.Status](avfoundation/avassetwriter/status-swift.enum.md)
- [error](avfoundation/avassetwriter/error.md)

### Configuring segment writing

- [delegate](avfoundation/avassetwriter/delegate.md)
- [AVAssetWriterDelegate](avfoundation/avassetwriterdelegate.md)
- [preferredOutputSegmentInterval](avfoundation/avassetwriter/preferredoutputsegmentinterval.md)
- [initialSegmentStartTime](avfoundation/avassetwriter/initialsegmentstarttime.md)
- [outputFileTypeProfile](avfoundation/avassetwriter/outputfiletypeprofile.md)
- [flushSegment()](avfoundation/avassetwriter/flushsegment().md)

### Accessing output settings

- [outputURL](avfoundation/avassetwriter/outputurl.md)
- [outputFileType](avfoundation/avassetwriter/outputfiletype.md)

### Initializers

- [init(URL:fileType:)](avfoundation/avassetwriter/init(url:filetype:)-24qcl.md)
- [init(URL:fileType:)](avfoundation/avassetwriter/init(url:filetype:)-9j3k4.md)

### Instance Properties

- [isProVideoStorageSupported](avfoundation/avassetwriter/isprovideostoragesupported.md)
- [usesProVideoStorage](avfoundation/avassetwriter/usesprovideostorage.md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Media writing

- [Converting projected video to Apple Projected Media Profile](avfoundation/converting-projected-video-to-apple-projected-media-profile.md)
- [Converting side-by-side 3D video to multiview HEVC and spatial video](avfoundation/converting-side-by-side-3d-video-to-multiview-hevc-and-spatial-video.md)
- [Adding a display mask rectangle metadata track to a movie file](avfoundation/adding-a-display-mask-rectangle-metadata-track-to-a-movie-file.md)
- [Writing fragmented MPEG-4 files for HTTP Live Streaming](avfoundation/writing-fragmented-mpeg-4-files-for-http-live-streaming.md)
- [Creating spatial photos and videos with spatial metadata](imageio/creating-spatial-photos-and-videos-with-spatial-metadata.md)
- [Tagging media with video color information](avfoundation/tagging-media-with-video-color-information.md)
- [Evaluating an app’s video color](avfoundation/evaluating-an-app-s-video-color.md)
- [AVOutputSettingsAssistant](avfoundation/avoutputsettingsassistant.md)
- [AVAssetWriterInput](avfoundation/avassetwriterinput.md)
- [AVAssetWriterInputPixelBufferAdaptor](avfoundation/avassetwriterinputpixelbufferadaptor.md)
- [AVAssetWriterInputTaggedPixelBufferGroupAdaptor](avfoundation/avassetwriterinputtaggedpixelbuffergroupadaptor.md)
- [AVAssetWriterInputMetadataAdaptor](avfoundation/avassetwriterinputmetadataadaptor.md)
- [AVAssetWriterInputGroup](avfoundation/avassetwriterinputgroup.md)
