TXVodDownloadManager.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. //
  2. // TXVodDownloadManager.h
  3. // TXLiteAVSDK
  4. //
  5. // Created by annidyfeng on 2017/12/25.
  6. // Copyright © 2017年 Tencent. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "TXPlayerAuthParams.h"
  10. /// @addtogroup TXVodPlayConfig_ios
  11. /// @{
  12. /**
  13. * 下载视频的清晰度
  14. */
  15. typedef NS_ENUM(NSInteger, TXVodQuality) {
  16. ///原画
  17. TXVodQualityOD = 0,
  18. ///流畅
  19. TXVodQualityFLU,
  20. ///标清
  21. TXVodQualitySD,
  22. ///高清
  23. TXVodQualityHD,
  24. ///全高清
  25. TXVodQualityFHD,
  26. ///2K
  27. TXVodQuality2K,
  28. ///4K
  29. TXVodQuality4K,
  30. };
  31. /**
  32. * 下载错误码
  33. */
  34. typedef NS_ENUM(NSInteger, TXDownloadError) {
  35. /// 下载成功
  36. TXDownloadSuccess = 0,
  37. /// fileid鉴权失败
  38. TXDownloadAuthFaild = -5001,
  39. /// 无此清晰度文件
  40. TXDownloadNoFile = -5003,
  41. /// 格式不支持
  42. TXDownloadFormatError = -5004,
  43. /// 网络断开
  44. TXDownloadDisconnet = -5005,
  45. /// 获取HLS解密key失败
  46. TXDownloadHlsKeyError = -5006,
  47. /// 下载目录访问失败
  48. TXDownloadPathError = -5007,
  49. };
  50. /**
  51. * 下载源,通过fileid方式下载
  52. */
  53. @interface TXVodDownloadDataSource : NSObject
  54. /// fileid信息
  55. @property TXPlayerAuthParams *auth;
  56. /// 下载清晰度,默认原画
  57. @property TXVodQuality quality;
  58. /// 如地址有加密,请填写token
  59. @property NSString *token;
  60. /// 清晰度模板。如果后台转码是自定义模板,请在这里填写模板名。templateName和quality同时设置时,以templateName为v准
  61. @property NSString *templateName;
  62. @end
  63. /// 下载文件对象
  64. @interface TXVodDownloadMediaInfo : NSObject
  65. /// fileid下载对象(可选)
  66. @property TXVodDownloadDataSource *dataSource;
  67. /// 下载地址
  68. @property NSString *url;
  69. ///时长
  70. @property (nonatomic) int duration;
  71. /// 文件总大小,单位:byte
  72. @property (nonatomic) int size;
  73. /// 已下载大小,单位:byte
  74. @property (nonatomic) int downloadSize;
  75. /// 进度
  76. @property float progress;
  77. /// 播放路径,可传给TXVodPlayer播放
  78. @property NSString *playPath;
  79. /// 下载速度,byte每秒
  80. @property int speed;
  81. @end
  82. /// 下载回调
  83. @protocol TXVodDownloadDelegate <NSObject>
  84. /// 下载开始
  85. - (void)onDownloadStart:(TXVodDownloadMediaInfo *)mediaInfo;
  86. /// 下载进度
  87. - (void)onDownloadProgress:(TXVodDownloadMediaInfo *)mediaInfo;
  88. /// 下载停止
  89. - (void)onDownloadStop:(TXVodDownloadMediaInfo *)mediaInfo;
  90. /// 下载完成
  91. - (void)onDownloadFinish:(TXVodDownloadMediaInfo *)mediaInfo;
  92. /// 下载错误
  93. - (void)onDownloadError:(TXVodDownloadMediaInfo *)mediaInfo errorCode:(TXDownloadError)code errorMsg:(NSString *)msg;
  94. /**
  95. * 下载HLS,遇到加密的文件,将解密key给外部校验
  96. * @param mediaInfo 下载对象
  97. * @param url Url地址
  98. * @param data 服务器返回
  99. * @return 0:校验正确,继续下载;否则校验失败,抛出下载错误(SDK 获取失败)
  100. */
  101. - (int)hlsKeyVerify:(TXVodDownloadMediaInfo *)mediaInfo url:(NSString *)url data:(NSData *)data;
  102. @end
  103. /// 下载管理器
  104. @interface TXVodDownloadManager : NSObject
  105. /**
  106. * 下载任务回调
  107. */
  108. @property (weak) id<TXVodDownloadDelegate> delegate;
  109. /**
  110. * 设置 HTTP 头
  111. */
  112. @property NSDictionary *headers;
  113. /**
  114. * 全局单例接口
  115. */
  116. + (TXVodDownloadManager *)shareInstance;
  117. /**
  118. * 设置下载文件的根目录。
  119. *
  120. * @param path 目录地址,如不存在,将自动创建
  121. * @warning 开始下载前必须设置,否则不能下载
  122. */
  123. - (void)setDownloadPath:(NSString *)path;
  124. /**
  125. * 下载文件
  126. *
  127. * @param source 下载源。
  128. * @return 成功返回下载对象,否则nil
  129. *
  130. * @warning 目前只支持hls下载
  131. */
  132. - (TXVodDownloadMediaInfo *)startDownload:(TXVodDownloadDataSource *)source;
  133. /**
  134. * 下载文件
  135. *
  136. * @param url 下载地址
  137. * @return 成功返回下载对象,否则nil
  138. *
  139. * @warning 目前只支持hls下载,不支持master playlist
  140. */
  141. - (TXVodDownloadMediaInfo *)startDownloadUrl:(NSString *)url;
  142. /**
  143. * 停止下载
  144. *
  145. * @param media 停止下载对象
  146. */
  147. - (void)stopDownload:(TXVodDownloadMediaInfo *)media;
  148. /**
  149. * 删除下载产生的文件
  150. *
  151. * @return 文件正在下载将无法删除,返回NO
  152. */
  153. - (BOOL)deleteDownloadFile:(NSString *)playPath;
  154. @end
  155. /// @}