VODUploadModel.h 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. //
  2. // VODUploadModel.h
  3. // VODUpload
  4. //
  5. // Created by Leigang on 2016/10/26.
  6. // Copyright © 2016年 Leigang. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. typedef NS_ENUM(NSInteger, VODUploadFileStatus) {
  10. VODUploadFileStatusReady,
  11. VODUploadFileStatusUploading,
  12. VODUploadFileStatusCanceled,
  13. VODUploadFileStatusPaused,
  14. VODUploadFileStatusSuccess,
  15. VODUploadFileStatusFailure
  16. };
  17. typedef NS_ENUM(NSInteger, VODStatus) {
  18. VODStatusReady,
  19. VODStatusStarted,
  20. VODStatusPaused,
  21. VODStatusCancel,
  22. VODStatusStoped,
  23. VODStatusSuccess,
  24. VODStatusFailure,
  25. VODStatusExpire
  26. };
  27. @interface OSSConfig : NSObject
  28. @property (nonatomic, strong) NSString* accessKeyId;
  29. @property (nonatomic, strong) NSString* accessKeySecret;
  30. @property (nonatomic, strong) NSString* secretToken;
  31. @property (nonatomic, strong) NSString* expireTime;
  32. @end
  33. @interface VodInfo : NSObject
  34. /**
  35. 标题
  36. */
  37. @property (nonatomic, copy) NSString* title;
  38. /**
  39. 标签
  40. */
  41. @property (nonatomic, copy) NSString* tags;
  42. /**
  43. 描述
  44. */
  45. @property (nonatomic, copy) NSString* desc;
  46. /**
  47. 分类id
  48. */
  49. @property (nonatomic, strong) NSNumber* cateId;
  50. /**
  51. 封面url
  52. */
  53. @property (nonatomic, copy) NSString* coverUrl;
  54. /**
  55. 设置自定义数据
  56. */
  57. @property (nonatomic, copy) NSString* userData;
  58. /**
  59. isProcess
  60. */
  61. @property (nonatomic, assign) BOOL isProcess;
  62. /**
  63. 是否显示水印
  64. */
  65. @property (nonatomic, assign) BOOL isShowWaterMark;
  66. /**
  67. 优先级
  68. */
  69. @property (nonatomic, strong) NSNumber* priority;
  70. /**
  71. 设置存储区域
  72. */
  73. @property (nonatomic, copy) NSString* storageLocation;
  74. /**
  75. 设置转码模板id
  76. */
  77. @property (nonatomic, copy) NSString* templateGroupId;
  78. /**
  79. 图片类型。仅对图片上传有效。取值:default, cover, 默认值:cover
  80. */
  81. @property (nonatomic, copy) NSString* imageType;
  82. /**
  83. 获取json字符串
  84. */
  85. - (NSString*)toJson;
  86. @end
  87. @interface UploadFileInfo : NSObject
  88. /**
  89. 是否流文件
  90. */
  91. @property (nonatomic, readonly) BOOL isStreamFile;
  92. /**
  93. 文件路径
  94. */
  95. @property (nonatomic, copy) NSString* filePath;
  96. /**
  97. oss的endpoint
  98. */
  99. @property (nonatomic, copy) NSString* endpoint;
  100. /**
  101. oss的bucket
  102. */
  103. @property (nonatomic, copy) NSString* bucket;
  104. /**
  105. oss的对象
  106. */
  107. @property (nonatomic, copy) NSString* object;
  108. /**
  109. vod具体信息
  110. */
  111. @property (nonatomic, strong) VodInfo* vodInfo;
  112. /**
  113. vod上传状态
  114. */
  115. @property VODUploadFileStatus state;
  116. @end
  117. @class UploadStreamFileInfo;
  118. /**
  119. 流文件回调
  120. */
  121. @protocol UploadStreamFileInfoDelegate <NSObject>
  122. @optional
  123. /**
  124. 流文件大小发生改变
  125. @param fileInfo 流文件信息
  126. @param size 当前大小,Byte
  127. */
  128. - (void) onUploadStreamFileInfo:(UploadStreamFileInfo *)fileInfo sizeChange:(NSUInteger)size;
  129. /**
  130. 上传进度发生改变
  131. @param fileInfo 流文件信息
  132. @param uploadSize 当前已经上传的大小,Byte
  133. */
  134. - (void) onUploadStreamFileInfo:(UploadStreamFileInfo *)fileInfo uploadProgress:(NSUInteger)uploadSize;
  135. @end
  136. @interface UploadStreamFileInfo : UploadFileInfo
  137. /**
  138. 上传回调
  139. */
  140. @property (nonatomic, weak) id<UploadStreamFileInfoDelegate> delegate;
  141. /**
  142. 分片大小,Byte,至少100KB
  143. */
  144. @property (nonatomic, readonly) NSUInteger partSize;
  145. /**
  146. 首片分片大小,Byte,至少100KB
  147. */
  148. @property (nonatomic, readonly) NSUInteger optimizeFirstPartSize;
  149. /**
  150. 当前文件偏移
  151. */
  152. @property (nonatomic, readonly) NSUInteger currentOffset;
  153. /**
  154. 当前文件大小,Byte
  155. */
  156. @property (nonatomic, readonly) NSUInteger currentSize;
  157. /**
  158. 当前文件是否已经完整
  159. */
  160. @property (nonatomic, readonly) BOOL isFileComplete;
  161. /**
  162. 文件大小(byte);文件完整前未确定
  163. */
  164. @property (nonatomic, readonly) NSUInteger fileSize;
  165. /**
  166. 当前已经上传的大小(byte)
  167. */
  168. @property (nonatomic, readonly) NSUInteger hasUploadedSize;
  169. /**
  170. 初始化流文件
  171. @param fileName 文件名
  172. @param partSize 分段大小
  173. @param firstPartSize 首段优化大小(默认可以跟partSize一样)
  174. */
  175. - (instancetype) initWithFileName:(NSString *)fileName
  176. partSize:(NSUInteger)partSize
  177. optimizeFirstPartSize:(NSUInteger)firstPartSize;
  178. /**
  179. 添加流数据
  180. @param buffer 流数据
  181. */
  182. - (void) appendBuffer:(NSData *)buffer;
  183. /**
  184. 跳到某个位置
  185. @param offset 偏移位置
  186. */
  187. - (void) seek:(NSUInteger)offset;
  188. /**
  189. 标记文件已经完成了(不再调用appendBuffer:)了
  190. */
  191. - (void) fileComplete;
  192. @end
  193. @interface VodUploadResult: NSObject
  194. @property (nonatomic, copy) NSString* videoId;
  195. @property (nonatomic, copy) NSString* imageUrl;
  196. @property (nonatomic, copy) NSString* bucket;
  197. @property (nonatomic, copy) NSString* endpoint;
  198. @end
  199. typedef void (^OnUploadSucceedListener) (UploadFileInfo* fileInfo);
  200. /**
  201. 上传完成回调
  202. @param fileInfo 上传文件信息
  203. @param result 上传结果信息
  204. */
  205. typedef void (^OnUploadFinishedListener) (UploadFileInfo* fileInfo, VodUploadResult* result);
  206. /**
  207. 上传失败回调
  208. @param fileInfo 上传文件信息
  209. @param code 错误码
  210. @param message 错误描述
  211. */
  212. typedef void (^OnUploadFailedListener) (UploadFileInfo* fileInfo, NSString *code, NSString * message);
  213. /**
  214. 上传进度回调
  215. @param fileInfo 上传文件信息
  216. @param uploadedSize 已上传大小
  217. @param totalSize 总大小
  218. */
  219. typedef void (^OnUploadProgressListener) (UploadFileInfo* fileInfo, long uploadedSize, long totalSize);
  220. /**
  221. token过期回调
  222. 上传地址和凭证方式上传需要调用resumeWithAuth:方法继续上传
  223. STS方式上传需要调用resumeWithToken:accessKeySecret:secretToken:expireTime:方法继续上传
  224. */
  225. typedef void (^OnUploadTokenExpiredListener) ();
  226. /**
  227. 上传开始重试回调
  228. */
  229. typedef void (^OnUploadRertyListener) ();
  230. /**
  231. 上传结束重试,继续上传回调
  232. */
  233. typedef void (^OnUploadRertyResumeListener) ();
  234. /**
  235. 开始上传回调
  236. 上传地址和凭证方式上传需要调用setUploadAuthAndAddress:uploadAuth:uploadAddress:方法设置上传地址和凭证
  237. @param fileInfo 上传文件信息
  238. */
  239. typedef void (^OnUploadStartedListener) (UploadFileInfo* fileInfo);
  240. @interface VODUploadListener : NSObject
  241. @property (nonatomic, copy) OnUploadSucceedListener success
  242. __attribute__((deprecated("", "use OnUploadFinishedListener to replace")));
  243. @property (nonatomic, copy) OnUploadFinishedListener finish;
  244. @property (nonatomic, copy) OnUploadFailedListener failure;
  245. @property (nonatomic, copy) OnUploadProgressListener progress;
  246. @property (nonatomic, copy) OnUploadTokenExpiredListener expire;
  247. @property (nonatomic, copy) OnUploadRertyListener retry;
  248. @property (nonatomic, copy) OnUploadRertyResumeListener retryResume;
  249. @property (nonatomic, copy) OnUploadStartedListener started;
  250. @end
  251. @interface VODUploadModel : NSObject
  252. @end