AVFoundation AVPlayer 合并多个媒体设置倒序播放

零基础 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;


二.多个视频合并流程简介

AVFoundation AVPlayer 合并多个媒体设置倒序播放

AVComposition 继承自 AVAsset,将来自多个基于源文件的媒体数据组合在一起显示,或处理来自多个源媒体数据;

AVMutableComposition *mutableComposition = [AVMutableComposition composition];

//进行添加资源等操作
//1.添加媒体1的视频轨道
//2.添加媒体1的音频轨道
//3.添加媒体2的视频轨道
//4.添加媒体2的音频轨道
//.....


//使用可变的 composition 生成一个不可变的 composition 以供使用
AVComposition *composition = [myMutableComposition copy];
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset:composition];

三.多个视频合并设置转场流程

AVFoundation AVPlayer 合并多个媒体设置倒序播放

《AVFoundation – 将多个媒体合并(五) – 多个视频之间设置转场溶解过渡效果》文章中,我们将多个媒体合并并导出,同样我们也可以使用 AVPlayer 来播放合并之后的视频,参考文章《AVFoundation AVPlayer 合并多个媒体并播放》;


四.AVPlayer 变速播放

AVPlayer 控制播放器的播放,暂停,播放速度;

/*创建AVPlayer播放器*/
+ (instancetype)playerWithURL:(NSURL *)URL;
+ (instancetype)playerWithPlayerItem:(nullable AVPlayerItem *)item;
- (instancetype)initWithURL:(NSURL *)URL;
- (instancetype)initWithPlayerItem:(nullable AVPlayerItem *)item;

/*当前播放器播放的时间*/
- (CMTime)currentTime;

/*播放速度
    rate = 0.5;   // 慢放
    rate = 1.0;   // 正常播放
    rate = 0.0;   // 暂停
    rate = -0.5;  // 倒放
 */
@property (nonatomic) float rate;

/*播放 默认 rate = 1.0*/
- (void)play;

/*暂停播放 rate = 0.0*/
- (void)pause;

注意更改播放速度要在视频开始播放之后才会生效;关于 AVPlayer seek 时间不精确,请参考文章:《AVFoundation – AVPlayer 播放视频》


五.AVFoundation AVPlayer 合并多个媒体设置倒序播放

完整代码如下:

此处内容需要购买后查看,黄金会员可免费查看

支付19.9元查看

1.常规播放

AVFoundation AVPlayer 合并多个媒体设置倒序播放

2.倒序播放

AVFoundation AVPlayer 合并多个媒体设置倒序播放

源码下载链接:https://pan.baidu.com/s/1XUJ_9P5Y1LuAUTc1mnrciA

提取密码:上面加密结尾处

六. 猜你喜欢


未经允许不得转载:猿说编程 » AVFoundation AVPlayer 合并多个媒体设置倒序播放
喜欢(0) 打赏

评论抢沙发

评论前必须登录!

不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!!

开始学习

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏