zoukankan      html  css  js  c++  java
  • 阿里云视频点播

    阿里云视频点播

    • 注册阿里云开通视频点播服务(免费),获取key和keysecret

    1、导依赖

    • aliyun-java-vod-upload这个包没有开源,需要自己导入jar
    <dependency>          //这个包在maven中没有,需要自己导入
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-vod-upload</artifactId>
        <version>1.4.12</version>
        <scope>compile</scope>
    </dependency>
    
    <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.1.0</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-vod</artifactId>
        <version>2.15.10</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>
    

    2、配置基本信息

    server.port=8006
    
    spring.application.name=service_vod
    
    
    aliyun.vod.file.keyid=LTAI4G8**********8J7x6x8xs
    aliyun.vod.file.keysecret=hWMX*************LJvDj6
    
    
    spring.servlet.multipart.max-file-size =100MB		//限制视频大小
    spring.servlet.multipart.max-request-size=100MB   
    

    3、读取配置的基本信息

    package com.wagn.vod.utils;
    
    import org.springframework.beans.factory.InitializingBean;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    @Component
    public class ReadUtil implements InitializingBean {
        @Value("${aliyun.vod.file.keyid}")
        private String keyid;
    
        @Value("${aliyun.vod.file.keysecret}")
        private String keysecret;
    
        public static String KEY_ID;
    
        public static String KEY_SECRET;
    
        @Override
        public void afterPropertiesSet() throws Exception {
            KEY_ID = keyid;
            KEY_SECRET = keysecret;
        }
    }
    

    4、接口接受file流

    package com.wagn.vod.controller;
    
    import com.wagn.vod.service.VodService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.multipart.MultipartFile;
    
    @RestController
    @RequestMapping("/vod")
    public class VodController {
    
        @Autowired
        private VodService vodService;
    
        @PostMapping("upload")
        public String upload(MultipartFile file){
            String rs = vodService.upload(file);
            return rs;
        }
    }
    

    5、执行上传file,成功则返回视频ID

    • 返回视频ID
    package com.wagn.vod.service.Impl;
    
    import com.aliyun.vod.upload.impl.UploadVideoImpl;
    import com.aliyun.vod.upload.req.UploadStreamRequest;
    import com.aliyun.vod.upload.resp.UploadStreamResponse;
    
    import com.wagn.vod.service.VodService;
    import com.wagn.vod.utils.ReadUtil;
    import org.springframework.stereotype.Service;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    @Service
    public class VodServiceImpl implements VodService {
        @Override
        public String upload(MultipartFile file) {
            try {
                String fileName = file.getOriginalFilename();
                String title = fileName.substring(0,fileName.lastIndexOf('.'));
                InputStream inputStream = file.getInputStream();
    
                UploadStreamRequest request = new UploadStreamRequest(ReadUtil.KEY_ID, ReadUtil.KEY_SECRET, title, fileName, inputStream);
                UploadVideoImpl uploader = new UploadVideoImpl();
                UploadStreamResponse response = uploader.uploadStream(request);
                if (response.isSuccess()) {
                    //保存id到小节
                    return response.getVideoId();
                } else { //如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因
                    return null;
                }
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
        }
    }
    
  • 相关阅读:
    14 break
    13 for循环
    Python 3.7 将引入 dataclass 装饰器
    工程师如何在面试中脱颖而出
    如何避免 async/await 地狱
    命令行里打 cd 简直是浪费生命
    GitHub 十大 CI 工具
    GitHub CEO:GitHub 十年,感谢有你
    如何在 2 分钟内入睡(二战时期美国飞行员训练法)
    一分钟了解 TCP/IP 模型
  • 原文地址:https://www.cnblogs.com/yizhixiang/p/13658933.html
Copyright © 2011-2022 走看看