AVPlayer(二)AVAsset
https://www.sunyazhou.com/2017/06/16/Learning-AV-Foundation-AVAsset-Basic/?utm_source=tuicool&utm_medium=referral
AVAsset
专辑
一个抽象类,里面包含曲目、格式、时长, 以及元数据NSData(二进制的bytes).
@property (nonatomic, readonly) NSArray<AVAssetTrack *> *tracks;
加载格式
AVURLAsset *anAsset = [[AVURLAsset alloc] initWithURL:url options:nil];
NSArray *keys = @[@"duration",@"tracks"];[asset loadValuesAsynchronouslyForKeys:keys completionHandler:^() {NSError *error = nil;AVKeyValueStatus tracksStatus = [asset statusOfValueForKey:@"tracks" error:&error];//根据相应的属性状态进行对应的处理switch (tracksStatus) {case AVKeyValueStatusUnknown://TODObreak;case AVKeyValueStatusLoading://TODObreak;case AVKeyValueStatusLoaded://TODObreak;case AVKeyValueStatusFailed://TODObreak;case AVKeyValueStatusCancelled://TODObreak;}
}];
AVAssetTrack 曲目
我们真正存储媒体资源的统一媒体类型。
- 音频流
- 视频流
NSArray<AVAssetTrack *> *audioAssetTracks = [asset tracksWithMediaType:AVMediaTypeAudio];
NSArray<AVAssetTrack *> *videoAssetTracks = [asset tracksWithMediaType:AVMediaTypeVideo];
AVAssetImageGenerator
- (instancetype)initWithAsset:(AVAsset *)asset NS_DESIGNATED_INITIALIZER;//获取一张图片,requestedTime 指定要获取视频中哪个时刻的图片,actualTime 返回图片实际是视频的哪个时刻,outError 返回错误信息
- (nullable CGImageRef)copyCGImageAtTime:(CMTime)requestedTime actualTime:(nullable CMTime *)actualTime error:(NSError * _Nullable * _Nullable)outError CF_RETURNS_RETAINED;//获取多张图片,每一次图片生成后,都会调用一次 handler
- (void)generateCGImagesAsynchronouslyForTimes:(NSArray<NSValue *> *)requestedTimes completionHandler:(AVAssetImageGeneratorCompletionHandler)handler;//上述 handler 的类型如下,回调中的参数有图片的请求时刻和实际时刻,图片,状态(成功、失败、取消),错误信息
typedef void (^AVAssetImageGeneratorCompletionHandler)(CMTime requestedTime, CGImageRef _Nullable image, CMTime actualTime, AVAssetImageGeneratorResult result, NSError * _Nullable error);
AVPlayer(二)AVAsset相关推荐
- AVFoundation – AVAsset 加载媒体
目录 一.前言 1.AVAsset 2.AVAssetTrack 3.AVComposition / AVMutableComposition 4.AVMutableVideoComposition ...
- AVFoundation系列二:用AVPlayer播放视频
发现一个比较好的文章,搬来借用,这是根据苹果官方文档翻译的,并加入了自己的见解:尤其是加载网络的url分析见解,之后可能会根据另一大神的开源demo,总结一下边下边播,所以这里我无耻的设为了原创 AV ...
- 使用AVPlayer自定义支持全屏的播放器(二)
前言 前段时间封装了一个视频播放器,由于时间匆忙,还有很多问题以及细节还没有来得及修改,最近挤了一点时间,将播放器完善了一下,具体思路请参考使用AVPlayer自定义支持全屏的播放器(一),本 ...
- AVPlayer详解系列(一)参数设置
思维导图 先来一张思维导图,作为这篇文章的目录索引: AVPlayer.png 为什么使用AVPlayer: 首先在iOS平台使用播放视频,可用的选项一般有这四个,他们各自的作用和功能如下: 使用 ...
- AVPlayer简单使用
2019独角兽企业重金招聘Python工程师标准>>> 前言 公司APP使用七牛的播放器,各种崩溃,各种卡顿问题,一怒之下抽时间,看看有没苹果自带框架比较好解决播放问题,又不想引入其 ...
- 【iOS】视频播放之AVPlayer
[iOS]视频播放之AVPlayer iOS平台使用播放视频,可用的选项一般有这四个,他们各自的作用和功能如下: 使用环境 优点 缺点 AVPlayerViewController AVKit 简单易 ...
- iOS: ios视频播放(MPMediaPlayerController,AVPlayer,AVPlayerViewcontroller、ffmpeg-AVPlayer)...
介绍: 和音频播放一样,ios也提供个很多的API.如mediaPlayer.framework下的MPMediaPlayerController.AVFounditon.framework下的AVP ...
- iOS开发:AVPlayer实现流音频边播边存
1. AVPlayer简介AVPlayer存在于AVFoundation中,可以播放视频和音频,可以理解为一个随身听AVPlayer的关联类:AVAsset:一个抽象类,不能直接使用,代表一个要播放的 ...
- 使用AVPlayer制作一个播放器
代码地址如下: http://www.demodashi.com/demo/11685.html AVPlayer 是一个强大的视频播放器,可以播放多种格式的视频,缺点是没有控制界面,需要自己去实现. ...
最新文章
- 科研文献|结肠直肠癌早期检测中跨群体微生物标记物的鉴定
- 静态路由中使用一跳和出接口的区别
- SpringMVC框架 学习DAY_03:@RequestMapping注解/拦截器与过滤器
- java 原子引用_Java 原子性引用 AtomicReference
- 你以为ACI=SDN?大错特错!
- C宏定义中的##,#,#@用法介绍
- Spring事务管理机制
- ResNet才是YYDS!新研究:不用蒸馏、无额外数据,性能还能涨一波
- [转]java Socket InputStream 阻塞 问题
- unitywebrequest本地加载_Unity AudioSource加载本地.mp3文件/UnityWebRequest
- Run P4 without P4factory - A Simple Example In Tutorials. -2
- 三角形和矩形傅里叶变换_信号与系统:第三章傅立叶变换2.ppt
- Python实现Wordcloud生成词云图的示例
- 迁移学习:迈向真正的人工智能
- 微信小程序 3 岁:日活超 3 亿,交易额超 8000 亿
- Pulseaudio之nemo(二十二)
- NFC怎么复制房卡_为了省门禁卡的钱,买了NFC读卡器,到底值不值
- border边框线样式
- 关于心跳包的实现手法
- 数据结构课程设计之项目三---算术表达式求解