最近项目中使用到了腾讯云的视频点播业务,根据客户的要求需要在后台集成上传音视频功能。腾讯把web端上传已经封装好了,只需要在原有的代码上做一些逻辑修改。这里注意一点在上传音频的时候一点要将将 allowAudio
设置为 1,否则是上传不成功的。(仔细阅读文档真的很重要,我在这个问题上纠结了几天)
demo地址 : https://pan.baidu.com/s/112pS8UtdMMyY-VVBLc9FzQ 密码: qq7w
使用web端上传sdk的步骤大致如下:
1.引入sdk
<script src="//imgcache.qq.com/open/qcloud/js/vod/sdk/ugcUploader.js"></script>
2.下载腾讯的签名包,以便下一步前端请求后端获取签名。我使用的是PHP所以下载的是php的签名包
<?php
// 确定 App 的云 API 密钥
$secret_id = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$secret_key = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
// 确定签名的当前时间和失效时间
$current = time();
$expired = $current + 86400; // 签名有效期:1天
// 向参数列表填入参数
$arg_list = array(
"secretId" => $secret_id,
"currentTimeStamp" => $current,
"expireTime" => $expired,
"random" => rand());
// 计算签名
$orignal = http_build_query($arg_list);
$signature = base64_encode(hash_hmac('SHA1', $orignal, $secret_key, true).$orignal);
echo $signature;
echo "\n";
?>
3.引入腾讯的下载腾讯“web端上传demo“,我们黏贴试例代码就可。要使用大致需要两个步骤
3.1 获取签名(下面的url填上步骤2的地址)
var getSignature = function(callback){
$.ajax({
url: 'yourinterface', //获取客户端上传签名的 URL
type: 'POST',
dataType: 'json',
success: function(result){//result 是派发签名服务器的回包
//假设回包为 { "code": 0, "signature": "xxxx" }
//将签名传入 callback,SDK 则能获取这个上传签名,用于后续的上传视频步骤。
callback(result.signature);
}
});
};
3.2上传视频
qcVideo.ugcUploader.start({
videoFile: videoFile,//视频,类型为 File
getSignature: getSignature,//前文中所述的获取上传签名的函数
error: function(result){//上传失败时的回调函数
//...
console.log('上传失败的原因:' + result.msg);
},
finish: function(result){//上传成功时的回调函数
console.log('上传结果的fileId:' + result.fileId);
console.log('上传结果的视频名称:' + result.videoName);
console.log('上传结果的视频地址:' + result.videoUrl);
}
});