1. 程式人生 > 實用技巧 >阿里雲視訊點播

阿里雲視訊點播

阿里雲視訊點播

  • 註冊阿里雲開通視訊點播服務(免費),獲取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;
        }
    }
}