七牛云转码方式(java sdk)

在项目中使用七牛云的js sdk来上传视频文件,这样可以减少服务器压力,但七牛云的转码需要access token,出于安全考虑,在服务端转码比较好。以下搜集试验几种七牛云的转码。

  1. 预处理,也就是在生成token的时候policy带预处理接口。空间中只保存一份文档。官方文档参考https://developer.qiniu.com/dora/manual/1248/audio-and-video-transcoding-avthumb #预转持久化 小节
    /**
    * 生成带有上传policy的token
    * @param key
    * @return
    */
    public String generateUpTokenWithPolicy(String key) {
        Auth auth = Auth.create(accessKey, secretKey);
        String saveAs = UrlSafeBase64.encodeToString(bucket + ":" + key); //saveas接口 参数
        String fops = "avthumb/mp4/ab/128k/ar/22050/acodec/libfaac/r/30/vb/300k/vcodec/libx264/s/320x240/autoscale/1/stripmeta/0|saveas/" + saveAs; //处理命令 avthumb 和 saveas 通过管道符 | 进行连接
    
        StringMap putPolicy = new StringMap();
        putPolicy.put("persistentOps", fops);
        putPolicy.put("persistentPipeline", pipeline);
        String upToken = auth.uploadToken(bucket, key, 6000, putPolicy);
    
        System.out.println(upToken);
        return upToken;
    }
    

     

  2. 上传后进行单个文件转码,转成指定的格式。结果是空间中有两份文档,一份源,一份转码过的。官方文档参考https://developer.qiniu.com/dora/manual/1248/audio-and-video-transcoding-avthumb #解发持久化 小节
    /**
    * 转码
    * @param key 空间内的文件名
    * @param newKey 另存的文件名
    * @return
    */
    public String transCoding(String key, String newKey) {
    
        String saveAs = UrlSafeBase64.encodeToString(bucket + ":" + newKey);
    
        String fops = "avthumb/mp4/ab/128k/ar/22050/acodec/libfaac/r/30/vb/300k/vcodec/libx264/s/320x240/autoscale/1/stripmeta/0|saveas/" + saveAs;
    
        //获取授权对象
        Auth auth = Auth.create(accessKey, secretKey);
        //执行操作的管理对象
        OperationManager operationMgr = new OperationManager(auth, new Configuration(Zone.zone0()));
    
        StringMap putPolicy = new StringMap();
        putPolicy.put("pipeline", pipeline); // 如果没有指定会使用公共的,后果是可能等了很久都没处理
    
        try {
            //执行转码和另存 操作
            String persistentId = operationMgr.pfop(bucket, key, fops, putPolicy);
            System.out.println(persistentId);
            return persistentId;
        } catch (QiniuException e) {
            String errorCode = String.valueOf(e.response.statusCode);
            System.out.println(errorCode);
            e.printStackTrace();
        }
        return "";
    }
    

     

  3. 多码率自适应,可指定多种格式,优点是可以根据带宽自适应选择下载,缺点是会在空间中保存多份文档。官方参考文档 https://developer.qiniu.com/dora/manual/1245/multiple-rate-adaptive-transcoding-adapt 
    /**
    * 多码率自适应
    * @param key 空间内文件名
    * @return
    */
    public String adaptCoding(String key) {
    
        String saveAs = UrlSafeBase64.encodeToString(bucket + ":" + key + ".m3u8");
    
        String fops = "adapt/m3u8/multiResolution/320:240,640:480/envBandWidth/200000,800000/multiVb/200k,1200k/hlstime/10|saveas/" + saveAs;
        //获取授权对象
        Auth auth = Auth.create(accessKey, secretKey);
        //执行操作的管理对象
        OperationManager operationMgr = new OperationManager(auth, new Configuration(Zone.zone0()));
        StringMap putPolicy = new StringMap();
        putPolicy.put("pipeline", pipeline); // 如果没有指定会使用公共的,后果是可能等了很久都没处理
    
        try {
            //执行转码和另存 操作
            String persistentId = operationMgr.pfop(bucket, key, fops, putPolicy);
            System.out.println(persistentId);
            return persistentId;
        } catch (QiniuException e) {
            String errorCode = String.valueOf(e.response.statusCode);
            System.out.println(errorCode);
            e.printStackTrace();
        }
        return "";
    }
    
    m3u8 在android,ios微信中可以播放,在pc微信中不可播,chrome, ff 不可播,手机浏览器(小米自带、uc、ios自带)可以播。

     

转载于:https://my.oschina.net/u/3721535/blog/1574201

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值