通过阅读本文,您可以了解短视频上传的方式和基本流程。
操作步骤
- 请求STS。更多信息,请参见使用STS方式上传。
说明 短视频上传只支持STS方式上传,要想通过上传地址和凭证方式进行短视频上传请使用VODUploadClient
分别上传封面图片和视频。
- 初始化上传实例。
- 声明
VODUploadSVideoClient
属性,不能是局部变量。@property (nonatomic, strong) VODUploadSVideoClient *client;
- 初始化并设置代理回调。
self.client = [[VODUploadSVideoClient alloc] init];
self.client.delegate = self;
- 回调设置。
设置delegate代理,代理需要实现VODUploadSVideoClientDelegate
协议,包含以下代理方法:
/**
上传成功回调
@param result 上传结果
*/
- (void)uploadSuccessWithResult:(VodSVideoUploadResult *)result;
/**
上传失败回调
@param code 错误码
@param message 错误描述
*/
- (void)uploadFailedWithCode:(NSString *)code message:(NSString *)message;
/**
上传进度回调
@param uploadedSize 已上传文件大小
@param totalSize 文件总大小
*/
- (void)uploadProgressWithUploadedSize:(long long)uploadedSize totalSize:(long long)totalSize;
/**
token过期回调
*/
- (void)uploadTokenExpired;
/**
上传开始重试回调
*/
- (void)uploadRetry;
/**
上传结束重试,继续上传回调
*/
- (void)uploadRetryResume;
- 启动上传。
短视频上传不支持上传列表,上传短视频需调用上传接口。调用上传方法需要传入视频和封面路径、VodSVideoInfo和请求获取的STS凭证。
NSString *videoPath = [[NSBundle mainBundle] pathForResource:@"svideo" ofType:@"mp4"];
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"cover" ofType:@"png"];
VodSVideoInfo *info = [VodSVideoInfo new];
info.title = @"short video";
info.desc = @"desc";
info.cateId = @(10);
info.tags = @"game";
[self.client uploadWithVideoPath:videoPath imagePath:imagePath svideoInfo:info accessKeyId:self.keyId accessKeySecret:self.keySecret accessToken:self.token];
VodSVideoInfo具体结构如下所示:
//标题
@property (nonatomic, copy) NSString* title;
//标签
@property (nonatomic, copy) NSString* tags;
//描述
@property (nonatomic, copy) NSString* desc;
//分类ID
@property (nonatomic, strong) NSNumber* cateId;
上传控制方法如下所示:
- 暂停上传
- (void)pause;
- 恢复上传
- (BOOL)resume;
- 取消上传
- (BOOL)cancel;
- 回调处理。
- 上传进度
每上传一个分片,会触发uploadProgressWithUploadedSize: totalSize:
回调,回调参数包括已上传文件大小uploadedSize
和总文件大小totalSize
。
- 上传成功
上传成功时,会触发uploadSuccessWithResult:
回调。回调包含上传结果VodSVideoUploadResult
,VodSVideoUploadResult
包含以下属性:
@property (nonatomic, copy) NSString* videoId;
@property (nonatomic, copy) NSString* imageUrl;
视频上传成功后会返回videoId作为视频id,拿到videoId之后需要获取播放地址进行播放。更多信息,请参见获取播放地址播放。
图片上完成后会返回imageUrl,开启URL鉴权后imageUrl会有过期时间。更多信息,请参见URL鉴权。
- 上传失败
上传失败时,会触发uploadFailedWithCode: message:
回调。在该回调方法中,可以通过code
和message
查看具体原因,并在页面上提示。更多错误码信息,请参见错误码表和OSS错误码。
- 凭证过期处理
STS过期,会触发
uploadTokenExpired
回调。在该回调方法中,可以向AppServer重新请求新的STS凭证,并调用以下方法继续上传。
- (void)refreshWithAccessKeyId:(NSString *)accessKeyId
accessKeySecret:(NSString *)accessKeySecret
accessToken:(NSString *)accessToken
expireTime:(NSString *)expireTime;
- 超时处理
上传超时,会触发uploadRetry
回调并自动重试。在该回调方法中,可以在页面上给予提示或者调用cancel
方法停止上传。此外,可以设置maxRetryCount
属性,指定最大重试次数。超时重试可以继续上传时,会触发uploadRetryResume
回调并恢复上传。
高级设置
VODUploadSVideoClient
支持以下高级设置。
/**
上传文件到服务端是否转码,默认值YES
*/
@property (nonatomic, assign) BOOL transcode;
/**
最大超时重试次数,默认值INT_MAX
*/
@property (nonatomic, assign) uint32_t maxRetryCount;
/**
超时时间
*/
@property (nonatomic, assign) NSTimeInterval timeoutIntervalForRequest;
/**
缓存文件夹位置
*/
@property (nonatomic, copy) NSString * recordDirectoryPath;
/**
是否记录上传进度(断点续传),默认值YES
*/
@property (nonatomic, assign) BOOL recordUploadProgress;
/**
分片大小,默认值1024 * 1024
*/
@property (nonatomic, assign) NSInteger uploadPartSize;
/**
vod region,默认值"cn-shanghai"
*/
@property (nonatomic, copy) NSString *region;
在文档使用中是否遇到以下问题
更多建议
匿名提交