阅读 166

javaweb腾讯云点播上传视频(附加所需jar包)

javaweb腾讯云点播上传视频(附加所需jar包)

用web上传视频到你的腾讯云服务器。


 


首先需要购买腾讯云点播,获得你的云api密匙来操作你名下的所有腾讯云资源。




第一步:加入所需jar包  地址:https://download.csdn.net/download/weixin_42726550/10631138


第二步:构建你的Signature类


 import sun.misc.BASE64Encoder;

 

import java.net.URLEncoder;

import javax.crypto.Mac;

import javax.crypto.spec.SecretKeySpec;

 

public class Signature

{

    private String secretId;

    private String secretKey;

    private long currentTime;

    private int random;

    private int signValidDuration;

    private static final String HMAC_ALGORITHM = "HmacSHA1";

    private static final String CONTENT_CHARSET = "UTF-8";

 

    public static byte[] byteMerger(byte[] byte1, byte[] byte2)

    {

        byte[] byte3 = new byte[byte1.length + byte2.length];

        System.arraycopy(byte1, 0, byte3, 0, byte1.length);

        System.arraycopy(byte2, 0, byte3, byte1.length, byte2.length);

        return byte3;

    }

 

    public String getUploadSignature()

            throws Exception

    {

        String strSign = "";

        String contextStr = "";

 

        long endTime = this.currentTime + this.signValidDuration;

        contextStr = contextStr + "secretId=" + URLEncoder.encode(this.secretId, "utf8");

        contextStr = contextStr + "&currentTimeStamp=" + this.currentTime;

        contextStr = contextStr + "&expireTime=" + endTime;

        contextStr = contextStr + "&random=" + this.random;

        contextStr = contextStr + "&procedure=QCVB_SimpleProcessFile(1,1)";

        try

        {

            Mac mac = Mac.getInstance("HmacSHA1");

            SecretKeySpec secretKey = new SecretKeySpec(this.secretKey.getBytes("UTF-8"), mac.getAlgorithm());

            mac.init(secretKey);

            byte[] hash = mac.doFinal(contextStr.getBytes("UTF-8"));

            byte[] sigBuf = byteMerger(hash, contextStr.getBytes("utf8"));

            strSign = new String(new BASE64Encoder().encode(sigBuf).getBytes());

            strSign = strSign.replace(" ", "").replace("\n", "").replace("\r", "");

        }

        catch (Exception e)

        {

            throw e;

        }

        return strSign;

    }

 

    public void setSecretId(String secretId)

    {

        this.secretId = secretId;

    }

 

    public void setSecretKey(String secretKey)

    {

        this.secretKey = secretKey;

    }

 

    public void setCurrentTime(long currentTime)

    {

        this.currentTime = currentTime;

    }

 

    public void setRandom(int random)

    {

        this.random = random;

    }

 

    public void setSignValidDuration(int signValidDuration)

    {

        this.signValidDuration = signValidDuration;

    }

}

 UserController代码


 


  //通过shangchuan.do方法得到秘钥

//APPID APPKEY 进入腾讯云控制台获取https://console.cloud.tencent.com/cam/capi

    @RequestMapping(value = "/shangchuan.do")

    @ResponseBody

    public String shangchuan(Model model){

        Signature sign = new Signature();

        sign.setSecretId("你的id");

        sign.setSecretKey("你的key");

 

        sign.setCurrentTime(System.currentTimeMillis() / 1000L);

        sign.setRandom(new Random().nextInt(2147483647));

        sign.setSignValidDuration(172800);

 

        try

        {

            return sign.getUploadSignature();

        }

        catch (Exception e)

        {

            e.printStackTrace();

        }

        return "获取签名失败";

 

    }

 


 前台html代码


 <!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<meta name="viewport" content="width=device-width, initial-scale=1">

 

<link rel="stylesheet" href="resource/bootstrap.css" />

<script src="resource/jquery-1.9.1.js"></script>

<script src="resource/bootstrap.js" /></script>

<script src="//imgcache.qq.com/open/qcloud/js/vod/sdk/ugcUploader.js"></script>

<title>22</title>

<style>

 

</style>

</head>

<body>

<form id="form1">

    <input id="uploadVideoNow-file" type="file" />

 

</form>

 

</body>

</html>

<script>

 

       window.onload = function() {

             var mysign="";

 

            var getSignature = function(callback) {

                $.ajax({

                    url : "User/shangchuan.do", //服务器获取客户端上传签名的URL

                    type : "POST",

                    success : function(result) {

                        //result.returnData.signature为获取到的签名

                        alert("success!"+result);

                        mysign=result;

                        console.log(result);

                        callback(result);//回调签名参数

                        //callback(result.returnData.signature);

                    }

                });

            };

 

 

            $('#uploadVideoNow-file').on('change', function(e) {

                var videoFile = this.files[0];

 

                var resultMsg = qcVideo.ugcUploader.start({

 

                    videoFile : videoFile,

                    getSignature : getSignature,

                    allowAudio : 1,

                    isTranscode: 1,

                    success : function(result) {

                        alert("上传成功");

                    },

                    error : function(result) {

 

                        alert("上传失败"+result.msg);

                        console.log(result)

 

                    },

                    progress : function(result) {

                        alert("上传进度:" + result.curr);

                    },

                    finish : function(result) {

                        alert("上传完成");

 

                    }

                });

            });

        };

   

 

</script>

 


 成功后会alert输出进度,完成时为1,alert上传成功和完成


上传失败信息可以在error里加 alert(result.msg);来查看错误信息


请求签名校验失败一般是jar包不对,我上传的jar包是对的。

————————————————

版权声明:本文为CSDN博主「Mors.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_42726550/article/details/82146186


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐