SDK 名称 | 云点播 iOS 上传 SDK |
版本号 | V1.2.4.0 |
SDK 介绍 | 为 App 的最终用户提供本地视频上传到云点播平台的场景 |
开发者 | 腾讯云计算(北京)有限责任公司 |
合规使用说明 | 云点播媒体上传 SDK 合规使用指南 |
个人信息处理规则 | |
下载 SDK | 1. 单击下载 iOS 上传 Demo 及源码,将下载好的压缩包解压,可以看到 Demo 目录。 2. 上传源码在 Demo/app/src/main/java/com/tencent/ugcupload/demo/videoupload 目录下。 |
集成上传库和源码
1. 拷贝上传源码目录
TXUGCUploadDemo/upload
到您的工程中。2. 在您的 Podfile 中添加如下依赖:
pod 'QCloudQuic','6.3.9'pod 'QCloudCOSXML/Slim','6.4.4'// 根据您的工程已经有该依赖可以不用额外添加pod 'AFNetworking','4.0.1'
3. 在 Build Settings 中设置 Other Linker Flags,加入参数
-ObjC
。简单视频上传
初始化上传对象
TXUGCPublish *_videoPublish = [[TXUGCPublish alloc] initWithUserID:@"upload_video_userid"];
设置上传对象回调
_videoPublish.delegate = self;
#pragma mark - TXVideoPublishListener- (void)onPublishProgress:(NSInteger)uploadBytes totalBytes:(NSInteger)totalBytes {self.progressView.progress = (float)uploadBytes/totalBytes;NSLog(@"onPublishProgress [%ld/%ld]", uploadBytes, totalBytes);}- (void)onPublishComplete:(TXPublishResult*)result {NSString *string = [NSString stringWithFormat:@"上传完成,错误码[%d],信息[%@]", result.retCode, result.retCode == 0? result.videoURL: result.descMsg];[self showErrorMessage:string];NSLog(@"onPublishComplete [%d/%@]", result.retCode, result.retCode == 0? result.videoURL: result.descMsg);}
构造上传参数
TXPublishParam *publishParam = [[TXPublishParam alloc] init];publishParam.signature = @"由您业务后台产生的签名";publishParam.videoPath = @"视频文件路径";
调用上传
[_videoPublish publishVideo:publishParam];
高级功能
携带封面
在上传参数中带上封面图片即可。
TXPublishParam *publishParam = [[TXPublishParam alloc] init];publishParam.signature = @"由您业务后台产生的签名";publishParam.coverPath = @"封面图片文件路径";publishParam.videoPath = @"视频文件路径";
取消和恢复上传
取消上传,调用
cancelPublish
接口。[_videoPublish cancelPublish];
恢复上传,用相同的上传参数(视频路径和封面路径不变),再调用一次
TXUGCPublish
的publishVideo
。断点续传
在视频上传过程中,云点播支持断点续传,即当上传意外终止时,用户再次上传该文件,可以从中断处继续上传,减少重复上传时间。断点续传的有效时间是1天,即同一个视频上传被中断,那么1天内再次上传可以直接从断点处上传,超过1天默认会重新上传完整视频。
上传参数中的
enableResume
为断点续传开关,默认是开启的。开启 https 上传
将上传参数中 TXPublishParam 中的 enableHTTPS 置为 true 即可,默认 false。
TXPublishParam *publishParam = [[TXPublishParam alloc] init];publishParam.enableHTTPS = true;
关闭日志
关闭日志需要通过 TXUGCPublish 的
setIsDebug
方法进行操作,默认开启。开启的情况下,会打印 logcat 日志,同时也会将 log 保存到 app 私有目录下。// NO 关闭日志[_videoPublish setIsDebug:NO];
图片和媒体上传
// 创建对象TXUGCPublish *_imagePublish = [[TXUGCPublish alloc] initWithUserID:@"upload_image_userid"];// 设置回调_imagePublish.mediaDelegate = self;// 构造上传参数TXMediaPublishParam *publishParam = [[TXMediaPublishParam alloc] init];publishParam.signature = @"由您业务后台产生的签名";publishParam.mediaPath = @"图片文件路径";// 上传图片或媒体文件[_imagePublish publishMedia:publishParam];
视频上传接口描述
初始化上传对象:
TXUGCPublish::initWithUserID
参数名称 | 参数描述 | 类型 | 必填 |
userID | 用户 userID,用于区分不同的用户。 | NSString | 否 |
开始上传:
TXUGCPublish.publishVideo
参数名称 | 参数描述 | 类型 | 必填 |
param | 发布参数。 | TXPublishParam | 是 |
上传参数:
TXPublishParam
参数名称 | 参数描述 | 类型 | 必填 |
signature | NSString* | 是 | |
videoPath | 本地视频文件路径。 | NSString* | 是 |
coverPath | 封面图片本地路径,可不设置。 | NSString* | 否 |
fileName | 上传到腾讯云的视频文件名称,不填默认用本地文件名。 | NSString* | 否 |
enableResume | 是否启动断点续传,默认开启。 | BOOL | 否 |
enableHttps | 是否启动 HTTPS,默认关闭。 | BOOL | 否 |
enablePreparePublish | 是否开启预上传机制,默认开启。预上传机制可以大幅提升文件的上传质量 | BOOL | 否 |
sliceSize | 分片大小,支持最小为1M,最大10M,默认为上传文件大小除以10 | long | 否 |
concurrentCount | 分片上传最大并发数量,默认为4个 | int | 否 |
trafficLimit | 限速值设置范围为819200 ~ 838860800,即100KB/s ~ 100MB/s,如果超出该范围会返回400错误。不建议将该值设置太小,防止超时。-1 表示不限速 | long | 否 |
uploadResumController | 续点控制器,可自行实现续点键值的计算和保存,默认使用md5计算文件键值 | id<IUploadResumeController> | 否 |
设置上传回调:
TXUGCPublish.delegate
成员变量名称 | 变量描述 | 类型 | 必填 |
delegate | 上传进度和结果回调代理。 | TXVideoPublishListener | 是 |
上传进度回调:
onPublishProgress
变量名称 | 变量描述 | 类型 |
uploadBytes | 已经上传的字节数。 | NSInteger |
totalBytes | 总字节数。 | NSInteger |
上传结果回调:
onPublishComplete
变量名称 | 变量描述 | 类型 |
result | 上传结果。 | TXPublishResult |
上传事件回调:
onPublishEvent
变量名称 | 变量描述 | 类型 |
evt | 事件,用于调试打印。 | NSDictionary |
上传结果:
TXPublishResult
成员变量名称 | 变量说明 | 类型 |
retCode | 错误码。 | int |
descMsg | 上传失败的错误描述。 | NSString |
videoId | 点播视频文件 ID。 | NSString |
videoURL | 视频存储地址。 | NSString |
coverURL | 封面存储地址。 | NSString |
预上传:
TXUGCPublishOptCenter.prepareUpload
参数名称 | 参数描述 | 类型 | 必填 |
signature | NSString | 是 |
错误码
SDK 通过
TXVideoPublishListener
接口来订阅视频上传相关的状态。因此,可以用TXPublishResult
中的retCode
来确认视频发布的情况。错误码 | 在 TVCCommon 中所对应的常量 | 含义 |
0 | TVC_OK | 上传成功 |
1001 | TVC_ERR_UGC_REQUEST_FAILED | 请求上传失败,通常是客户端签名过期或者非法,需要 App 重新申请签名 |
1002 | TVC_ERR_UGC_PARSE_FAILED | 请求信息解析失败 |
1003 | TVC_ERR_VIDEO_UPLOAD_FAILED | 上传视频失败 |
1004 | TVC_ERR_COVER_UPLOAD_FAILED | 上传封面失败 |
1005 | TVC_ERR_UGC_FINISH_REQ_FAILED | 结束上传请求失败 |
1006 | TVC_ERR_UGC_FINISH_RSP_FAILED | 结束上传响应错误 |
1008 | TVC_ERR_FILE_NOT_EXIST | 传入的文件路径上文件不存在 |
1009 | TVC_ERR_ERR_UGC_PUBLISHING | 视频正在上传中 |
1010 | TVC_ERR_UGC_INVALID_PARAME | 无效参数 |
1012 | TVC_ERR_INVALID_SIGNATURE | 短视频上传签名为空 |
1013 | TVC_ERR_INVALID_VIDEOPATH | 视频路径为空 |
1017 | TVC_ERR_USER_CANCLE | 用户调用取消上传 |
1020 | TVC_ERR_UPLOAD_SIGN_EXPIRED | 签名过期 |
图片和媒体上传接口描述
初始化上传对象:
TXUGCPublish::initWithUserID
参数名称 | 参数描述 | 类型 | 必填 |
userID | 用户 userID,用于区分不同的用户。 | NSString | 否 |
开始上传:
TXUGCPublish.publishMedia
参数名称 | 参数描述 | 类型 | 必填 |
param | 发布参数。 | TXMediaPublishParam | 是 |
上传参数:
TXMediaPublishParam
参数名称 | 参数描述 | 类型 | 必填 |
signature | NSString* | 是 | |
mediaPath | 本地图片/媒体文件路径。 | NSString* | 是 |
fileName | 上传到腾讯云的图片/媒体文件名称,不填默认用本地文件名。 | NSString* | 否 |
enableResume | 是否启动断点续传,默认开启。 | BOOL | 否 |
enableHttps | 是否启动 HTTPS,默认关闭。 | BOOL | 否 |
enablePreparePublish | 是否开启预上传机制,默认开启。预上传机制可以大幅提升文件的上传质量 | BOOL | 否 |
sliceSize | 分片大小,支持最小为1M,最大10M,默认为上传文件大小除以10 | long | 否 |
concurrentCount | 分片上传最大并发数量,默认为4个 | int | 否 |
trafficLimit | 限速值设置范围为819200 ~ 838860800,即100KB/s ~ 100MB/s,如果超出该范围会返回400错误。不建议将该值设置太小,防止超时。-1 表示不限速 | long | 否 |
uploadResumController | 续点控制器,可自行实现续点键值的计算和保存,默认使用md5计算文件键值 | id<IUploadResumeController> | 否 |
设置上传回调:
TXUGCPublish.TXMediaPublishListener
成员变量名称 | 变量描述 | 类型 | 必填 |
mediaDelegate | 上传进度和结果回调代理。 | TXMediaPublishListener | 是 |
上传进度回调:
onMediaPublishProgress
变量名称 | 变量描述 | 类型 |
uploadBytes | 已上传的字节数。 | NSInteger |
totalBytes | 总字节数。 | NSInteger |
上传结果回调:
onMediaPublishComplete
变量名称 | 变量描述 | 类型 |
result | 上传结果。 | TXMediaPublishResult |
上传事件回调:
onMediaPublishEvent
变量名称 | 变量描述 | 类型 |
evt | 事件,用于调试打印。 | NSDictionary |
上传结果:
TXMediaPublishResult
成员变量名称 | 变量说明 | 类型 |
retCode | 错误码。 | int |
descMsg | 上传失败的错误描述。 | NSString |
mediaId | 图片/媒体文件 ID。 | NSString |
mediaURL | 图片/媒体存储地址。 | NSString |
预上传:
TXUGCPublishOptCenter.prepareUpload
参数名称 | 参数描述 | 类型 | 必填 |
signature | NSString | 是 |
错误码
SDK 通过
TXMediaPublishListener
接口来订阅图片/媒体上传相关的状态。因此,可以用TXMediaPublishResult
中的retCode
来确认图片/媒体发布的情况。错误码 | 在 TVCCommon 中所对应的常量 | 含义 |
0 | TVC_OK | 上传成功 |
1001 | TVC_ERR_UGC_REQUEST_FAILED | 请求上传失败,通常是客户端签名过期或者非法,需要 App 重新申请签名 |
1002 | TVC_ERR_UGC_PARSE_FAILED | 请求信息解析失败 |
1003 | TVC_ERR_VIDEO_UPLOAD_FAILED | 上传视频失败 |
1004 | TVC_ERR_COVER_UPLOAD_FAILED | 上传封面失败 |
1005 | TVC_ERR_UGC_FINISH_REQ_FAILED | 结束上传请求失败 |
1006 | TVC_ERR_UGC_FINISH_RSP_FAILED | 结束上传响应错误 |
1008 | TVC_ERR_FILE_NOT_EXIST | 传入的文件路径上文件不存在 |
1009 | TVC_ERR_ERR_UGC_PUBLISHING | 视频正在上传中 |
1010 | TVC_ERR_UGC_INVALID_PARAME | 无效参数 |
1012 | TVC_ERR_INVALID_SIGNATURE | 短视频上传签名为空 |
1013 | TVC_ERR_INVALID_VIDEOPATH | 视频路径为空 |
1017 | TVC_ERR_USER_CANCLE | 用户调用取消上传 |
1020 | TVC_ERR_UPLOAD_SIGN_EXPIRED | 签名过期 |