1.创建一个普通的html页面
我们先来到我们的阿里云控制台,先拿到我们的视频id

来到我们之前写的代码里,运行一下拿到授权码
//1 根据视频iD获取视频播放凭证 public static void getPlayAuth() throws Exception{ DefaultAcsClient client=InitObject.initVodClient("LTAI4G6wT9rRbhacy6YBj9Lt","04jdcJDdAgEJWD0pqLyf4smnW0Xou7"); GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest(); GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse(); request.setVideoId("00072df35c2748069f3eac3a536e2754"); response = client.getAcsResponse(request); System.out.println("playAuth:"+response.getPlayAuth()); }

双击即可复制,末尾还有一个等于号。
好了书写我们的页面代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.1/skins/default/aliplayer-min.css" />
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.8.1/aliplayer-min.js"></script>
</head>
<body>
<div class="prism-player" id="J_prismPlayer"></div>
<script>
var player = new Aliplayer({
id: 'J_prismPlayer',
'100%',
autoplay: false,
cover: 'http://liveroom-img.oss-cn-qingdao.aliyuncs.com/logo.png',
//播放配置
encryptType:'1',//如果播放加密视频,则需设置encryptType=1,非加密视频无需设置此项
vid : '00072df35c2748069f3eac3a536e2754',
playauth : 'eyJTZWN1cml0eVRva2VuIjoiQ0FJUzN3SjFxNkZ0NUIyeWZTaklyNURhZWNMZ2w1bGp3L1dLYjFMd25FRVJWcjFCamFmcWhUejJJSHBLZVhkdUFlQVhzL28wbW1oWjcvWVlsck1xRk1ZZEhCT2NOWk12dnNVT3JWMzlKcExGc3QySjZyOEpqc1VVK040Ty9GaXBzdlhKYXNEVkVma3VFNVhFTWlJNS8wMGU2TC8rY2lyWVhEN0JHSmFWaUpsaFE4MEtWdzJqRjFSdkQ4dFhJUTBRazYxOUszemRaOW1nTGlidWkzdnhDa1J2MkhCaWptOHR4cW1qL015UTV4MzFpMXYweStCM3dZSHRPY3FjYThCOU1ZMVdUc3Uxdm9oemFyR1Q2Q3BaK2psTStxQVU2cWxZNG1YcnM5cUhFa0ZOd0JpWFNaMjJsT2RpTndoa2ZLTTNOcmRacGZ6bjc1MUN0L2ZVaXA3OHhtUW1YNGdYY1Z5R0ZOLzducFNVUmJ2M2I0eGxMZXVrQVJtWGpJRFRiS3VTbWhnL2ZIY1dPRGxOZjljY01YSnFBWFF1TUdxQWRQTDVwZ2lhTTFyOUVQYmRnZmhtaTRBSjVsSHA3TWVNR1YrRGVMeVF5aDBFSWFVN2EwNDR4ckRoRzVnS3NNUWFnQUdzMDRDMVpySFlIb05KNWxlNTFYVUhVdC9tei9XZ0twSVdqQkdNUW4wZVY0eHp4SnZidUJNYVIvWCtOcXpyQTBwUGJTNU1ZZnZUM3Vyb1M3NEhJTlJwNnRSM3VHcWVxOGgvNDVKTVVWcVNGdzZzd2x5SXYvZ05yU1M0amJsSld4YXRQOStqZmxKdWlSKzlOVjl0OHhYRlgyeitEMWRIVE1NRnNvTGxoZkRGbmc9PSIsIkF1dGhJbmZvIjoie1wiQ0lcIjpcIk5qVVI1cXg5djlzaFZQbVFlMG4zV21qWk5SVDdkSm9BRkNtbkVOdEw5T1l6QVN6SmNUODBUWXpQM2F4MzR6eENcXHJcXG5cIixcIkNhbGxlclwiOlwiTUtzVFgyTm0wYW9WWXhNOW9URmwvWTNoaFE3WTZobkFWNlBuRUpzWHk4ND1cXHJcXG5cIixcIkV4cGlyZVRpbWVcIjpcIjIwMjAtMDUtMTBUMTI6MTQ6MzJaXCIsXCJNZWRpYUlkXCI6XCIwMDA3MmRmMzVjMjc0ODA2OWYzZWFjM2E1MzZlMjc1NFwiLFwiU2lnbmF0dXJlXCI6XCJWK1RRQ08wOStydlJWb0RrWnFCQUN1UGh5TFU9XCJ9IiwiVmlkZW9NZXRhIjp7IlN0YXR1cyI6Ik5vcm1hbCIsIlZpZGVvSWQiOiIwMDA3MmRmMzVjMjc0ODA2OWYzZWFjM2E1MzZlMjc1NCIsIlRpdGxlIjoiNiAtIFdoYXQgSWYgSSBXYW50IHRvIE1vdmUgRmFzdGVyIiwiQ292ZXJVUkwiOiJodHRwOi8vb3V0aW4tYTIwNGZlMzg4ZTA4MTFlYWIwZmIwMDE2M2UxYzkyNTYub3NzLWNuLXNoYW5naGFpLmFsaXl1bmNzLmNvbS8wMDA3MmRmMzVjMjc0ODA2OWYzZWFjM2E1MzZlMjc1NC9zbmFwc2hvdHMvZjA4NTc0NWYzM2E3NDFhNjkwMjdmZWVlNzY5YTc1NmUtMDAwMDEuanBnP0V4cGlyZXM9MTU4OTExNjM3MiZPU1NBY2Nlc3NLZXlJZD1MVEFJd2tLU0xjVWZJMnU0JlNpZ25hdHVyZT1kS2pCQTFoUGVOc1NocjZ5enNUeldVcFV5OTAlM0QiLCJEdXJhdGlvbiI6MTYuMjc2N30sIkFjY2Vzc0tleUlkIjoiU1RTLk5TbzJ4VHpGQnQ3YW10QXhBRFoybWJiQWciLCJBY2Nlc3NLZXlTZWNyZXQiOiI4M1ZNWlh6VkVldHpUcEt2WGhWM2ZiTGIxMTNyN0tGdFhINERMZ3c0Mm10biIsIlJlZ2lvbiI6ImNuLXNoYW5naGFpIiwiQ3VzdG9tZXJJZCI6MTcxMDE3MDAwNzg5MTQ2NH0=',
},function(player){
console.log('播放器创建好了。')
});
</script>
</body>
</html>
他这个码应该是只可以用一次

2、整合后端
我们就把之前的代码更改一下写在controller里
//获得视频凭证 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; } //1 根据视频iD获取视频播放凭证 @GetMapping("getPlayAuth/{videoId}") public R getPlayAuth(String videoId) throws Exception{ DefaultAcsClient client=initVodClient("LTAI4G6wT9rRbhacy6YBj9Lt","04jdcJDdAgEJWD0pqLyf4smnW0Xou7"); GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest(); GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse(); request.setVideoId(videoId); response = client.getAcsResponse(request); String Auth=response.getPlayAuth(); return R.OK().data("Auth",Auth); }
swagger测试

3、整合前端
1、更改跳转地址

2、书写页面布局
因为播放器的布局和其他页面的基本布局不一致,因此创建新的布局容器 layouts/video.vue

<template> <div class="guli-player"> <div class="head"> <a href="#" title="谷粒学院"> <img class="logo" src="~/assets/img/logo.png" lt="谷粒学院"> </a></div> <div class="body"> <div class="content"><nuxt/></div> </div> </div> </template> <script> export default {} </script> <style> html,body{ height:100%; } </style> <style scoped> .head { height: 50px; position: absolute; top: 0; left: 0; 100%; } .head .logo{ height: 50px; margin-left: 10px; } .body { position: absolute; top: 50px; left: 0; right: 0; bottom: 0; overflow: hidden; } </style>
3、创建api
创建api模块 api/vod.js,从后端获取播放凭证
import request from '@/utils/request' export default { getPlayAuth(vid) { return request({ url: `/eduvod/video/getPlayAuth/${vid}`, method: 'get' }) } }
4、书写页面
<template>
<div>
<!-- 阿里云视频播放器样式 -->
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.1/skins/default/aliplayer-min.css" >
<!-- 阿里云视频播放器脚本 -->
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.8.1/aliplayer-min.js" />
<!-- 定义播放器dom -->
<div id="J_prismPlayer" class="prism-player" />
</div>
</template>
<script>
import vod from '@/api/vod'
export default {
layout: 'video',//应用video布局
asyncData({ params, error }) {
return vod.getPlayAuth(params.vid).then(response => {
// console.log(response.data.data)
return {
vid: params.vid,
playAuth: response.data.data.Auth
}
})
},
mounted() {
new Aliplayer({
id: 'J_prismPlayer',
vid: this.vid, // 视频id
playauth: this.playAuth, // 播放凭证
encryptType: '1', // 如果播放加密视频,则需设置encryptType=1,非加密视频无需设置此项
'100%',
height: '500px',
// 以下可选设置
cover: 'http://guli.shop/photo/banner/1525939573202.jpg', // 封面
qualitySort: 'asc', // 清晰度排序
mediaType: 'video', // 返回音频还是视频
autoplay: false, // 自动播放
isLive: false, // 直播
rePlay: false, // 循环播放
preload: true,
controlBarVisibility: 'hover', // 控制条的显示方式:鼠标悬停
useH5Prism: true, // 播放器类型:html5
}, function(player) {
console.log('播放器创建成功')
})
}
}
</script>
测试:
这里出了个问题就是我们的前端传id时没有值
我们来到后端发现实体类中没有声明这个视频id

然后再看看方法需不需要改

因为我们用的BeanUtils的复制方法所以就不需要更改别的东西了。
还有个问题就是没有加注解PathVirable
最终效果:
