腾讯云视频上传问题总结

2023-11-04

使用腾讯云提供java sdk4.4
MultipartUploadVodFile使用此接口,分片上传,分片大小设置1024*1024*20会被腾讯服务器拒绝,无法上传,
目前设置为1024*1024*5
最小分片设置为1024*512


/**
     * 域名:vod.qcloud.com
     * 接口名: MultipartUploadVodFile
     * @Description:本地上传至腾讯云
     * @param
     * @return
     * @author zhiwei.yan
     * @date 2017/8/16 0016 8:49
     */
    public static String localToTcCloud (UploadParam uploadParam) {
        QcloudApiModuleCenter module = getModule("POST");
        try{
            System.out.println("starting...");
            String fileName = uploadParam.getFileLocalPath();
            //文件大小
            long fileSize = new File(fileName).length();
            //文件sha1值
            String fileSHA1 = SHA1.fileNameToSHA(fileName);
            //每次上传字节数,可自定义
            int fixDataSize = 1024*1024*5;
            //切片上传:最小片字节数(默认不变),如果:dataSize + offset > fileSize,把这个值变小即可
            int firstDataSize = 1024*512;
            //
            int tmpDataSize = firstDataSize;
            long remainderSize = fileSize;
            int tmpOffset = 0;
            int code, flag;
            String fileId = null;
            String result = null;
            if(remainderSize<=0){
                System.out.println("wrong file path...");
            }
            long startTime = System.currentTimeMillis();
            while (remainderSize>0) {
                TreeMap<String, Object> params = new TreeMap<String, Object>();

                params.put("fileSha", fileSHA1);
                params.put("fileType", uploadParam.getFileType());
                params.put("fileName", uploadParam.getFileName());
                params.put("fileSize", fileSize);
                params.put("dataSize", tmpDataSize);
                params.put("offset", tmpOffset);
                params.put("file", fileName);
                params.put("isTranscode", 0);
                params.put("isScreenshot", 0);
                params.put("isWatermark", 0);

                result = module.call("MultipartUploadVodFile", params);
                System.out.println(result);
                JSONObject json_result = new JSONObject(result);
                code = json_result.getInt("code");
                if (code == -3002) {               //服务器异常返回,需要重试上传(offset=0, dataSize=10K,满足大多数视频的上传)
                    tmpDataSize = firstDataSize;
                    tmpOffset = 0;
                    continue;
                } else if (code != 0) {
                    return null;
                }
                flag = json_result.getInt("flag");
                if (flag == 1) {
                    fileId = json_result.getString("fileId");
                    break;
                } else {
                    tmpOffset = Integer.parseInt(json_result.getString("offset"));
                }
                remainderSize = fileSize - tmpOffset;
                if (fixDataSize < remainderSize) {
                    tmpDataSize = fixDataSize;
                } else {
                    tmpDataSize = (int) remainderSize;
                }
                long costTime = System.currentTimeMillis() - startTime;
                LOG.info("-------this video cost time : " + costTime + "ms," + costTime / 1000 + "s");
            }
            long totalTime = System.currentTimeMillis() - startTime;
            LOG.info("-------this video cost time : " + totalTime + "ms," + totalTime / 1000 + "s");
            System.out.println("end...");
            return result;
        }
        catch (Exception e) {
            e.printStackTrace();
            System.out.println("error..."+e.toString());
        }
        return null;
    }

有一份测试完整的代码,抽时间整理到github上
完整代码地址:https://github.com/yanhua711/morefeels
仅供参考,有问题欢迎一起研究

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

腾讯云视频上传问题总结 的相关文章

  • Java中ArrayList的交集和并集

    有什么方法可以做到这一点吗 我正在寻找 但没有找到 另一个问题 我需要这些方法 以便我可以过滤文件 有些是AND过滤器 有些是OR过滤器 就像集合论中的那样 所以我需要根据所有文件和保存这些文件的联合 相交 ArrayList 进行过滤 我
  • 不同帐户上的 Spring Boot、JmsListener 和 SQS 队列

    我正在尝试开发一个 Spring Boot 1 5 应用程序 该应用程序需要侦听来自两个不同 AWS 帐户的 SQS 队列 是否可以使用 JmsListener 注解创建监听器 我已检查权限是否正确 我可以使用 getQueueUrl 获取
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db

随机推荐

  • 【STM32】【HAL库】遥控关灯2 分机

    相关连接 STM32 HAL库 遥控关灯0 概述 STM32 HAL库 遥控关灯1主机 STM32 HAL库 遥控关灯2 分机 STM32 HAL库 遥控关灯3 遥控器 需求 接收RF433和红外信号 根据信号内容控制舵机 硬件设计 主控采
  • 什么是DevOps的三步工作法?

    作者介绍 张乐 DevOps时代联合创始人 高效运维社区合伙人 DevOpsDays大会 GOPS全球运维大会金牌讲师 国内首批DevOps Master 前百度资深敏捷教练 架构师 超过十四年敏捷转型 工程效能提升和大型项目管理实践经验
  • 电源篇 -- 降压电路(DCDC,非隔离)

    感谢阅读本文 在接下来很长的一段时间里 我将陆续分享项目实战经验 从电源 单片机 晶体管 驱动电路 显示电路 有线通讯 无线通信 传感器 原理图设计 PCB设计 软件设计 上位机等 给新手综合学习的平台 给老司机交流的平台 所有文章来源于项
  • 通过python实现局域网内传输大文件

    通过微信 网盘等进行传输速度很慢而且浪费流量 身旁又没有U盘等便携存储设备 那有没有一个方便的而且不用编程的局域网内传输的方式 那肯定有 step1 打开cmd cd进入需要分享的文件夹下 或者打开文件夹下 在当前路径下 打开cmd ste
  • Linux系统安装mysql

    1 卸载残留 如果服务器之前安装过mysql请先卸载 我这里是用yum安装的 现在通过yum去卸载 yum remove y mysql find name mysql 找到所有残留的文件 再通过rm rf去删除 2 卸载完成后 使用以下命
  • 乘积尾零

    如下的10行数据 每行有10个整数 请你求出它们的乘积的末尾有多少个零 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 443
  • R语言第七讲 线性回归分析案例

    题目 MASS 库中包含 Boston 波士顿房价 数据集 它记录了波士顿周围 506 个街区的 medv 房价中位数 我们将设法用 13 个预测变量如 rm 每栋住宅的平均房间数 age 平均房 龄 lstat 社会经济地位低的家庭所占比
  • 017-爬虫-爬虫结果存入 sqlserver

    先上图 结果 一 利用这个模块连接sql server import pymssql 引入pymssql模块 安装方式 conda install pymssql 二 连接失败的可能原因 参考此博客 需要开启几个服务 https blog
  • win10中anaconda安装tensorflow时报错Traceback (most recent call last): File “E:\Anaconda3\lib\site-packag

    windows系统anaconda安装tensorflow时报错解决办法 报错 Traceback most recent call last File E Anaconda3 lib site packages pip vendor ur
  • 数组的复制(Java技巧篇,四种方法详解)

    使用java lang System类中的arraycopy方法 优点 该方法可复制全部内容 也可复制一部分成为子数组 且目标数组与源数组没有关系 目标数组可以比源数组大 比较灵活 缺点 返回值为void 所以需要手动创建目标数组 参数含义
  • OA项目之我的审批(查询&会议签字&审批)

    目录 会议查询 会议签字 会议审批 讲解思路 我的审批查询功能 手写签批插件及工具类介绍 手写签批插件集成 手写签批功能实现 会议查询 MeetingInfoDao java 我的审批 public List
  • 毕业设计-基于机器学习的二维码和条形码识别

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度
  • STM32F10xNVIC探究与学习_2021-04-24

    NVIC探究与学习 嵌套向量中断控制器 NVIC NVIC 驱动有多种用途 例如使能或者失能 IRQ 中断 使能或者失能单独的 IRQ 通道 改变 IRQ 通道的优 先级等等 NVIC Enable 中断设置使能寄存器 Disable 中断
  • SQL Server 数据加密功能解析

    数据加密是数据库被破解 物理介质被盗 备份被窃取的最后一道防线 数据加密 一方面解决数据被窃取安全问题 另一方面有关法律要求强制加密数据 SQL Server的数据加密相较于其他数据库 功能相对完善 加密方法较多 通常来讲 数据加密分为对称
  • Redis的面试题

    1 为什么使用Redis做缓存 redis具有高性能和高并发的特点 redis为什么具有高性能 或者说redis为什么快 1 首先redis的数据存在内存中 所以比存储磁盘上的数据库快 2 其次redis本身使用了高效的数据结构 redis
  • win11WiFi驱动如何下载 windows11WiFi驱动下载的步骤方法

    Win11wifi驱动如何下载 现在很多用户都安装了最新的Win11系统 但是在使用的时候发现电脑原有的无线网卡驱动不匹配 需要安装win11wifi驱动 不知道win11wifi驱动下载安装方式 下面小编就教下大家win11无线网卡驱动下
  • Java中Callable接口(多线程实现的第三种办法)

    实现多线程程序的步骤 1 自定义类实现Callable接口 重写接口中的run方法 V call throws Exception 其余两种方法run 没有返回值 2 创建线程池对象 Executors 里面的那个方法 返回的是Execut
  • m1 使用anaconda安装tensorflow

    anaconda已经支持m芯片了 所以直接在官网下载 创建conda环境 conda create n tensorflow learn python 3 8 conda activate tensorflow learn 按照tensor
  • 十大新兴前端框架大盘点

    十大新兴前端框架大盘点 2019年在整体上 前端的主流框架没有太大的变化 业务代码仍由三大框架 React Vue Angular 所主宰着 打包工具一般仍使用webpack Rollup js 状态管理器还是Redux MobX 但随着这
  • 腾讯云视频上传问题总结

    使用腾讯云提供java sdk4 4 MultipartUploadVodFile使用此接口 分片上传 分片大小设置1024 1024 20会被腾讯服务器拒绝 无法上传 目前设置为1024 1024 5 最小分片设置为1024 512 域名