spring boot 整合 阿里云视频点播

详细配置请去阿里云官网查看

第一步 开通视频点播服务

第二步 添加依赖

<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-core</artifactId>
			<version>4.5.1</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>
		//需要自己下载到本地
		<dependency>
			<groupId>com.aliyun</groupId>
			<artifactId>aliyun-sdk-vod-upload</artifactId>
			<version>1.4.12</version>
		</dependency>

第三步 创建一个初始化类

	public class initvodClient {
    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;
    }
}

第四步 创建service类 设置自己的阿里云oss密钥

	private static final String accessKeyId ="LTAI4G6nbXhZuEfz4jjGnhE5"; 
    //账号AK信息请填写(必选)
    private static final String accessKeySecret = "o4gojeDoqjoEEyLW8DIpFrvzxYbNZT";

文件流上传视频 返回视频的ID

@Override
    public void testUploadStream(MultipartFile file) {
        try {
            InputStream inputStream = file.getInputStream();
            String filename = file.getOriginalFilename();
            String title=filename.substring(0,filename.lastIndexOf("."));
            UploadStreamRequest request = new UploadStreamRequest(accessKeyId, accessKeySecret, title, filename, inputStream);
            //设置组 可以加密
            request.setTemplateGroupId("c54a3d0b92`在这里插入代码片`872d37e718bf8c9cc53a73");
            UploadVideoImpl uploadVideo = new UploadVideoImpl();
            UploadStreamResponse response = uploadVideo.uploadStream(request);
            String id =null;
            if(response.isSuccess()){
                id= response.getVideoId();
            }else {
                id= response.getVideoId();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

通过ID查找视频的URL 播放视频(只针对未加密视频)

public void getPlayInfo(String id){
        System.out.println(id);
        DefaultAcsClient client = initVodClient(accessKeyId, accessKeySecret);
        GetPlayInfoResponse response = new GetPlayInfoResponse();
        GetPlayInfoRequest request = new GetPlayInfoRequest();
        request.setVideoId(id);
        try {
            response=client.getAcsResponse(request);
            List<GetPlayInfoResponse.PlayInfo> playInfoList = response.getPlayInfoList();
            for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) {
            	//获取播放URL
                System.out.println(playInfo.getPlayURL());
            }
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }

通过ID获得播放凭证 前端获得ID+凭证 就可以播放加密视频了

@Override
    public void getAuthInfo(String id){
        System.out.println(id);
        DefaultAcsClient client = initvodClient.initVodClient(accessKeyId, accessKeySecret);
        GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();
        GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse();
        request.setVideoId(id);
        try {
            response=client.getAcsResponse(request);


                System.out.println(response.getPlayAuth());

        } catch (ClientException e) {
            e.printStackTrace();
        }
    }

根据视频ID删除视频

@Override
    public void delete(String id){
        DefaultAcsClient client = initVodClient(accessKeyId, accessKeySecret);
        DeleteVideoRequest request = new DeleteVideoRequest();
        可以批量删除 传入list,将List转给以","分割的字符串
        request.setVideoIds(id);
        DeleteVideoResponse response = new DeleteVideoResponse();
        try {
            response=client.getAcsResponse(request);
        } catch (ClientException e) {
            e.printStackTrace();
        }

    }

创建controller 使用swagger测试 (注意 上传需要改yml配置 修改最大上传大小)

spring:
  servlet:
    multipart:
      max-file-size: 1024MB
      max-request-size: 1024MB
@RestController
@RequestMapping("/vod")
public class VodController {
    @Autowired
    private vodService vodService;

    @PostMapping("/upload")
    public R vodUpload(MultipartFile file){
        vodService.testUploadStream(file);
        return R.ok();
    }

    @DeleteMapping("{id}")
    public R delete(@PathVariable String id){
        vodService.delete(id);
        return R.ok();
    }
    @GetMapping("/oss/{id}")
    public R get(@PathVariable String id){
        vodService.getPlayInfo(id);
        return R.ok();
    }
    @GetMapping("/auth/{id}")
    public R getAuth(@PathVariable String id){
        vodService.getAuthInfo(id);
        return R.ok();
    }
}

前端添加阿里云视频播放器 请参考下面地址 功能很强大

https://player.alicdn.com/aliplayer/presentation/index.html?type=cover
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值