【谷粒学院】阿里云视频点播VOD功能笔记

1、准备工作

首先配置文件中需要配置好阿里云相关id和密钥(和阿里云OSS配置一样)
如果不知道id和密钥,就去阿里云官网进行服务开通申请就可以得到
在这里插入图片描述

2、代码详解

配置类:用于读取配置文件中的id和密钥

@Component
public class ConstantVodUtil implements InitializingBean {
    
    
    @Value("${aliyun.vod.file.keyid}")
    private String keyId;
    @Value("${aliyun.vod.file.keysecret}")
    private String keySecret;


    public static String ACCESS_KEY_SECRET;
    public static String ACCESS_KEY_ID;


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

Controller:

@RestController
@RequestMapping("/eduvod/video")
public class VodController {
    
    
    @Autowired
    private VodService vodService;

    /**
     * 上传视频到阿里云
     */
    @PostMapping("/uplaodVideo")
    public R uplaodVideo(MultipartFile file) {
    
    
        //返回上传视频的id
        String videoId = vodService.uploadVideo(file);
        return R.ok().data("videoId", videoId);
    }
}

Service:

@Service
public class VodServiceImpl implements VodService {
    
    
    /**
     * 上传视频
     *
     * @param file
     * @return
     */
    @Override
    public String uploadVideo(MultipartFile file) {
    
    
        try {
    
    
            //上传文件的原始名称
            String fileName = file.getOriginalFilename();
            //上传后显示的名称,这里我想去掉后缀名,例如.mp4
            String title = fileName.substring(0, fileName.lastIndexOf("."));
            //文件输入流
            InputStream inputStream = file.getInputStream();
            UploadStreamRequest request = new UploadStreamRequest(ConstantVodUtil.ACCESS_KEY_ID,
                    ConstantVodUtil.ACCESS_KEY_SECRET, title, fileName, inputStream);
            UploadVideoImpl uploader = new UploadVideoImpl();
            UploadStreamResponse response = uploader.uploadStream(request);
            //获取到视频id(这个很重要,有了视频id从才可以获取播放地址和凭证)
            String videoId = response.getVideoId();
            return videoId;
        } catch (Exception e) {
    
    
            e.printStackTrace();
            return null;
        }
    }
}

解释说明:为什么接口最终需要返回视频id?

有了视频id,就可以通过官方SDK(就是api的意思)获取到视频的播放地址和凭证
有了播放地址,就可以通过浏览器进行视频播放,那么凭证有什么用呢?
项目中上传的视频一般需要通过模板转码进行加密,也就是说,不能直接通过网址进行播放
也就是说,加密后的视频需要网址 + 凭证进行播放,否则无法播放视频 、

3、测试结果

通过swagger进行测试,可以上传成功,并且能拿到视频id:
在这里插入图片描述
阿里云媒资库中可有看到刚刚上传成功的视频,测试成功!
在这里插入图片描述

Guess you like

Origin blog.csdn.net/weixin_46594796/article/details/122481206