SpringBoot实现阿里云视频点播上传视频功能

springboot阿里云视频点播服务实现上传视频和删除功能 视频播放参照地址:https://www.cnblogs.com/konglxblog/p/15116534.html 一、开通视频点播云平台 1、选择视频点播服务(收费) 阿里云地址:https://www.aliyun.com/activity/618/2021?spm=5176.22772544.J_8058803260.d83.10632ea9TWsUsu&scm=2014072... 阅读详情

一、准备工作

1、阿里云账号里有余额;2、进入阿里云开通视频点播功能;3、获取阿里云秘钥(AccessKey管理中);4、目录结构:
在这里插入图片描述

二、直接上代码(复制粘贴即可)

2.1application.properties

#服务端口
server.port=8003
#服务名
spring.application.name=service-vod

#环境设置:dev、test、prod
spring.profiles.active=dev

#阿里云 OSS
#不同的服务器,地址不同
aliyun.oss.file.keyid=你的keyid
aliyun.oss.file.keysecret=你的keysecret

#最大上传单个文件大小 默认:1M
spring.servlet.multipart.max-file-size=1024MB
#最大值上传的数据大小 默认10M
spring.servlet.multipart.max-request-size=1024MB

2.2ConstantVodUtils获取配置文件的配置信息

@Component
public class ConstantVodUtils implements InitializingBean {

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

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

    public static String ACCESS_KEY_ID;
    public static String ACCESS_KEY_SECRET;

    @Override
    public void afterPropertiesSet() throws Exception {
        ACCESS_KEY_ID = keyid;
        ACCESS_KEY_SECRET = keysecret;
    }
}

2.3工具类InitVodCilent

public class InitObject {

    public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
        String regionId = "cn-beijing";  // 点播服务接入区域
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);
        return client;
    }
}

2.4VodController

@RestController
@CrossOrigin
@RequestMapping("/eduvod/video")
public class VodController {

    @Resource
    private VodService vodService;

    /**
     * @Description:    上传视频到阿里云
     * @Author: 		ZhaoLiangLiang
     * @date 			2021/12/1 23:32
     **/
    @PostMapping("/uploadAlyVideo")
    public R uploadAlyVideo(MultipartFile file){
        //返回上传视频id
        String videoId = vodService.uploadVideoAly(file);
        return R.ok().data("videoId",videoId);
    }
    
     /**
     * @Description:    根据视频id删除阿里云视频
     * @Author: 		ZhaoLiangLiang
     * @date 			2021/12/1 23:32
     **/
    @DeleteMapping("/removeAlyVideo/{id}")
    public R removeAlyVideo(@PathVariable("id") String id){
        try {
            //初始化对象  引入工具类InitVodCilent
            DefaultAcsClient client = InitVodCilent.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);
            //创建删除视频request对象
            DeleteVideoRequest request = new DeleteVideoRequest();
            //向request设置视频id
            request.setVideoIds(id);
            //调用初始化对象的方法实现删除
            client.getAcsResponse(request);
            return R.ok();
        }catch (Exception e){
            e.printStackTrace();
            throw new GuliException(20001,"删除视频失败");
        }
    }
}

2.5VodServiceImpl

@Service
public class VodServiceImpl implements VodService {

    @Override
    public String uploadVideoAly(MultipartFile file) {

        try{
            //accessKeyId,accessKeySecret

            //fileName 上传文件原始名称
            //inputStream 上传文件输入流
            InputStream inputStream = file.getInputStream();

            //title 上传之后显示的名称
            String filename = file.getOriginalFilename();//得到上传的文件名
            String title = filename.substring(0,filename.lastIndexOf("."));


            UploadStreamRequest request = new UploadStreamRequest(ConstantVodUtils.ACCESS_KEY_ID,ConstantVodUtils.ACCESS_KEY_SECRET,title,filename,inputStream);
            /* 存储区域(可选) */
            request.setStorageLocation("视频点播中视频的存储区域");
            /* 点播服务接入点 */
            request.setApiRegionId("cn-beijing");

            UploadVideoImpl upload = new UploadVideoImpl();
            UploadStreamResponse response = upload.uploadStream(request);
            System.out.println("RequestId="+response.getRequestId()+"\n");//请求视频点播服务的请求ID

            String videoId = null;

            if(response.isSuccess()){
                videoId = response.getVideoId();
                System.out.println("VideoId="+response.getVideoId()+"\n");
            }else{//如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回的
                videoId = response.getVideoId();
                System.out.println("VideoId="+response.getVideoId()+"\n");
                System.out.println("ErrorCode="+response.getCode()+"\n");
                System.out.println("ErrorMessage="+response.getMessage()+"\n");
            }
            return videoId;
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }
}

三、前端代码

3.1form

 <el-form-item label="上传视频">
     <el-upload
          :on-success="handleVodUploadSuccess"
          :on-remove="handleVodRemove"
          :before-remove="beforeVodRemove"
          :on-exceed="handleUploadExceed"
          :file-list="fileList"
          :action="BASE_API+'/eduvod/video/uploadAlyVideo'"
          :limit="1"
          class="upload-demo">
      <el-button size="small" type="primary">上传视频</el-button>
      <el-tooltip placement="right-end">
        <div slot="content">最大支持1G,<br>
          支持3GP、ASF、AVI、DAT、DV、FLV、F4V、<br>
          GIF、M2T、M4V、MJ2、MJPEG、MKV、MOV、MP4、<br>
          MPE、MPG、MPEG、MTS、OGG、QT、RM、RMVB、<br>
          SWF、TS、VOB、WMV、WEBM 等视频格式上传</div>
        <i class="el-icon-question"/>
      </el-tooltip>
      </el-upload>
    </el-form-item>

3.2方法

	//成功回调
    handleVodUploadSuccess(response, file, fileList) {
      console.log(response.data);
      if(response.data.videoId){
          this.flag = true;
      }
      //上传之后视频id赋值
      this.video.videoSourceId = response.data.videoId;
      //上传之后视频名称赋值
      this.video.videoOriginalName = file.name;
    },
    //视图上传多于一个视频
    handleUploadExceed(files, fileList) {
      this.$message.warning('想要重新上传视频,请先删除已上传的视频')
    },
    //点击确定 调用这个方法
    handleVodRemove(){
      //调用删除视频的接口
      video.deleteAlyVideo(this.video.videoSourceId).then(res=>{
        //提示信息
        this.$message({
            type: "success",
            message: "删除视频成功!!!"
        })
        //文件列表清空
        this.fileList = [];
        this.video.videoSourceId = "";
        this.video.videoOriginalName = "";
      })
    },
    //点击x调用这个方法
    beforeVodRemove(file,FileList) {
      return this.$confirm(`确定移除${file.name}吗???`);
    },

四、出现的问题?

4.1视频上传失败(一直显示上传中)

4.2InvalidStorage.NotFound

阿里云视频点播上传视频时InvalidStorage.NotFound.

4.3 一直是上传中,并且代码中没有明显的报错信息, 只打印出 ErrorCode=null ErrorMessage=sun/misc/BASE64Ecoder

一直是上传中,并且代码中没有明显的报错信息, 只打印出 ErrorCode=null ErrorMessage=sun/misc/BASE64Ecoder.

【Spring Boot 20】Spring Boot + Vue 整合阿里云视频点播 给大家分享一些关于HTML的面试题,有需要的朋友可以戳这里获取,先到先得哦。己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-WSn72fF2-1712997623310)][外链图片转存中…(img-NfAt8mu5-1712997623311)] 阅读详情

相关推荐

Spark数据倾斜问题+解决方案

1、数据倾斜 数据倾斜指的是,并行处理的数据集中,某一部分(如Spark或Kafka的一个Partition)的数据显著多于 其它部分,从而使得该部分的处理速度成为整个数据集处理的瓶颈 数据倾斜俩大直接致命后果 1)数据倾斜直接会导致一种情况:Out Of Memory 2)运行速度慢 主要是发生在Shuffle阶段。同样Key的数据条数太多了。导致了某个key(下图中的80亿条)所在的Task数 据量太大了。远远超过其他Task所处理的数据量 一个经验结论是:一般情况下,OOM的原因都是数据倾斜 2、如

诸葛搏毅 6770

阿里云视频点播——企业服务

Mr.Shaw

Stu_Shaw的博客 821

C#实战:如何用Bartender 10.1实现动态打印与批量打印(附完整源码)

本文深入探讨了如何在C#项目中高效集成Bartender 10.1,实现企业级的动态打印与批量打印功能。文章提供了从环境配置、COM接口精讲、高可用打印服务类封装,到批量打印性能优化及生产环境部署的全套实战方案与源码,帮助开发者构建健壮、可维护的打印解决方案。

weixin_29290963的博客 436

aliyun-oss-sdk阿里云OSS视频上传(断点续传)前端实现

upload-sdk升级之后,oss-sdk用的依然是6.8.0,这时候上传还是不行,首次上传可以成功,但是如果有重复名称的文件,再次上传,就会一直失败,报404。最近上传视频的功能,突然炸了,两年没动的代码,突然不行辽,首次上传成功,后面继续上传就可以,但凡有一次上传失败,再上传文件就不行。查看了官方文档,确实是提到了,如使用1.5.3之前版本重新上传,请修改待上传文件名称,不要与上传中断的文件重名,避免报错。询问了阿里云技术人员,被告知1.5.5对应的是6.17.1,所以又升级了oss-sdk。

浮游的博客 2730

SAP传输请求全流程详解:从SE10创建到STMS跨环境部署(附常见错误排查)

本文详细解析了SAP传输请求的全流程,从SE10创建到STMS跨环境部署,并提供了常见错误排查方法。涵盖工作台请求、定制请求等类型,以及STMS传输原理和实战操作技巧,帮助用户高效管理SAP系统变更。

weixin_29214335的博客 143

2024“华为杯”中国研究生数学建模竞赛(A题)深度剖析_数学建模完整过程+详细思路+代码全解析

目标是优化风力涡轮机的功率调度,使其在给定的实时风速数据下,最小化涡轮机关键组件(如塔架和主轴)的疲劳损伤。问题的挑战在于,考虑通信延迟和测量噪声的同时,要确保功率输出与风速变化的响应快速且准确。

2401_82549447的博客 6628

【springboot】实现阿里云视频点播上传视频

ComponentScan(basePackages={“com.blp”}) 包扫描,springboot启动类启动时,会默认扫描启动类所在的目录,在启动类上添加ComponentScan去指定扫描位置,从而可以扫多个包,尤其是第三方中的jar/maven依赖中的组件。.设置加密,如果不加密,别人只要获取到你视频的url就可以免费观看,但进行了加密就不能通过ip地址的方式访问视频,要通过域名方式。API:阿里云提供一个固定的地址,只需要调用这个固定的地址,向地址传递参数,实现功能。

weixin_56851586的博客 1949

Zemax实战:手把手教你设计一个40倍、NA0.65的显微物镜(附初始结构文件)

本文详细介绍了使用Zemax设计40倍、NA0.65显微物镜的完整流程,从初始结构搭建到优化验证,涵盖光学设计的关键技巧和实战经验。通过分阶段优化策略和公差分析,帮助工程师快速掌握高倍显微物镜的设计方法,提升光学系统性能。

weixin_42525369的博客 344

SpringBoot集成阿里云视频点播服务/上传视频

记录SpringBoot集成阿里云视频点播的具体实现步骤

weixin_47316183的博客 1788

hcaptcha-challenger:基于本地AI模型自动破解验证码的工程实践

验证码作为区分人类与机器的经典安全机制,其核心原理是通过图像识别、行为分析等交互式挑战来阻挡自动化程序。传统绕过方法依赖第三方打码平台或脚本,存在成本高、稳定性差的问题。随着多模态大语言模型和计算机视觉技术的发展,本地化AI求解成为新的技术方向,它通过集成YOLO、ResNet等模型,在本地完成图像语义理解,实现了高隐私、低成本、可进化的验证码自动化解决方案。这种范式尤其适用于需要大规模稳定处理网页交互的场景,如电商数据采集和社交媒体管理。hcaptcha-challenger项目正是这一理念的工程实践,它

weixin_42587866的博客 1026

Vivado报错-4 [Routed 35-3424] SLL Assignment failed ILP VU19P

Vivado报错[Routed 35-3424] SLL Assignment failed ILP VU19P

weixin_39896700的博客 1409

Springboot上传视频到阿里云OSS

Springboot上传视频到阿里云OSS

写代码的渣渣苏 2708

基于网关实现不同网段S7-1200 CPU的通信方法

在A网段的计算机上ping B网段的计算机:在A网段的计算机上使用ping命令,向B网段的计算机发送数据包。在B网段的计算机上ping A网段的计算机:同样地,在B网段的计算机上使用ping命令,向A网段的计算机发送数据包。数据包也会经过路由器进行转发,最终到达A网段的计算机。配置路由器:在路由器上配置两个网段的IP地址和子网掩码,并设置路由表,使得路由器可以将A网段和B网段之间的数据进行转发。确定两个网络之间的路由器:假设需要将A网段和B网段进行通信,需要在A、B两个网段之间设置一台路由器。

电工 2400

spring boot 实现 阿里云视频点播 功能 实现视频上传,视频删除,视频播放功能

1:开通视频点播服务,并可以上传视频做一些设置,转码,分类等 2:根据官方提供sdk示例, 实现上传视频功能 3:代码实现 引入依赖 <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.1</version>

qq_39564710的博客 2107

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

spring boot实现阿里云视频点播上传视频(复制粘贴即可)

准备工作: 阿里云地址: https://www.aliyun.com/ 登录阿里云,确保账户有余额,有几毛钱就够了,开发学习基本不花钱。 2.进入阿里云开通视频点播功能 3.获取阿里云密钥 代码编写: 目录结构: application.properties # 服务端口 server.port=8003 # 服务名 spring.application.name=vod # 环境设置:dev、test、prod spring.profiles.active=dev #阿里云 vod #不

一起码代码 3481

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

springboot整合阿里云视频上传和删除

导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs

weixin_44884861的博客 1085

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Vue-关于阿里云视频点播那些事

Spring Boot + Vue 关于阿里云视频点播那些事 一、先来一波简介吧~~ 阿里云视频点播(ApsaraVideo VoD)是集音视频采集、编辑、上传、自动化转码处理、媒体资源管理、高效云剪辑处理、分发加速、视频播放于一体的一站式音视频点播解决方案。 阿里云视频点播基于阿里云强大的基础设施服务,面向视频网站、短视频、在线教育、娱乐社交、新闻传媒等行业,提供端-云-端的视频全链路服务,帮助企业和开发者快速搭建安全、弹性、高效、可定制的视频点播平台和应用。 二、Spring Boot + Vu

luz 2151

阿里云视频点播VoD

目录一、购买阿里云视频点播1、首先进入阿里云官网2、点击9.9元新用户体验套餐3、购买后即可开始视频点播体验4、这里视频点播控制台,找到存储管理,将这里开启,这样就可以上传视频文件了二、Springboot 实现视频上传、视频删除和获取视频凭证1、首先需要导入依赖包2、去官网下载Java上传SDK3、将下载好的 VODUploadDemo-java-1.4.14 解压,用在项目中导入jar包4、修改配置文件5、vod配置类 vodConfig.java6、初始化vod客户端7、Vod服务 VodServic

weixin_46822367的博客 5098

SpringBoot之阿里云视频点播

SpringBoot之阿里云视频点播添加视频 阿里云官方文档地址 创建多个服务的时候,不要忘记配置本地nginx服务 1.导入依赖 <dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> &l

qq_43791139的博客 609

SpringBoot+Vue3实现阿里云视频点播 实现教育网站 在上面上传对应的视频,用户开会员以后才能查看视频

要使用阿里云视频点播(VOD)实现一个教育网站,其中用户需要成为会员后才能查看视频,你可以按照以下步骤进行开发和配置。这个过程包括上传视频、设置权限控制、构建前端播放页面以及确保只有付费会员可以访问视频内容。

程序员猫爪 2072

springboot整合

1springboot 2文件上传oss 3.spring整合视频点播 上传 下载 删除 4.登录,jwt 5.cookie和session

qq_42394862的博客 652

基于spingboot+springcloud微服务技术的在线教育平台系统

在线教育平台系统 分享一个优质的微服务项目教程,这是我在B站找到的项目,教程中老师讲得很细致,而且有配套的教学笔记,视频中听得不是很清楚的时候跟着教学笔记敲是非常方便的。跟着这个视频我搭建出了在线教育平台系统。在系统中实现了阿里云视频点播业务、利用阿里云OSS实现头像上传、利用POI实现课程分类Excel导入导出。在前端中主要是掌握了vue-admin-template后台管理框架的二次开发,以及使用NUXT搭建服务器端渲染优化;在后端中主要是掌握了springboot微服务的创建、springcloud实

黑马Jack的博客 2930

谷粒学院项目总结

谷粒学院项目总结 文章目录谷粒学院项目总结后台管理系统的功能登录功能权限功能讲师管理课程分类添加课程课程分类列表课程管理课程列表-分页条件查询添加课程添加小节视频统计分析前台用户系统首页数据显示幻灯片显示热门课程显示热门老师显示注册功能登陆功能普通登陆微信扫码登陆名师列表名师详情课程列表课程详情课程视频在线播放课程支付功能前端技术点前后端分离开发VueElement-uinode-jsNPMBable前端模块化后台系统使用vue-admin-template前台系统使用NuxtEcharts后端技术总结项目

小七自学博客 3039

尚硅谷在线教育

在线教育项目采用B2C商业模块,使用微服务架构,项目采用前后端分离开发。 在线教育项目分为前台系统和后台系统: 前台系统:首页数据显示、课程列表和详情、课程支付、课程视频播放、微信登录、微信支付 后台系统包含:权限管理、课程管理、统计分析、课程分类管理等等 前端技术包含:vue、element-ui、nuxt等 后端技术包含:SpringBoot、SpringCloud、EasyExcel等 第三方技术:阿里云OSS、视频点播、短信服务等等 后台系统管理功能 登录功能(SpringSecurity) 权限管

云想衣裳花想容,春风拂槛露华浓 2039

谷粒学院【online-education】后端总结

谷粒学院【online-education】后端总结

qq_57960105的博客 465

SpringBoot整合阿里云视频点播

文章目录SpringBoot整合阿里云视频点播1.准备工作2.服务端SDK的使用2.1 导入依赖2.2 初始化类2.3 创建读取公共常量的工具类2.4 获取视频播放地址2.5 获取视频播放凭证2.6 上传视频到阿里云视频点播服务3.springboot项目中实践3.1 上传视频到阿里云3.2 根据视频id删除视频 SpringBoot整合阿里云视频点播 1.准备工作 首先需要在阿里云开通视频点播服务: 首先,进入到阿里云视频点播平台,点击开通服务,选择按使用流量计费即可 开通之后点击进入管理控制台即

小皮皮LL的博客 3920
上一篇: Bootstrop学习
下一篇: 阿里云部署数据库(遇到的问题及解决方案)
智汇风渔AI小白
博客等级 码龄7年 1万+粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智汇风渔AI小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值