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参数来指定导出完成后的回调函数。


目录
相关文章
|
自然语言处理 iOS开发
iOS 国际化(多语言)如何指定默认语言
iOS 国际化(多语言)如何指定默认语言
316 0
|
存储 XML jenkins
iOS 底层原理38:自动化打包(一)Xcode + Shell脚本
iOS 底层原理38:自动化打包(一)Xcode + Shell脚本
2809 1
iOS 底层原理38:自动化打包(一)Xcode + Shell脚本
|
NoSQL Java 关系型数据库
【精选】六款JavaWeb项目源码下载
【精选】六款JavaWeb项目源码下载
【精选】六款JavaWeb项目源码下载
|
6月前
|
存储 运维 程序员
快速搭建一个FTP服务器
快速搭建一个FTP服务器
112 0
|
安全 编译器 Shell
[✔️]mac上编译使用ffmpeg
[✔️]mac上编译使用ffmpeg
597 0
|
缓存 iOS开发
iOS小技能:解决TableVIew刷新数据带来的界面跳动问题
iOS小技能:解决TableVIew刷新数据带来的界面跳动问题
1711 0
iOS小技能:解决TableVIew刷新数据带来的界面跳动问题
|
编解码 iOS开发 内存技术
iOS 录音、音频的拼接剪切以及边录边压缩转码
iOS 录音、音频的拼接剪切以及边录边压缩转码
841 0
iOS 录音、音频的拼接剪切以及边录边压缩转码
|
API iOS开发 Perl
iOS UISlider自定义渐变色滑杆
iOS UISlider自定义渐变色滑杆
iOS UISlider自定义渐变色滑杆
|
前端开发 JavaScript
Alamofire Async Await
Alamofire Async Await