NFTPlayer1.0.0

NFTPlayer1.0.0

pender维护。



  • pengdong

介绍

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

作者

[email protected]

如果这对您有所帮助,请给予🌟 🌟

效果

运行效果

许可证

NFTPlayer可在MIT许可证下使用。更多详情请参阅LICENSE文件。