客户端视频上传,是指 App 的最终用户将本地视频直接上传到腾讯云点播。客户端上传的详细介绍请参考点播 客户端上传指引,本文将以最简洁的方式介绍客户端上传的签名生成方法。
客户端上传的整体流程如下图所示:
为了支持客户端上传,开发者需要搭建两个后台服务:签名派发服务和事件通知接收服务。
至此整个视频上传-处理流程结束。
有关客户端上传签名的详细介绍请参见点播 客户端上传签名。
/**
* 计算签名
*/
function createFileUploadSignature({ timeStamp = 86400, procedure = '', classId = 0, oneTimeValid = 0, sourceContext = '' }) {
// 确定签名的当前时间和失效时间
let current = parseInt((new Date()).getTime() / 1000)
let expired = current + timeStamp; // 签名有效期:1天
// 向参数列表填入参数
let arg_list = {
//required
secretId: this.conf.SecretId,
currentTimeStamp: current,
expireTime: expired,
random: Math.round(Math.random() * Math.pow(2, 32)),
//opts
procedure,
classId,
oneTimeValid,
sourceContext
}
// 计算签名
let orignal = querystring.stringify(arg_list);
let orignal_buffer = new Buffer(orignal, "utf8");
let hmac = crypto.createHmac("sha1", this.conf.SecretKey);
let hmac_buffer = hmac.update(orignal_buffer).digest();
let signature = Buffer.concat([hmac_buffer, orignal_buffer]).toString("base64");
return signature;
}
/**
* 响应签名请求
*/
function getUploadSignature(req, res) {
res.json({
code: 0,
message: 'ok',
data: {
signature: gVodHelper.createFileUploadSignature({})
}
});
}
将 MP4 文件上传到腾讯视频云,并获得在线观看 URL, 腾讯视频云支持视频观看的就近调度、秒开播放、动态加速 以及海外接入等要求,从而确保优质的观看体验。
可以接着上篇文档中的录制或者编辑,把生成的视频进行上传,或者可以选择手机本地的视频进行上传。
对选择的视频进行压缩,使用 TXVideoEditer.generateVideo(int videoCompressed, String videoOutputPath) 接口,支持4种分辨率的压缩,后续会增加自定义码率的压缩。
把刚才生成的 MP4 文件发布到腾讯云上,App 需要拿到上传文件用的短期有效上传签名,这部分有独立的文档介绍,详情请参考 签名派发。
TXUGCPublish(位于 TXUGCPublish.h)负责将 MP4 文件发布到腾讯云视频分发平台上,以确保视频观看的就近调度、秒开播放、动态加速以及海外接入等需求。
TXPublishParam * param = [[TXPublishParam alloc] init];
param.signature = _signature; // 需要填写第四步中计算的上传签名
// 录制生成的视频文件路径 TXVideoRecordListener 的 onRecordComplete 回调中可以获取
param.videoPath = _videoPath;
// 录制生成的视频首帧预览图路径。值为通过调用 startRecord 指定的封面路径,或者指定一个路径,然后将TXVideoRecordListener 的 onRecordComplete 回调中获取到的 UIImage 保存到指定路径下,可以置为 nil。
param.coverPath = _coverPath;
TXUGCPublish *_ugcPublish = [[TXUGCPublish alloc] init];
// 文件发布默认是采用断点续传
_ugcPublish.delegate = self; // 设置 TXVideoPublishListener 回调
[_ugcPublish publishVideo:param];
发布的过程和结果是通过 TXVideoPublishListener(位于 TXUGCPublishListener.h 头文件中定义)接口反馈出来的:
@optional
-(void) onPublishProgress:(NSInteger)uploadBytes totalBytes: (NSInteger)totalBytes;
@optional
-(void) onPublishComplete:(TXPublishResult*)result;
第3步上传成功后,会返回视频的 fileId,播放地址 URL,封面 URL。用 点播播放器 可以直接传入 fileId 播放,或者 URL 播放。
本页内容是否解决了您的问题?