栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot整合阿里云视频点播服务Vod——实现视频上传、删除

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot整合阿里云视频点播服务Vod——实现视频上传、删除

视频点播(ApsaraVideo VoD,简称VoD)是集视频采集、编辑、上传、媒体资源管理、自动化转码处理(窄带高清™)、视频审核分析、分发加速于一体的一站式音视频点播解决方案。
阿里云视频点播服务技术文档教程

1、引入依赖

  com.aliyun
  aliyun-java-sdk-core
  4.6.0


  com.aliyun
  aliyun-java-sdk-vod
  2.16.5


  com.alibaba
  fastjson
  1.2.62


  com.aliyun
  aliyun-java-sdk-kms
  2.10.1

2、初始化配置
#你自己的阿里云keyId
aliyun.vod.file.keyid=xxxxxxxxx
#你自己的阿里云密钥
aliyun.vod.file.keysecret=xxxxxxxxxx

#max-file-size 是单个文件大小
#max-request-size 是设置总上传的数据大小
spring.servlet.multipart.max-file-size=1024MB
spring.servlet.multipart.max-request-size=1024MB
3、工具包 3.1、常量类
package com.zhmsky.vod.utils;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;


@Component
public class VodConstant implements InitializingBean {

    @Value("${aliyun.vod.file.keyid}")
    private String accessKeyId;

    @Value("${aliyun.vod.file.keysecret}")
    private String accessKeySecret;

    public static String ACCESS_KEYID;

    public static String ACCESS_KEYSECRET;

    //在属性初始化后自动执行
    @Override
    public void afterPropertiesSet() throws Exception {
        ACCESS_KEYID = accessKeyId;
        ACCESS_KEYSECRET = accessKeySecret;
    }
}

3.2、AccessKey初始化
package com.zhmsky.vod.utils;

import com.aliyun.oss.ClientException;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;


public class InitVodClient {

    //填入AccessKey信息
    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;
    }
}
4、service
package com.zhmsky.vod.service;

import org.springframework.web.multipart.MultipartFile;

import java.util.List;


public interface VodService {
    
    String uploadLocalVideoToAliYun(MultipartFile file);

    
    boolean removeVideo(String videoId);

    
    boolean removeBatchVideo(List videoIdList);
}

4.1 impl
package com.zhmsky.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.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.vod.model.v20170321.DeleteVideoRequest;
import com.zhmsky.exception.MyException;
import com.zhmsky.vod.service.VodService;
import com.zhmsky.vod.utils.InitVodClient;
import com.zhmsky.vod.utils.VodConstant;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;


@Service
public class VodServiceImpl implements VodService {
    
    @Override
    public String uploadLocalVideoToAliYun(MultipartFile file) {
        String accessKeyId= VodConstant.ACCESS_KEYID;
        String accessKeySecret=VodConstant.ACCESS_KEYSECRET;
        //获取文件原始名称
        String fileName=file.getOriginalFilename();
        String title=fileName.substring(0,fileName.lastIndexOf("."));
        InputStream inputStream = null;
        try {
            inputStream = file.getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
        UploadStreamRequest request = new UploadStreamRequest(accessKeyId, accessKeySecret, title, fileName, inputStream);
        UploadVideoImpl uploader = new UploadVideoImpl();
        UploadStreamResponse response = uploader.uploadStream(request);
        String videoId="";
        if (response.isSuccess()) {
            videoId=response.getVideoId();
        } else { //如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因
            videoId=response.getVideoId();
        }
        return videoId;
    }

    
    @Override
    public boolean removeVideo(String videoId) {
        //初始化对象
        DefaultAcsClient client = InitVodClient.initVodClient(VodConstant.ACCESS_KEYID, VodConstant.ACCESS_KEYSECRET);
        //创建删除视频的request对象
        DeleteVideoRequest request = new DeleteVideoRequest();
        //向request对象中设置视频id
        request.setVideoIds(videoId);
        //调用初始化对象的方法实现删除
        try {
            client.getAcsResponse(request);
            return true;
        } catch (ClientException e) {
            e.printStackTrace();
            return false;
        }

    }

    
    @Override
    public boolean removeBatchVideo(List videoIdList) {
        String videoList = StringUtils.join(videoIdList.toArray(), ",");
        //初始化对象
        DefaultAcsClient client = InitVodClient.initVodClient(VodConstant.ACCESS_KEYID, VodConstant.ACCESS_KEYSECRET);
        //创建删除视频的request对象
        DeleteVideoRequest request = new DeleteVideoRequest();
        //向request对象中设置视频id
        request.setVideoIds(videoList);
        //调用初始化对象的方法实现删除
        try {
            client.getAcsResponse(request);
            return true;
        } catch (ClientException e) {
            e.printStackTrace();
            return false;
        }
    }
}
5、controller
package com.zhmsky.vod.controller;

import com.zhmsky.result.Result;
import com.zhmsky.result.ResultUtil;
import com.zhmsky.vod.service.VodService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;


@RestController
@RequestMapping("/eduVod/video")
@CrossOrigin
@Api("阿里云视频点播服务")
public class VodController {
    @Autowired
    private VodService vodService;

    @PostMapping("/upload")
    @ApiOperation("上传本地文件到阿里云")
    public Result uploadLocalVideo(MultipartFile file){
        String videoId = vodService.uploadLocalVideoToAliYun(file);
        return new ResultUtil().setData(videoId);
    }

    @DeleteMapping("/deleteVideo/{videoId}")
    @ApiOperation("删除阿里云视频——单个")
    public Result deleteVideoForAliYun(@PathVariable String videoId){
        boolean b = vodService.removeVideo(videoId);
        if(b){
            return new ResultUtil().setSuccessMsg("视频删除成功!");
        }else{
            return new ResultUtil().setErrorMsg("视频删除失败!");
        }
    }

    @ApiOperation("批量删除阿里云视频")
    @DeleteMapping("/deleteBatchVideo")
    public Result deleteBatchVideo(@RequestParam("videoIdList") List videoIdList){
        boolean b = vodService.removeBatchVideo(videoIdList);
        if(b){
            return new ResultUtil().setSuccessMsg("批量删除成功!");
        }else {
            return new ResultUtil().setErrorMsg("批量删除失败!");
        }
    }
}

6、html
       
          
            :on-success="handleVodUploadSuccess"
            
            :on-remove="handleVodRemove"
            :before-remove="beforeVodRemove"
              
            :on-exceed="handleUploadExceed"
            :file-list="fileList"
            :action="BASE_API + '/eduVod/video/upload'"
            :limit="1"
            
          >
            上传视频
            
              
最大支持1G,
支持3GP、ASF、AVI、DAT、DV、FLV、F4V、
GIF、M2T、M4V、MJ2、MJPEG、MKV、MOV、MP4、
MPE、MPG、MPEG、MTS、OGG、QT、RM、RMVB、
SWF、TS、VOB、WMV、WEBM 等视频格式上传
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/868170.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号