• springboot整合阿里云视频点播接口


    官方SDK文档地址: https://help.aliyun.com/document_detail/57756.html?spm=a2c4g.11186623.6.904.4e0d3bd9VbkICO

    1、引入maven依赖

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.3.3</version>
      </dependency>
      <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-vod</artifactId>
        <version>2.15.5</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.2</version>
      </dependency>
    

     

    2、application.yml配置

    #阿里云accessKeyId
    video_accessKeyId: LTAI
    #阿里云accessKeySecret
    video_accessKeySecret: kKUciySv0
    #阿里云账号ID 值的来源https://help.aliyun.com/knowledge_detail/37196.html
    video_userId: 103
    

      

     

    3、控制器类

    AliyunVideoController.java

    (RequestUtils为获取参数的工具类,可以不使用这种方式)

    RequestUtils地址:https://www.cnblogs.com/pxblog/p/12238509.html

    package cn.controller;
    
    
    import cn.RequestUtils;
    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.aliyuncs.vod.model.v20170321.*;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import javax.annotation.PostConstruct;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.util.List;
    
    
    @Controller
    public class AliyunVideoController {
    
    
        @Value("${video_accessKeyId}")
        private String accessKeyId;
    
        @Value("${video_accessKeySecret}")
        private String accessKeySecret;
    
        @Value("${video_userId}")
        private String videoUserId;
    
        
    
        /**
         * 获取视频上传地址和凭证
         *
         */
        @RequestMapping("/aliyunVideo/createUploadVideo")
        @ResponseBody
        public void createUploadVideo(HttpServletRequest request, HttpServletResponse httpServletResponse) {
            DefaultAcsClient client = initVodClient();
            CreateUploadVideoResponse response = new CreateUploadVideoResponse();
            String title= RequestUtils.getQueryParam(request,"title");  //视频标题
            String fileName= RequestUtils.getQueryParam(request,"fileName");  //文件名称
            try {
                response = createUploadVideo(client,title,fileName);
                System.out.print("VideoId = " + response.getVideoId() + "
    ");
                System.out.print("UploadAddress = " + response.getUploadAddress() + "
    ");
                System.out.print("UploadAuth = " + response.getUploadAuth() + "
    ");
            } catch (Exception e) {
                System.out.print("ErrorMessage = " + e.getLocalizedMessage());
            }
            System.out.print("RequestId = " + response.getRequestId() + "
    ");
        }
    
    
        /**
         * 获取视频上传地址和凭证
         *
         * @param client 发送请求客户端
         * @return CreateUploadVideoResponse 获取视频上传地址和凭证响应数据
         * @throws Exception
         */
        public static CreateUploadVideoResponse createUploadVideo(DefaultAcsClient client,String title,String fileName) {
            try {
                CreateUploadVideoRequest request = new CreateUploadVideoRequest();
                request.setTitle(title);
                request.setFileName(fileName);
                return client.getAcsResponse(request);
            } catch (ClientException e) {
                e.printStackTrace();
            }
            return null;
        }
    
    
        /**
         * 刷新视频上传凭证
         *
         */
        @RequestMapping(value = "/aliyunVideo/refreshUploadVideo")
        @ResponseBody
        public void refreshUploadVideo(HttpServletRequest request){
            String videoId=RequestUtils.getQueryParam(request,"videoId");
            DefaultAcsClient client = initVodClient();
            RefreshUploadVideoResponse response = new RefreshUploadVideoResponse();
            try {
                response = refreshUploadVideo(client,videoId);
                System.out.print("UploadAddress = " + response.getUploadAddress() + "
    ");
                System.out.print("UploadAuth = " + response.getUploadAuth() + "
    ");
            } catch (Exception e) {
                System.out.print("ErrorMessage = " + e.getLocalizedMessage());
            }
            System.out.print("RequestId = " + response.getRequestId() + "
    ");
        }
    
    
        /**
         * 刷新视频上传凭证
         *
         * @param client 发送请求客户端
         * @return RefreshUploadVideoResponse 刷新视频上传凭证响应数据
         * @throws Exception
         */
        public static RefreshUploadVideoResponse refreshUploadVideo(DefaultAcsClient client,String videoId) throws Exception {
            RefreshUploadVideoRequest request = new RefreshUploadVideoRequest();
            request.setVideoId(videoId);
            return client.getAcsResponse(request);
        }
    
    
    
        /**
         * 获取播放地址函数
         * 直接获取播放地址,可以使用任意播放器直接播放
         * @param request
         */
        @RequestMapping(value = "/aliyunVideo/getPlayInfo")
        @ResponseBody
        public void getPlayInfo(HttpServletRequest request){
            String videoId=RequestUtils.getQueryParam(request,"videoId");
            DefaultAcsClient client = initVodClient();
            GetPlayInfoResponse response = new GetPlayInfoResponse();
            try {
                response = getPlayInfo(client,videoId);
                List<GetPlayInfoResponse.PlayInfo> playInfoList = response.getPlayInfoList();
                //播放地址
                for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) {
                    System.out.print("PlayInfo.PlayURL = " + playInfo.getPlayURL() + "
    ");
                }
                //Base信息
                System.out.print("VideoBase.Title = " + response.getVideoBase().getTitle() + "
    ");
            } catch (Exception e) {
                System.out.print("ErrorMessage = " + e.getLocalizedMessage());
            }
            System.out.print("RequestId = " + response.getRequestId() + "
    ");
        }
    
    
    
        /*获取播放地址函数*/
        public static GetPlayInfoResponse getPlayInfo(DefaultAcsClient client,String videoId) throws Exception {
            GetPlayInfoRequest request = new GetPlayInfoRequest();
            request.setVideoId(videoId);
            return client.getAcsResponse(request);
        }
    
        /**
         * 获取播放凭证函数
         * 必须使用阿里云播放器进行播放
         * @param request
         */
        @RequestMapping(value = "/aliyunVideo/getVideoPlayAuth")
        public void getVideoPlayAuth(HttpServletRequest request){
            String videoId=RequestUtils.getQueryParam(request,"videoId");
            DefaultAcsClient client = initVodClient();
            GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse();
            try {
                response = getVideoPlayAuth(client,videoId);
                //播放凭证
                System.out.print("PlayAuth = " + response.getPlayAuth() + "
    ");
                //VideoMeta信息
                System.out.print("VideoMeta.Title = " + response.getVideoMeta().getTitle() + "
    ");
            } catch (Exception e) {
                System.out.print("ErrorMessage = " + e.getLocalizedMessage());
            }
            System.out.print("RequestId = " + response.getRequestId() + "
    ");
    
        }
    
    
        /*获取播放凭证函数*/
        public static GetVideoPlayAuthResponse getVideoPlayAuth(DefaultAcsClient client,String videoId) throws Exception {
            GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();
            request.setVideoId(videoId);
            return client.getAcsResponse(request);
        }
    
        @PostConstruct
        public  DefaultAcsClient initVodClient() {
            try {
                String regionId = "cn-shanghai";  // 点播服务接入区域
                DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
                DefaultAcsClient client = new DefaultAcsClient(profile);
                return client;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    

      

  • 相关阅读:
    javascript--运算符
    线程池 的创建小列子,以及参数的介绍
    @SpringBootApplication注解
    SpringBoot 基础知识学习(二)——配置文件多环境配置
    springboot 配置文件读取的两种方式,以及使用到的注解解释
    用虚拟机安装了一台Linux系统,突然想克隆一台服务器,克隆后发现无法上网,如何解决?
    ---oracle 数据库的设计,PL/SQL(loop,for,if,case,while)
    xml的解析技术, 它们之间的区别?
    -----oracle优化之表分区
    --------oracle 的伪表和伪劣,简单的分页
  • 原文地址:https://www.cnblogs.com/pxblog/p/12238695.html
Copyright © 2020-2023  润新知