阿里云视频点播VoD

书读的越多而不加思考,你就会觉得你知道得很多;而当你读书而思考得越多的时候,你就会越清楚地看到,你知道得很少。

导读:本篇文章讲解 阿里云视频点播VoD,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、购买阿里云视频点播

1、首先进入阿里云官网

阿里云官网.
在这里插入图片描述

2、点击9.9元新用户体验套餐

在这里插入图片描述

3、购买后即可开始视频点播体验

请添加图片描述

4、这里视频点播控制台,找到存储管理,将这里开启,这样就可以上传视频文件了

在这里插入图片描述

二、Springboot 实现视频上传、视频删除和获取视频凭证

1、首先需要导入依赖包
        <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.10.2</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-vod</artifactId>
            <version>2.15.11</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>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>RELEASE</version>
            <scope>test</scope>
        </dependency>
2、去官网下载Java上传SDK

Java上传SDK.
在这里插入图片描述

3、将下载好的 VODUploadDemo-java-1.4.14 解压,用在项目中导入jar包

这里也可以通过另一种方式将本地jar包导入,操作链接如下:
将本地Jar包导入Maven.
在这里插入图片描述
在这里插入图片描述

4、修改配置文件

在这里插入图片描述

#环境设置
#最大上传单个文件大小默认1M
spring.http.multipart.maxFileSize=1024MB
#最大置总上传的数据大小 默认10MB
spring.http.multipart.maxRequestSize=1024MB

#视频点播VOD,相关配置
vod.configs.accessKeyId=xxxxxxxxxxxxxxxxxxxx
vod.configs.accessKeySecret=xxxxxxxxxxxxxxxxxxxx
#点播服务接入区域
vod.configs.regionId=cn-shanghai

5、vod配置类 vodConfig.java
package com.test.config;



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

import java.io.Serializable;


/**
 *  视频点播VOD,相关配置
 */
@Component
public class VodConfig implements Serializable {
    @Value("${vod.configs.accessKeyId}")
    private String accessKeyId;

    @Value("${vod.configs.accessKeySecret}")
    private String accessKeySecret;

    @Value("${vod.configs.regionId}")
    private String regionId;

    public String getAccessKeyId() {
        return accessKeyId;
    }

    public void setAccessKeyId(String accessKeyId) {
        this.accessKeyId = accessKeyId;
    }

    public String getAccessKeySecret() {
        return accessKeySecret;
    }

    public void setAccessKeySecret(String accessKeySecret) {
        this.accessKeySecret = accessKeySecret;
    }

    public String getRegionId() {
        return regionId;
    }

    public void setRegionId(String regionId) {
        this.regionId = regionId;
    }
}
6、初始化vod客户端
package com.test.config;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;

public class InitVodClient {
    public static DefaultAcsClient initVodClient(String accessKeyId,String accessKeySecret,String regionId) throws Exception{
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);
        return client;
    }
}
7、Vod服务 VodService.java
package com.test.service;

import org.springframework.web.multipart.MultipartFile;


public interface VodService {
    String uploadVideo(MultipartFile file);

    String removeVideo(String videoId);

    String getPlayAuth(String videoId);
}

8、Vod服务实现 VodServiceImpl.java
package com.test.service;

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.vod.model.v20170321.DeleteVideoRequest;
import com.aliyuncs.vod.model.v20170321.GetVideoPlayAuthRequest;
import com.aliyuncs.vod.model.v20170321.GetVideoPlayAuthResponse;
import com.test.config.InitVodClient;
import com.test.config.VodConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;

@Service
public class VodServiceImpl implements VodService{
    @Autowired
    private VodConfig vodConfig;


    @Override
    public String uploadVideo(MultipartFile file) {
        try {
            //title:上传后显示的名称
            String title =file.getOriginalFilename().substring(0,file.getOriginalFilename().lastIndexOf('.'));
            //fileName:原文件的名称
            String fileName = file.getOriginalFilename();


            //inputStream 上传文件输入流
            InputStream inputStream = file.getInputStream();
            UploadStreamRequest request = new UploadStreamRequest(vodConfig.getAccessKeyId(),
                    vodConfig.getAccessKeySecret(),title, fileName, inputStream);
            UploadVideoImpl uploader = new UploadVideoImpl();
            UploadStreamResponse response = uploader.uploadStream(request);

            String videoId = null;

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

    @Override
    public String removeVideo(String videoId) {
        try{
            //初始化对象
            DefaultAcsClient client = InitVodClient.initVodClient(vodConfig.getAccessKeyId(),
                    vodConfig.getAccessKeySecret(), vodConfig.getRegionId());
            //创建删除视频request对象
            DeleteVideoRequest request = new DeleteVideoRequest();
            //向request设置视频id
            request.setVideoIds(videoId);
            //调用初始化对象的方法删除
            client.getAcsResponse(request);
            return "删除视频成功";
        }catch (Exception e){
            e.printStackTrace();
            return "删除视频失败";
        }
    }


    @Override
    public String getPlayAuth(String videoId) {
        try{
            //创建初始化对象
            DefaultAcsClient client = InitVodClient.initVodClient(vodConfig.getAccessKeyId(),
                    vodConfig.getAccessKeySecret(), vodConfig.getRegionId());
            //获取凭证request和response对象
            GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();
            //向request设置视频id
            request.setVideoId(videoId);
            //调用方法得到凭证
            GetVideoPlayAuthResponse response = client.getAcsResponse(request);
            return response.getPlayAuth();
        }catch (Exception e){
           return "获取视频凭证失败";
        }
    }
}

9、Vod控制器 VodController.java
package com.test.controller;

import com.test.service.VodService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;


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

    @PostMapping(value = "",headers = "content-type=multipart/form-data")
    public String uploadVideo(@RequestPart("file") MultipartFile file) {
        return vodService.uploadVideo(file);
    }

    @DeleteMapping("/id/{id}")
    public String removeVideo(@PathVariable("id") String id) {
        return vodService.removeVideo(id);
    }

    @GetMapping("/id/{id}")
    public String getPlayAuth(@PathVariable("id") String id) {
        return vodService.getPlayAuth(id);
    }

}

三、结果演示

1、视频上传演示

上传前的阿里云视频点播控制台如下:
在这里插入图片描述
使用postman调用上传视频结果进行上传
在这里插入图片描述
如图所示上传视频成功
在这里插入图片描述

2、删除视频演示

使用postman调用删除视频接口
在这里插入图片描述
如图所示,test视频被删除
在这里插入图片描述

3、获取视频凭证演示

使用postman调用获取视频接口,结果如下:
在这里插入图片描述

四、视频播放HTML演示

1、常用两种播放方式

①通过播放地址播放
在这里插入图片描述
②通过播放凭证播放
在这里插入图片描述

2、自定义配置

自定义配置.
这里自定义配置好以后,可以直接查看对应的代码
在这里插入图片描述

3、HTML代码示例
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge" >
    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"/>
    <title>Aliplayer Online Settings</title>
    <link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.9.16/skins/default/aliplayer-min.css" />
    <script type="text/javascript" charset="utf-8" src="https://g.alicdn.com/de/prismplayer/2.9.16/aliplayer-min.js"></script>
</head>
<body>
<div class="prism-player" id="player-con"></div>
<script>
    var player = new Aliplayer({
            "id": "player-con",
            "source": "https://outin-c591ee08527111ec8b0100163e06123c.oss-cn-shanghai.aliyuncs.com/sv/25524783-17d74bcce4f/25524783-17d74bcce4f.mp4?Expires=1638611261&OSSAccessKeyId=LTAIVVfYx6D0HeL2&Signature=E0iyzFWy8e5UfjgzZGBjQ8N%2BW7c%3D",
            "region": "cn-shanghai",
            "format": "mp4",
            "mediaType": "video",
            "width": "100%",
            "height": "500px",
            "autoplay": true,
            "isLive": true,
            "rePlay": false,
            "playsinline": true,
            "preload": true,
            "controlBarVisibility": "hover",
            "useH5Prism": true
        }, function (player) {
            console.log("The player is created");
        }
    );
</script>
</body>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <meta name="viewport"
          content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"/>
    <title>Aliplayer Online Settings</title>
    <link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.9.3/skins/default/aliplayer-min.css"/>
    <script type="text/javascript" charset="utf-8"
            src="https://g.alicdn.com/de/prismplayer/2.9.3/aliplayer-min.js"></script>
</head>
<body>
<div class="prism-player" id="player-con"></div>
<script>
    var player = new Aliplayer({
        id: 'player-con',
        vid: 'b054bf30ac6447e99dc77357ff1f66f5', // 视频id
        source: 'https://outin-c591ee08527111ec8b0100163e06123c.oss-cn-shanghai.aliyuncs.com/sv/1c5a74e0-17d802473bc/1c5a74e0-17d802473bc.mp4?Expires=1638612942&OSSAccessKeyId=LTAIVVfYx6D0HeL2&Signature=j6MNk4xdq12uSvVXYDXTkVG52wo%3D',//播放地址
        playauth: 'eyJTZWN1cml0eVRva2VuIjoiQ0FJU2h3TjFxNkZ0NUIyeWZTaklyNWZHSFk3d25acHA4cXlvZTBYYmpUbGlacnBCaUtyaHV6ejJJSHBOZTNocUIrMGZzUGt3bEdsVTZmZ2Nsck1xRU1jYkZCV1ZNSlFzdjhvTHIxajlKcExGc3QySjZyOEpqc1ZJMThoZHUxbXBzdlhKYXNEVkVmbDJFNVhFTWlJUi8wMGU2TC8rY2lyWXBUWEhWYlNDbFo5Z2FQa09Rd0M4ZGtBb0xkeEtKd3hrMnQxNFVtWFdPYVNDUHdMU2htUEJMVXhtdldnR2wyUnp1NHV5M3ZPZDVoZlpwMXI4eE80YXhlTDBQb1AyVjgxbExacGxlc3FwM0k0U2M3YmFnaFpVNGdscjhxbHg3c3BCNVN5Vmt0eVdHVWhKL3phTElvaXQ3TnBqZmlCMGVvUUFQb3BGcC9YNmp2QWF3UExVbTliWXhncGhCOFIrWGo3RFpZYXV4N0d6ZW9XVE84MCthS3p3TmxuVXo5bUxMZU9WaVE0L1ptOEJQdzQ0RUxoSWFGMElVRTF4Rm11Q2QvWDRvQXlhTzF2NkdwTG9pdjltamNCSHFIeno1c2VQS2xTMVJMR1U3RDBWSUpkVWJUbHpiVWRKakRhL0wvWllMbE1jS2c4NFdlaVBNYXgzYlFGRHI1M3ZzVGJiWHpaYjBtcHR1UG56ZHhBS0RqK2FxMUdVR29BQmFNRTdiQVhIZzUzV0FhS2ZHVXdBOEdvbEJtN3RldjlrZ0tBNi9nbW5LcStWczZIYUovMVMvZk1uM20vdlZiME5UQ2MxdElWSGJvaTVZNE5oWXJSaUZmL0I0RjRnL05YRER3TnNlUlhOSUZnak5vK3pWMDl6QnBqZ1ZDTDNkdzUzdTV6R0w5d0pBZ1J1c0M4ZGhQMFZPY3hzM0l6QjF0V1FzbmxCUGMwWFp4WT0iLCJBdXRoSW5mbyI6IntcIkNJXCI6XCJVUnNSa2JSQzdIWlJ0eUNzM3I0NVNQY0dUczY5OGJ3bU9XbW5hNlNVNWZBd0hjMlVBay9lZ1ZBdm5wdUtnU3dIXCIsXCJDYWxsZXJcIjpcInc3VEYvOTRFcFlaWm1jc241YllvRmFaSURvK1g0dUxuNm0raXZsQVNDZ2M9XCIsXCJFeHBpcmVUaW1lXCI6XCIyMDIxLTEyLTA0VDA4OjQzOjE5WlwiLFwiTWVkaWFJZFwiOlwiYjA1NGJmMzBhYzY0NDdlOTlkYzc3MzU3ZmYxZjY2ZjVcIixcIlNpZ25hdHVyZVwiOlwiK1IyRDl5M2RSUWE4OGgzNjdZS085SDBPNlYwPVwifSIsIlZpZGVvTWV0YSI6eyJTdGF0dXMiOiJOb3JtYWwiLCJWaWRlb0lkIjoiYjA1NGJmMzBhYzY0NDdlOTlkYzc3MzU3ZmYxZjY2ZjUiLCJUaXRsZSI6InRlc3QyIiwiQ292ZXJVUkwiOiJodHRwOi8vb3V0aW4tYzU5MWVlMDg1MjcxMTFlYzhiMDEwMDE2M2UwNjEyM2Mub3NzLWNuLXNoYW5naGFpLmFsaXl1bmNzLmNvbS9iMDU0YmYzMGFjNjQ0N2U5OWRjNzczNTdmZjFmNjZmNS9zbmFwc2hvdHMvMWE0MTBmZDBiMTA0NDdkZjllYzk3YWY2NWJkYmZmMzItMDAwMDEuanBnP0V4cGlyZXM9MTYzODYxMDg5OSZPU1NBY2Nlc3NLZXlJZD1MVEFJVlZmWXg2RDBIZUwyJlNpZ25hdHVyZT1jRXFXWVdBQk9ZejZtajFKc2hGbGlUYVBTRm8lM0QiLCJEdXJhdGlvbiI6My41M30sIkFjY2Vzc0tleUlkIjoiU1RTLk5Uc1Y0RHBFSEVuQ3ljamk5N2o1bWdvSlkiLCJBY2Nlc3NLZXlTZWNyZXQiOiI3YW1TTXBXczgzYkZ2YTVTa2pXcEdmZnMyenJSV0RwNnUybnhkdEVuaTcxTCIsIlJlZ2lvbiI6ImNuLXNoYW5naGFpIiwiQ3VzdG9tZXJJZCI6MTMwNjkxOTU3NDk2NDYzNH0=', // 播放凭证
        encryptType: '1', // 如果播放加密视频,则需设置encryptType=1,非加密视频无需设置此项
        width: '500px',
        height: '750px',
        // 以下可选设置
        cover: 'https://outin-c591ee08527111ec8b0100163e06123c.oss-cn-shanghai.aliyuncs.com/image/default/9E2A12F7FB874EB2A9386F79C1FCEC2F-6-2.jpg?Expires=1638612427&OSSAccessKeyId=LTAIVVfYx6D0HeL2&Signature=AhPuFqtnO6glUmMrvNaMn2Gjtq8%3D', // 封面
        qualitySort: 'asc', // 清晰度排序
        mediaType: 'video', // 返回音频还是视频
        autoplay: true, // 自动播放
        isLive: false, // 直播
        rePlay: false, // 循环播放
        preload: true,
        controlBarVisibility: 'hover', // 控制条的显示方式:鼠标悬停
        useH5Prism: true, // 播放器类型:html5
    }, function (player) {
        console.log('播放器创建成功')
    });
</script>
</body>
4、视频播放演示

在这里插入图片描述

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/122980.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!