AVAsset、AVAssetTrack、AVMutableComposition、AVAssetExportSession

简介: AVAsset、AVAssetTrack、AVMutableComposition、AVAssetExportSession

AVAsset


AVAsset是苹果公司提供的一个音视频资源的抽象类,它代表了一个音视频资源的基本信息,比如资源的URL、时长、媒体类型、音频格式等等。

AVAsset对象可以用于读取音视频资源的媒体数据,包括音频和视频轨道。可以使用AVAssetReader或者AVPlayerItem对象来读取和播放音视频资源。

AVAsset类提供了丰富的属性和方法,可以用来查询和操作音视频资源。一些常用的方法包括:

  • duration:返回AVAsset对象表示的资源的总时长;
  • tracks:返回一个包含AVAsset对象表示的资源中所有轨道的数组;
  • track(withTrackID:):返回指定轨道ID的AVAssetTrack对象;
  • metadata:返回一个包含AVAsset对象表示的资源中所有元数据的数组;
  • exportAsynchronously(withCompletionHandler:):异步将AVAsset对象表示的资源导出为其他格式的音视频文件。

总之,AVAsset是一个重要的音视频开发类,可以让开发者方便地读取、处理和导出音视频资源。


AVAssetTrack


AVAssetTrack是AVFoundation框架中的一个类,它代表一个音视频资源中的一个轨道,可以是音频轨道或视频轨道。

AVAssetTrack类提供了丰富的属性和方法,可以用来查询和操作轨道。一些常用的方法和属性包括:

  • mediaType:返回轨道所属的媒体类型,可以是音频或视频;
  • formatDescriptions:返回轨道的格式描述数组,描述了轨道的音视频格式、采样率、帧率等信息;
  • preferredTransform:返回一个CGAffineTransform矩阵,表示轨道的变换矩阵,可以用于将轨道的坐标系转换为视频帧的坐标系;
  • timeRange:返回一个CMTimeRange结构体,表示轨道中有效媒体数据的时间范围;
  • naturalSize:返回一个CGSize结构体,表示轨道中媒体数据的原始尺寸;
  • sampleBuffer(at:)1:返回指定时间点的音视频样本数据,可以用于进一步处理或输出。

总之,AVAssetTrack是一个重要的音视频开发类,可以让开发者方便地查询和操作音视频轨道的各种属性和数据,从而实现更加丰富的音视频处理功能。

1注意:该方法需要在AVAssetReader对象的上下文中调用,不能在AVPlayer对象中使用。


AVMutableComposition


AVMutableComposition是AVFoundation框架中的一个类,用于创建、编辑和组合多个音视频轨道,最终生成一个新的音视频资源。

AVMutableComposition可以包含多个AVCompositionTrack,每个AVCompositionTrack表示一个音视频轨道。开发者可以向AVMutableComposition对象中添加、删除、移动或修改AVCompositionTrack,以实现音视频资源的编辑和组合。

AVMutableComposition还提供了多种方法和属性,用于实现音视频资源的编辑和组合。一些常用的方法和属性包括:

  • insertTimeRange(_:of:at:)1:将一个AVAssetTrack对象的指定时间范围插入到AVMutableComposition对象的指定时间点;
  • insertEmptyTimeRange(_:)1:在AVMutableComposition对象的指定时间点插入一段空白时间;
  • removeTimeRange(_:)1:删除AVMutableComposition对象中的指定时间范围;
  • scaleTimeRange(_:toDuration:)1:缩放AVMutableComposition对象中的指定时间范围,使其持续时间变为指定值;
  • mutableTrack(withTrackID:)2:返回指定ID的AVMutableCompositionTrack对象,用于修改该轨道的属性和内容;
  • naturalSize:返回一个CGSize结构体,表示AVMutableComposition对象中媒体数据的原始尺寸;
  • duration:返回AVMutableComposition对象表示的资源的总时长。

总之,AVMutableComposition是一个重要的音视频开发类,可以让开发者方便地创建、编辑和组合多个音视频轨道,生成一个新的音视频资源,从而实现更加丰富的音视频处理和创作功能。

1这些方法需要在AVMutableComposition对象的上下文中调用,可以通过AVAssetExportSession或AVPlayerItem将AVMutableComposition对象导出为音视频文件或播放。

2AVMutableCompositionTrack是AVCompositionTrack的子类,具有可写的属性和方法,可以用于修改轨道的内容和属性。


AVAssetExportSession


AVAssetExportSession是AVFoundation框架中的一个类,用于将AVAsset对象导出为音视频文件。它可以将AVAsset对象转换为多种不同的音视频格式,包括mp4、mov、m4v等。

AVAssetExportSession提供了丰富的属性和方法,可以用于配置导出会话的各种参数和选项。一些常用的属性和方法包括:

  • outputURL:导出文件的保存路径;
  • outputFileType:导出文件的格式,可以是多种音视频格式;
  • timeRange:导出的时间范围,可以指定只导出AVAsset对象的一部分;
  • exportAsynchronously(completionHandler:)1:异步执行导出会话,并在完成后调用指定的回调函数;
  • progress:属性:返回导出会话的进度,用于监视导出进度;
  • status:返回导出会话的状态,用于监视导出状态;
  • error:返回导出会话的错误信息,用于排除导出过程中的问题。

总之,AVAssetExportSession是一个重要的音视频开发类,可以让开发者方便地将AVAsset对象导出为多种音视频格式的文件。开发者可以根据需要配置导出会话的各种参数和选项,从而实现更加丰富的音视频导出功能。

1注意:exportAsynchronously(completionHandler:)方法是异步执行的,因此在执行该方法后,需要等待导出会话完成后才能获得导出的结果。可以通过completionHandler参数来指定导出完成后的回调函数。


目录
相关文章
|
Web App开发 编解码 Android开发
iOS 视频转码处理
iOS 视频转码处理
|
编解码 iOS开发 内存技术
iOS 录音、音频的拼接剪切以及边录边压缩转码
iOS 录音、音频的拼接剪切以及边录边压缩转码
771 0
iOS 录音、音频的拼接剪切以及边录边压缩转码
|
前端开发 JavaScript
Alamofire Async Await
Alamofire Async Await
|
API iOS开发 Perl
iOS UISlider自定义渐变色滑杆
iOS UISlider自定义渐变色滑杆
iOS UISlider自定义渐变色滑杆
|
应用服务中间件 Linux nginx
阿里云服务器搭建Nginx+rtmp推流服务器
阿里云服务器搭建Nginx+rtmp推流服务器
1271 0
阿里云服务器搭建Nginx+rtmp推流服务器
|
存储 缓存 并行计算
Metal Shader language (着色语言规范)总结
Metal Shader language (着色语言规范)总结
290 0
Metal Shader language (着色语言规范)总结
|
搜索推荐 Java 开发工具
【Framework】🤡 速通 Android AOSP基础(下)
本文并非笔者亲身实践,是借鉴了参考文献处几位大佬的文章总结得出。asop源码的下载费时,笔者没有编译扫写源码的需求,只是解BUG或了解底层机制时看看源码,SDK自带的android.jar和一些在线源码站点已经够用。环境搭建流程基本是一致的,遇到问题善用搜索引擎~
273 0
|
iOS开发 开发者
iOS录屏框架ReplayKit的应用总结
iOS录屏框架ReplayKit的应用总结
1055 0
|
BI Android开发 数据格式
Android 实现GIF播放(解码)
实现原理很简单,先把GIF动画解码成多张Bitmap图片,然后放到AnimationDrawable里面去逐一播放即可。 GifHelper代码:   package com.android.
805 0