阿里云视频点播

  • 参考示例:https://help.aliyun.com/document_detail/53406.html
  • 注意点:有一个依赖包是下载不来的,我们需要手动下载并解压(其他包也是一样的)
  • 地址:https://help.aliyun.com/document_detail/51992.htm?spm=a2c4g.11186623.0.0.cd125b78wCpMw2#topic-1959787-table-jql-3ej-tg4
  • 找到所属语言的Demo: V1.4.14 SDK及Demo源码
  • 下载之后进行解压,在解压的目录中找到lib目录,找到你下载不来的jar包: aliyun-java-vod-upload.jar
  • 复制该jar包到你的maven的lib目录下
  • 再到开发工具中 File->Project Structure->Modules->dependencies-> + ->JARs or directories,找到你添加maven下lib目录下的jar包, Apply->OK
  • 在开发工具中刷新下maven,最后就可以了(这时可以不用再写upload的依赖了)
  • 上传测试(本地文件传输,注意点不能漏)
// 本地上传文件
@Test
public void uploadLocalFile() {
    // 第一二个参数是accessId和accessSecret,第三个参数是上传之后文件的名字,第四个参数是文件路径名称
    String accessId = "your accessId";
    String accessSecret = "your accessSecret";
    String title = "first video";
    String fileName = "绝对路径\\6 - What If I Want to Move Faster.mp4";
    UploadVideoRequest request = new UploadVideoRequest(accessId, accessSecret, title, fileName);
    /* 可指定分片上传时每个分片的大小,默认为2M字节 */
    request.setPartSize(2 * 1024 * 1024L);
    /* 可指定分片上传时的并发线程数,默认为1,(注:该配置会占用服务器CPU资源,需根据服务器情况指定)*/
    request.setTaskNum(1);
    UploadVideoImpl uploader = new UploadVideoImpl();
    UploadVideoResponse response = uploader.uploadVideo(request);
    System.out.print("RequestId=" + response.getRequestId() + "\n");  //请求视频点播服务的请求ID
    if (response.isSuccess()) {
        System.out.print("VideoId=" + response.getVideoId() + "\n");
    } else {
        /* 如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因 */
        System.out.print("VideoId=" + response.getVideoId() + "\n");
        System.out.print("ErrorCode=" + response.getCode() + "\n");
        System.out.print("ErrorMessage=" + response.getMessage() + "\n");
    }
}
  • 可采用流式文件传输(可参考博主的”对象存储”中提到的流式存储)
@Override
public String uploadAliyunVideo(MultipartFile file) throws IOException {
    String fileName = file.getOriginalFilename();
    String title = fileName.substring(0, fileName.lastIndexOf("."));
    InputStream inputStream = file.getInputStream();
    UploadStreamRequest request = new UploadStreamRequest(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET, title, fileName, inputStream);
    UploadVideoImpl uploader = new UploadVideoImpl();
    UploadStreamResponse response = uploader.uploadStream(request);
    String videoId = null;

    if(response.isSuccess()) {
        videoId = response.getVideoId();
    } else {
        videoId = response.getVideoId();
    }
    return videoId;
}
  • 此时上传文件时,会报文件大小上传错误,所以在配置文件中配置文件上传大小
最大上传单个文件大小:默认1MB
spring.servlet.multipart.max-file-size=1024MB
最大上传多个文件大小:默认10MB
spring.servlet.multipart.max-request-size=1024MB
  • 删除测试
@Override
public void deleteAliyunVideo(String videoId) throws MyException {
    try {
        // 初始化对象
        DefaultAcsClient client = InitObject.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);
        // 创建删除视频的request对象
        DeleteVideoRequest request = new DeleteVideoRequest();
        // 向request设置视频的id,也可以是"id1, id2,id3, ..."删除多个
        request.setVideoIds(videoId);
        // 调用初始化对象的方法实现删除
        client.getAcsResponse(request);
    }catch (Exception e){
        e.printStackTrace();
        throw new MyException(20001, "删除视频失败!");
    }
}

Original: https://www.cnblogs.com/aitiknowledge/p/15944638.html
Author: xsha_h
Title: 阿里云视频点播

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/608490/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • java在普通类中调用mapper、service

    初始化,添加类名静态字段,加上postConstruct注解,用于注入bean 比如有如下类想要调用registUserMapper,则实现如下: java;gutter:true…

    Java 2023年5月29日
    085
  • 【转】MyBatis执行DDL:create table,drop table等等

    https://www.cnblogs.com/zjrodger/p/5567085.html 【前言】 对MyBatis一直停留在仅仅会用的阶段,常用的场景就是通过MyBatis…

    Java 2023年5月30日
    080
  • 猴子吃桃(递归)

    递归案例实践分析 猴子偷桃 题目描述: 猴子第一天摘下若干桃子,当即吃了一半,觉得好吃不过瘾,于是又多吃了一个,,第二天又吃了前天剩余桃子数量的一半,觉得好不过瘾,于是又多吃了一个…

    Java 2023年6月6日
    0140
  • select,poll,epoll

    select、poll、epoll 区别总结: 底层实现 select/poll 首先把关注的Socket集合从用户态拷贝到内核态,然后由内核检测事件,遍历整个集合(由于线性结构实…

    Java 2023年6月8日
    069
  • MySQL九:MVCC能否解决幻读问题

    转载~ 幻读【前后多次读取,数据总量不一致】 同一个事务里面连续执行两次同样的sql语句,可能导致不同结果的问题,第二次sql语句可能会返回之前不存在的行。 事务A执行多次读取操作…

    Java 2023年6月8日
    0102
  • 高并发场景案例分享(一)分库分表

    今年在公司重构(写)了一个老项目,踩了无数的坑。 中间好几次遇到问题,甚至感觉项目可能要失败了,好在最后终于成功上线了。 虽然被坑的不要不要的,但也从中领悟到了不少东西,在这里记录…

    Java 2023年6月5日
    089
  • Springcloud学习笔记44–springboot应用中利用反射调用某个类的某个方法

    之所以方法类SpringUtil能够灵活自如地获取ApplicationContext,就是因为spring能够为我们自动地执行了setApplicationContext。但是,…

    Java 2023年5月30日
    096
  • Spring Boot:快速入门教程

    什么是Spring Boot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进…

    Java 2023年5月30日
    080
  • java mybatis 分页查询

    Page page = new Page(pageIndex + 1, pageSize); Page pagedData = signLogService.page(page,n…

    Java 2023年5月29日
    093
  • 5.1SpringBoot整合Kafka(工具安装Kafka+Tools)

    1.工具安装Kafka 上一期我分享了安装zk,下一次我们把Kafka和可视化工具一起搞起来。 注意:这个时候ZK一定要启动成功。zk安装地址:https://www.cnblog…

    Java 2023年6月9日
    0138
  • Java项目实战——瑞吉外卖Day05

    套餐管理业务开发 新增套餐 需求分析 套餐就是菜品的集合。 后台系统中可以管理套餐信息,通过新增套餐功能来添加一个新的套餐,在添加套餐时需要选择当前套餐所属的套餐分类和包含的菜品,…

    Java 2023年5月29日
    085
  • Redis和Mysql保持数据一致性

    1、简述 在高并发的场景下,大量的请求直接访问Mysql很容易造成性能问题。所以,我们都会用Redis来做数据的缓存,削减对数据库的请求。但是,Mysql和Redis是两种不同的数…

    Java 2023年6月8日
    087
  • Cnblogs-Theme-SimpleMemory 定制分享

    配置文件 这是我个人参考官方的配置指南根据自己的需求配置的, 部分功能添加后效果不理想故而注释 用户图像横幅图片,推荐下载保存到本地然后上传到 Github 再用此连接。 防止日后…

    Java 2023年6月5日
    080
  • IDEA下某个module无法build生成target

    部署web项目的时候并没有成功,说是资源不可访问,于是查找原因 1、首先检查了业务代码,看前端到controller有无问题 2、其次检查了项目的配置 3、后来发现在out输出里面…

    Java 2023年6月15日
    060
  • 1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit

    题目: Given an array of integers nums and an integer limit, return the size of the longest n…

    Java 2023年5月29日
    078
  • 设计模式之建造者模式–工厂模式、生成器模式、单例模式、原型模式

    一 、学习原型模式,从模式动机、模式定义与分析、模式实例及代码要点、模式优缺点及应用场景四个方面分析该模式。 1模式动机: √复制一个对象,从而克隆出多个与原型对象一模一样的对象—…

    Java 2023年6月7日
    087
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球