AVAsset is an abstract, immutable class used to model timed audiovisual media such as videos and sounds. An asset may contain one or more tracks that are intended to be presented or processed together, each of a uniform media type, including but not limited to audio, video, text, closed captions, and subtitles.
- iOS 4.0+
- macOS 10.7+
- tvOS 9.0+
AVAsset defines the collective properties of the tracks that comprise the asset. (You can access the instances of
AVAsset representing tracks of the collection, so you can examine each of these independently if you need to.)
You often instantiate an asset using
AVURLAsset—a concrete subclass of
AVAsset—with URLs that refer to audiovisual media resources, such as streams (including HTTP live streams), QuickTime movie files, MP3 files, and files of other types. You can also instantiate an asset using other concrete subclasses that extend the basic model for audiovisual media in useful ways, as
AVComposition does for temporal editing.
Properties of assets as a whole are defined by
AVAsset. Additionally, references to instances of
AVAsset representing tracks of the collection can be obtained, so that each of these can be examined independently.
Because of the nature of timed audiovisual media, upon successful initialization of an asset some or all of the values for its keys may not be immediately available. The value of any key can be requested at any time, and asset always returns its value synchronously, although it may have to block the calling thread in order to do so. In order to avoid blocking, you can register your interest in particular keys and to become notified when their values become available. For further details, see
To play an instance of
AVAsset, initialize an instance of
AVPlayer with it, use the player item to set up its presentation state (such as whether only a limited timeRange of the asset should be played, etc.), and provide the player item to an
AVPlayer object according to whether the item is to be played by itself or together with a collection of other items.
You can insert
AVAsset objects into an
AVMutable object in order to assemble audiovisual constructs from one or more source assets.
It is not currently possible to subclass
AVAsset to handle streaming protocols or file formats that are not supported by the framework.