介绍
NFTPlayer 基于系统 AVPlayer 渲染的视频播放器,通过接管 resourceLoader 来管理整个视频播放的网络层和缓存层。根据业务需要可以很方便的实现交互层、渲染层、播放层、网络层、缓存层等播放行为的监控。
注:此库还是一个雏形,功能上还不够完善,实现的功能都是暂时能想到的,如果需要更多的功能欢迎留言,有时间会逐一实现。也欢迎你加入一起维护完善。
缓存层使用的是一个视频对应一个文件,空白内容补0方案实现,如果你是播放超长视频为主的项目,可以换成多文件视频数据切片的方式来实现
有问题欢迎指出,有更好的实现方案欢迎提出,共同学习进步
引入
pod 'NFTPlayer'
运行 pod install
功能
- 边下边播
- 自定义缓存层
- 自定义网络层,根据业务需求可以方便地加入限流策略
- 换源:视频播放失败时自动切换到下一个视频源进行播放,降低失败率
- 预加载
代码结构
- Interface:对外接口
- MediaConvertible:媒体播放源所要实现的协议,获取同一个视频不同数据源 URL 列表
- PlayerInterfaceView:视频播放期间对视频控制的 UI,需要遵守 PlayerInterfaceViewProtocol 协议,提供了一个默认 UI:PlayerInterfaceDefaultView
- PlayerManager:视频播放统一管理类
- PlayerPreDownloader:预加载
- Player
- VideoPlayer:视频播放器
- VideoRenderView:视频渲染图层
- 资源加载器
- AssetResourceLoader:接管视频AVURLAsset资源加载器
- 数据源
- DataSourceCenter:数据存储和获取管理中心
- DataSourceUrlOperation:URL操作控制,一个视频URL对应一个DataSourceUrlOperation,管理多个DataSourceInformationRequestOperation和DataSourceDataRequestOperation类
- DataSourceInformationRequestOperation:视频信息请求操作,一个AVAssetResourceLoader contentInformationRequest对应一个DataSourceInformationRequestOperation服务类
- DataSourceDataRequestOperation:视频数据请求操作,一个AVAssetResourceLoader dataRequest对应一个DataSourceDataRequestOperation服务类
- DataSourceRequestTask:网络请求任务,一个网络请求对应一个task
- DataSourceCache:视频缓存,一个URL对应一个DataSourceCache
作者
如果这对您有所帮助,请给予🌟 🌟
效果
许可证
NFTPlayer可在MIT许可证下使用。更多详情请参阅LICENSE文件。