SpringBoot整合阿里云视频点播的过程详解

目录
  • 1.准备工作
  • 2.服务端SDK的使用
    • 2.1 导入依赖
    • 2.2 初始化类
    • 2.3 创建读取公共常量的工具类
    • 2.4 获取视频播放地址
    • 2.5 获取视频播放凭证
    • 2.6 上传视频到阿里云视频点播服务
  • 3.springboot项目中实践
    • 3.1 上传视频到阿里云
    • 3.2 根据视频id删除视频

1.准备工作

首先需要在阿里云开通视频点播服务:

1.首先,进入到阿里云视频点播平台,点击开通服务,选择按使用流量计费即可

2.开通之后点击进入管理控制台即可

视频点播有什么用?

视频点播(ApsaraVideo for VoD)是集音视频采集、编辑、上传、自动化转码处理、媒体资源管理、分发加速于一体的一站式音视频点播解决方案。

2.服务端SDK的使用

官方文档链接:Java SDK

SDK的方式将api进行了进一步的封装,不用自己创建工具类。 我们可以基于服务端SDK编写代码来调用点播API,实现对点播产品和服务的快速操作。

2.1 导入依赖

注意:环境必须是JDK6 及以上版本

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.5.1</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-vod</artifactId>
    <version>2.15.11</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.62</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-kms</artifactId>
    <version>2.10.1</version>
</dependency>

2.2 初始化类

根据官方文档示例创建初始化类InitObject

/**
 * @author xppll
 * @date 2021/12/5 13:57
 */
public class InitObject {
    //初始化:需要传入accessKeyId+accessKeySecret
    public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
        String regionId = "cn-shanghai";  //点播服务接入区域
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);
        return client;
    }
}

accessKeyIdaccessKeySecret的获取:

这里的初始化方法需要传入账号Access Key信息,可以在阿里云Access Key管理创建主账号Access Key

点播服务接入区域regionId的获取:

点击点播控制台的存储管理,查看自己所选的区域:

查看接入区域标识对应API/SDKRegionId参数:

2.3 创建读取公共常量的工具类

首先在配置文件application.properties添加:

aliyun.vod.file.keyid=LTAI5tGqf41adadaxxAa
aliyun.vod.file.keysecret=zE4nEzmcU7GxxxxmTgWRk0tytJKD

# 最大上传单个文件大小:默认1M
spring.servlet.multipart.max-file-size=1024MB
# 最大置总上传的数据大小 :默认10M
spring.servlet.multipart.max-request-size=1024MB

在创建读取公共常量的工具类ConstantVodUtils

/**
 * @author xppll
 * @date 2021/12/2 19:11
 */
@Component
public class ConstantVodUtils implements InitializingBean {

    @Value("${aliyun.vod.file.keyid}")
    private String keyId;
    @Value("${aliyun.vod.file.keysecret}")
    private String keySecret;

    //定义公共静态常量
    public static String ACCESS_KEY_ID;
    public static String ACCESS_KEY_SECRET;

    @Override
    public void afterPropertiesSet() throws Exception {
        ACCESS_KEY_ID = keyId;
        ACCESS_KEY_SECRET = keySecret;
    }
}

2.4 获取视频播放地址

首先手动先在点播控制台上传一个视频用于测试:

步骤:

  1. 创建初始化对象
  2. 创建获取视频地址requestresponse
  3. request对象里面设置视频id
  4. 用初始化对象里面的方法getAcsResponse,传递request,获取数据
  5. 打印信息

代码如下:

//获取视频播放地址
private static void getPlayUrl() throws ClientException {
    //1.创建初始化对象
    DefaultAcsClient client = InitObject.initVodClient(ConstantVodUtils.ACCESS_KEY_ID,ConstantVodUtils.ACCESS_KEY_SECRET);
    //2.创建获取视频地址request和response
    GetPlayInfoRequest request = new GetPlayInfoRequest();
    GetPlayInfoResponse response = new GetPlayInfoResponse();
    //3.向request对象里面设置视频id
    request.setVideoId("ffe90bfaxxx94d0d722caad");
    //4.调用初始化对象里面的方法,传递request,获取数据
    response = client.getAcsResponse(request);

    List<GetPlayInfoResponse.PlayInfo> playInfoList = response.getPlayInfoList();
    //播放地址
    for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) {
        System.out.print("PlayInfo.PlayURL = " + playInfo.getPlayURL() + "\n");
    }
    //Base信息
    System.out.print("VideoBase.Title = " + response.getVideoBase().getTitle() + "\n");
}

测试成功:

2.5 获取视频播放凭证

步骤与获取视频播放地址差不多,区别是获取requestresponse方式不同:

//获取视频播放凭证
private static void getPlayAuth() throws ClientException {
    //1.创建初始化对象
    DefaultAcsClient client = InitObject.initVodClient(ConstantVodUtils.ACCESS_KEY_ID,ConstantVodUtils.ACCESS_KEY_SECRET);
    //2.创建获取视频凭证的request和response
    GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();
    GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse();
    //3.向request设置视频id
    request.setVideoId("ffe90bfaaadd4xxxx0d722caad");
    //4.调用初始化对象的方法得到凭证
    response = client.getAcsResponse(request);
    //播放凭证
    System.out.println("playauth" + response.getPlayAuth());
}

测试成功:

2.6 上传视频到阿里云视频点播服务

可以参考:Java上传SDK

需要导入依赖:

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.5.1</version>
</dependency>
<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.10.2</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-vod</artifactId>
    <version>2.15.11</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.28</version>
</dependency>
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20170516</version>
</dependency>
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.2</version>
</dependency>

代码如下:

//上传视频到阿里云视频点播服务
private static void uploadVideo() {
    String accessKeyId = ConstantVodUtils.ACCESS_KEY_ID;
    String accessKeySecret = ConstantVodUtils.ACCESS_KEY_SECRET;
    //上传后视频的标题
    String title = "xpp1";
    //本地文件上传路径
    String fileName = "D:/6 - What If I Want to Move Faster.mp4";
    UploadVideoRequest request = new UploadVideoRequest(accessKeyId, accessKeySecret, title, fileName);
    //可指定分片上传时每个分片的大小,默认为2M字节
    request.setPartSize(2 * 1024 * 1024L);
    //可指定分片上传时的并发线程数,默认为1
    request.setTaskNum(1);
    UploadVideoImpl uploader = new UploadVideoImpl();
    UploadVideoResponse response = uploader.uploadVideo(request);

    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");
    }
}

测试成功:

3.springboot项目中实践

创建初始化类:

/**
 * @author xppll
 * @date 2021/12/5 13:57
 */
public class InitVodCilent {
    //初始化:需要传入accessKeyId+accessKeySecret
    public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
        String regionId = "cn-shanghai";  // 点播服务接入区域
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);
        return client;
    }
}

3.1 上传视频到阿里云

controller层:

@Autowired
private VodService vodService;
//上传视频到阿里云
@PostMapping("uploadAlyiVideo")
public R uploadAlyVideo(MultipartFile file){
    //返回上传视频id
    String videoId=vodService.uploadVideoAly(file);
    //将视频`id`返回给前端
    return R.ok().data("videoId",videoId);
}

service层:

//上传视频到阿里云
@Override
public String uploadVideoAly(MultipartFile file) {
    try {
        //fileName:上传文件原始名称
        String fileName = file.getOriginalFilename();
        //title:上传之后显示名称(例子:01.mp4=>01)
        String title = fileName.substring(0, fileName.lastIndexOf("."));

        //inputStream:上传文件输入流
        InputStream inputStream = file.getInputStream();
        //获得request
        UploadStreamRequest request = new UploadStreamRequest(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET, title, fileName, inputStream);

        UploadVideoImpl uploader = new UploadVideoImpl();
        //上传获得response
        UploadStreamResponse response = uploader.uploadStream(request);

        String videoId = null;
        if (response.isSuccess()) {
            //得到视频id
            videoId = response.getVideoId();
        } else { //如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因
            videoId = response.getVideoId();

        }
        return videoId;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

3.2 根据视频id删除视频

controller层:

//根据视频id删除视频
@DeleteMapping("removeAlyVideo/{id}")
public R removeAlyVideo(@PathVariable String id){
    vodService.deleteAlyVideo(id);
    return R.ok();
}

service层:

//根据视频id删除视频
@Override
public void deleteAlyVideo(String id) {
    try {
        //1.初始化对象
        DefaultAcsClient client = InitVodCilent.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);
        //2.创建删除视频的request对象
        DeleteVideoRequest request=new DeleteVideoRequest();
        //3.向request设置视频id
        request.setVideoIds(id);
        //4.调用初始化对象的方法实现删除
        client.getAcsResponse(request);
    } catch (Exception e) {
        e.printStackTrace();
        throw new GuliException(20001,"删除视频失败");
    }
}

到此这篇关于SpringBoot整合阿里云视频点播的文章就介绍到这了,更多相关SpringBoot阿里云视频点播内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • springBoot接入阿里云oss的实现步骤

    maven导入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot<

  • springboot2.x 接入阿里云市场短信发送的实现

    1.短信平台购买次数地址 https://market.aliyun.com/products/57000002/cmapi00046920.html 提供测试模板.免审核.测试成本更低 2.测试学习使用的话,3块钱75多次够用了 3.购买后在跳转成功页面记录 AppSecret.key.code  4.记录模板ID 5.上代码环节 @Configuration public class RestTemplateConfig { @Bean public RestTemplate restTem

  • 关于springboot集成阿里云短信的问题

    目录 1.获取签名与模板 2.编写模板与签名的枚举类 3.配置类 4.测试类 ​ 1.获取签名与模板 进入阿里云平台,进入短信服务模块,在以下位置添加签名和模板(格式一定按照要求填写 审批的比较严格) 2.编写模板与签名的枚举类 在上文获取模板与签名成功后,并作为常量放在枚举类中. public enum DySmsEnum { /** * 本类此处需要修改(短信模板编码,签名,参数) */ LOGIN_TEMPLATE_CODE("SMS_187570276", "自定义软

  • SpringBoot整合阿里云视频点播的过程详解

    目录 1.准备工作 2.服务端SDK的使用 2.1 导入依赖 2.2 初始化类 2.3 创建读取公共常量的工具类 2.4 获取视频播放地址 2.5 获取视频播放凭证 2.6 上传视频到阿里云视频点播服务 3.springboot项目中实践 3.1 上传视频到阿里云 3.2 根据视频id删除视频 1.准备工作 首先需要在阿里云开通视频点播服务: 1.首先,进入到阿里云视频点播平台,点击开通服务,选择按使用流量计费即可 2.开通之后点击进入管理控制台即可 视频点播有什么用? 视频点播(ApsaraV

  • SpringBoot整合阿里 Druid 数据源的实例详解

    目录 1. 在容器中注册 DruidDataSource 数据源. 2. Druid 数据源各种属性配置方法 3. 开启Druid的内置监控页面 4. 打开 Druid 监控统计功能 5. 配置Web和Spring关联监控 6. 配置防火墙: 7. 给监控页加入账号密码 前言:今年是我的第二个 1024 了 ,和我一起大声说出来,技术宅改变世界!!! 本节主要介绍的是:SpringBoot 整合阿里 Druid 数据源手动配置方法 1. 在容器中注册 DruidDataSource 数据源. 编

  • SpringBoot整合Spring Data Elasticsearch的过程详解

    Spring Data Elasticsearch提供了ElasticsearchTemplate工具类,实现了POJO与elasticsearch文档之间的映射 elasticsearch本质也是存储数据,它不支持事物,但是它的速度远比数据库快得多, 可以这样来对比elasticsearch和数据库 索引(indices)--------数据库(databases) 类型(type)------------数据表(table) 文档(Document)---------------- 行(ro

  • SpringBoot整合阿里云开通短信服务详解

    准备工作 开通短信服务 如果开通不成功,就只能借下别人已经开通好的短信,如果不想重复,可在其下创建一个新的模板管理 这里只是介绍如何使用 导入依赖 com.aliyun aliyun-java-sdk-core 4.5.1 com.aliyun aliyun-java-sdk-dysmsapi 1.1.0 com.alibaba fastjson 1.2.62 发送验证码到手机上,验证码生成工具类(内容较为固定,也可根据需求改) package com.xsha.msmservice.utils

  • springboot整合阿里云oss上传的方法示例

    OSS申请和配置 1. 注册登录 输入网址:https://www.aliyun.com/product/oss 如果没有账号点击免费注册,然后登录. 2.开通以及配置 点击立即开通 进入管理控制台 第一次使用会出现引导,按引导点击"我知道了",然后点击创建Bucket. 如果没有存储包或流量包点击购买. 点击确定,返回主页面,出现该页面,点击我知道了 将EndPoint记录下来,方便后期添加到我们项目的配置文件中 创建 AccessKeyID 和 AccessKeySecret 点击

  • SpringBoot整合阿里云OSS对象存储服务的实现

    今天来整合一下SpringBoot和阿里云OSS对象存储服务. 一.配置OSS服务 先在阿里云开通对象存储服务,拿到AccessKeyId.AccessKeySecret. 创建你的bucket(存储空间),相当于一个一个的文件夹目录.按业务需求分类存储你的文件,图片,音频,app包等等.创建bucket是要选择该bucket的权限,私有,公共读,公共读写,按需求选择.创建bucket时对应的endpoint要记住,上传文件需要用到. 可以配置bucket的生命周期,比如说某些文件有过期时间的,

  • SpringBoot整合阿里云OSS对象存储服务实现文件上传

    1. 准备工作: 一.首先登录阿里云OSS对象存储控制台创建一个Bucket作为你的存储空间. 二.创建Access Keyan按要求创建进行,这里的方法步骤我就不展现出来了,你们可以自行查询阿里云文档,这个获取值本身就不难. 重点:记下你的AccessKey ID.AccessKey Secret以及你刚才创建的Buacket名字BucketName. 2. 配置: 在pom里引入oss要用的依赖 <dependency> <groupId>com.aliyun.oss</

  • SpringBoot整合阿里云短信服务的方法

    目录 一.新建短信微服务 1.在service模块下创建子模块service-msm 3.配置application.properties 4.创建启动类 二.阿里云短信服务 三.编写发送短信接口 1.在service-msm的pom中引入依赖 2.编写controller,根据手机号发送短信 3.编写service 一.新建短信微服务 1.在service模块下创建子模块service-msm 2.创建controller和service代码 3.配置application.propertie

  • Springboot整合实现邮件发送的原理详解

    目录 开发前准备 基础知识 进阶知识 加入依赖 配置邮件 测试邮件发送 通常在实际项目中,也有其他很多地方会用到邮件发送,比如通过邮件注册账户/找回密码,通过邮件发送订阅信息等等.SpringBoot集成邮件服务非常简单,通过简单的学习即可快速掌握邮件业务类的核心逻辑和企业邮件的日常服务 开发前准备 首先注册发件邮箱并设置客户端授权码,这里以QQ 免费邮箱为例,其他的邮箱的配置也大同小异. 登录 QQ 邮箱,点击设置->账户,开启IMAP/SMTP服务,并生成授权码. 基础知识 电子邮件需要在邮

  • SpringBoot整合Apollo配置中心快速使用详解

    目录 一.简介 二.使用 1. 测试项目搭建 2. Apollo配置中心的配置 3. 项目启动与测试 4.常见整合问题 附录 一.简介 1.Apollo 是什么?Apollo(阿波罗)是携程框架部门研发的分布式配置中心.服务端基于Spring Boot和Spring Cloud开发. 2.为什么要使用Apollo? 安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏 时效性:普通方式配置,修改配置,需要重启服务才能生效 局限性:无法支持动态调整:例如日志开关.功能开关 二.使用 1. 测试项

随机推荐