零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> Object-C 基础
零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> Object-C 线程
零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> OpenGL ES
零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> GPUImage
零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> AVFoundation
零基础 Object-C 学习路线推荐 : Object-C 学习目录 >> CocoaPods
一.前言
1.AVAsset
Assets 可以来自一个文件或用户的相册,可以理解为多媒体资源,通过 URL 作为一个 asset 对象的标识. 这个 URL 可以是本地文件路径或网络流;
2.AVAssetTrack
AVAsset 包含很多轨道 AVAssetTrack的结合,如 audio, video, text, closed captions, subtitles…
3.AVComposition / AVMutableComposition
使用 AVMutableComposition 类可以增删 AVAsset 来将单个或者多个 AVAsset 集合到一起,用来合成新视频。除此之外,若想将集合到一起的视听资源以自定义的方式进行播放,需要使用 AVMutableAudioMix 和 AVMutableVideoComposition 类对其中的资源进行协调管理;
4.AVMutableVideoComposition
AVFoundation 类 API 中最核心的类是 AVVideoComposition / AVMutableVideoComposition 。
AVVideoComposition / AVMutableVideoComposition 对两个或多个视频轨道组合在一起的方法给出了一个总体描述。它由一组时间范围和描述组合行为的介绍内容组成。这些信息出现在组合资源内的任意时间点。
AVVideoComposition / AVMutableVideoComposition 管理所有视频轨道,可以决定最终视频的尺寸,裁剪需要在这里进行;
5.AVMutableCompositionTrack
AVMutableCompositionTrack 是将多个 AVAsset 集合到一起合成新视频中轨道信息,有音频轨、视频轨等,里面可以插入各种对应的素材(画中画,水印等);
6.AVMutableVideoCompositionLayerInstruction
AVMutableVideoCompositionLayerInstruction 主要用于对视频轨道中的一个视频处理缩放、模糊、裁剪、旋转等;
7.AVMutableVideoCompositionInstruction
表示一个指令,决定一个 timeRange 内每个轨道的状态,每一个指令包含多个 AVMutableVideoCompositionLayerInstruction ;而 AVVideoComposition 由多个 AVVideoCompositionInstruction 构成;
AVVideoCompositionInstruction 所提供的最关键的一段数据是组合对象时间轴内的时间范围信息。这一时间范围是在某一组合形式出现时的时间范围。要执行的组全特质是通过其 AVMutableVideoCompositionLayerInstruction 集合定义的。
8.AVAssetExportSession
AVAssetExportSession 主要用于导出视频;
9.AVAssetTrackSegment
AVAssetTrackSegment 不可变轨道片段;
10.AVCompositionTrackSegment
AVCompositionTrackSegment 可变轨道片段,继承自 AVAssetTrackSegment;
二.AVMutableVideoCompositionLayerInstruction 简介
AVVideoCompositionLayerInstruction 可以完成对媒体裁剪 / 缩放 / 转场 / 过渡等操作;
1.推入推出效果
关键代码:
CGAffineTransform from = CGAffineTransformMakeTranslation(-size.width, 0);
CGAffineTransform to = CGAffineTransformMakeTranslation(size.width, 0.0);
CGAffineTransform identityTransform = CGAffineTransformIdentity;
//第一个媒体向左推出
[fromLayerInstruction setTransformRampFromStartTransform:identityTransform toEndTransform:from timeRange:[[transitionTime objectAtIndex:i] CMTimeRangeValue]];
//第二个媒体向右推入
[toLayerInstruction setTransformRampFromStartTransform:to toEndTransform:identityTransform timeRange:[[transitionTime objectAtIndex:i] CMTimeRangeValue]];
效果展示:

完整代码:AVFoundation – 转场 – 推入/推出效果
2.溶解效果
关键代码:
//第一个媒体透明度重 1.0 到 0.0 逐渐消失
[fromLayerInstruction setOpacityRampFromStartOpacity:1.0 toEndOpacity:0.0 timeRange:[[transitionTime objectAtIndex:i] CMTimeRangeValue]];
//第二个媒体透明度重 0.0 到 1.0 逐渐显示
[toLayerInstruction setOpacityRampFromStartOpacity:0.0 toEndOpacity:1.0 timeRange:[[transitionTime objectAtIndex:i] CMTimeRangeValue]];
效果展示:

完整代码:AVFoundation – 将多个媒体合并(五) – 多个视频之间设置转场溶解过渡效果
3.擦除效果
关键代码:
//擦除效果
CGRect startRect = CGRectMake(0, 0, size.width, size.height);
CGRect endRect = CGRectMake(0, size.height, size.width, 0.0f);
//媒体
[fromLayerInstruction setCropRectangleRampFromStartCropRectangle:startRect toEndCropRectangle:endRect timeRange:[[transitionTime objectAtIndex:i] CMTimeRangeValue]];
效果展示:

三.AVMutableVideoCompositionLayerInstruction 实战
- AVFoundation – 将多个媒体合并(五) – 多个视频之间设置转场溶解过渡效果
- AVFoundation – 转场 – 推入/推出效果
- AVFoundation – 转场 – 擦除效果
- AVFoundation – 设置透明度
四.猜你喜欢
- AVAsset 加载媒体
- AVAssetTrack 获取视频 音频信息
- AVMetadataItem 获取媒体属性元数据
- AVAssetImageGenerator 截图
- AVAssetImageGenerator 获取多帧图片
- AVAssetExportSession 裁剪/转码
- AVPlayer 播放视频
- AVPlayerItem 管理资源对象
- AVPlayerLayer 显示视频
- AVQueuePlayer 播放多个媒体文件
- AVComposition AVMutableComposition 将多个媒体合并
- AVVideoComposition AVMutableVideoComposition 管理所有视频轨道
- AVCompositionTrack AVMutableCompositionTrack 添加移除缩放媒体音视频轨道信息
- AVAssetTrackSegment 不可变轨道片段
- AVCompositionTrackSegment 可变轨道片段
- AVVideoCompositionInstruction AVMutableVideoCompositionInstruction 操作指令
- AVMutableVideoCompositionLayerInstruction 视频轨道操作指令
- AVFoundation – 将多个媒体合并(二) – 一个轨道多个视频无缝衔接
- AVFoundation – 将多个媒体合并(三) – 多个轨道,每个轨道对应一个单独的音频或者视频
- AVFoundation – 将多个媒体合并(四) – 不同分辨率媒体合成并自定义分辨率
- AVFoundation – 将多个媒体合并(五) – 多个视频之间设置转场溶解过渡效果
- AVFoundation – 转场 – 推入/推出效果
- AVFoundation – 转场 – 擦除效果
ChatGPT 3.5 国内中文镜像站免费使用啦
暂无评论内容