集成阿里的VOD 功能 音/视频点播功能

  • 开通视频点播功能
  • 上传音视频文件
  • 配置域名
  • 为域名配置CNAME
    配置域名可以看文档:

https://help.aliyun.com/document_detail/86074.html?spm=a2c4g.11186623.6.577.107958fcFRqYiD

  • 点击视频看是够能够播放

配置好了之后 就可以开发服务端得代码了

@PropertySource(value = "classpath:vod.properties")
@EnableConfigurationProperties
@Component
public class AliyunVodHandler {private static final Logger logger = LoggerFactory.getLogger(AliyunVodHandler.class);/*** VOD  accessKeyId*/@Value("${vod.accessKeyId}")private String accessKeyId;/*** VOD  accessKeySecret*/@Value("${vod.accessKeySecret}")private String accessKeySecret;/*** VOD 服务接入区域*/@Value("${vod.regionId}")private String regionId;@Value("${vod.version}")private String version;@Value("${vod.durationSeconds}")private Long durationSeconds;/*** RAM账号接入地区*/@Value("${vod.ram.regionId}")private String ram_regionId;/*** RAM accesskey*/@Value("${vod.ram.accessKeyId}")private String ram_accessKeyId;/*** RAM secret*/@Value("${vod.ram.accessKeySecret}")private String ram_accessKeySecret;/*** RAM roleArn*/@Value("${vod.ram.roleArn}")private String ram_roleArn;/*** RAM角色名称*/@Value("${vod.ram.roleSessionName}")private String ram_roleSessionName;/*** action*/@Value("${vod.ram.actionName}")private String actionName;//*************************************palyAuth方式鉴权************************************************end/*** 初始化 VOD** @return* @throws ClientException*/public DefaultAcsClient initVodClient() throws ClientException {DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);DefaultAcsClient client = new DefaultAcsClient(profile);return client;}/*** 获取播放凭证方法** @param client* @return* @throws Exception*/public GetVideoPlayAuthResponse getVideoPlayAuth(DefaultAcsClient client, @NotNull String videoId) throws Exception {GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();request.setVideoId(videoId);request.setAuthInfoTimeout(durationSeconds);//最大播放时间3000sreturn client.getAcsResponse(request);}/*** 获取播放凭证的VALUE值** @return*/public String getPlayAutoValue(@NotNull String videoId) throws Exception {DefaultAcsClient client = initVodClient();GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse();try {response = getVideoPlayAuth(client, videoId);//播放凭证logger.info(response.getPlayAuth() + "\n");logger.info("video title---->" + response.getVideoMeta().getTitle() + "\n");} catch (Exception e) {logger.error(e.getLocalizedMessage().toString());}return response.getPlayAuth().toString();};//*************************************palyAuth方式鉴权************************************************end//*************************************STS方式鉴权************************************************start/*** 为用户赋予权限** @return* @throws ClientException*/public AssumeRoleResponse assumeRole() throws ClientException {try {IClientProfile profile = DefaultProfile.getProfile(ram_regionId, ram_accessKeyId, ram_accessKeySecret);DefaultAcsClient client = new DefaultAcsClient(profile);final AssumeRoleRequest request = new AssumeRoleRequest();request.setVersion(version);request.setRoleArn(ram_roleArn);request.setMethod(MethodType.POST);request.setRoleSessionName(ram_roleSessionName);request.setDurationSeconds(durationSeconds);request.setActionName(actionName);request.setProtocol(ProtocolType.HTTPS);final AssumeRoleResponse response = client.getAcsResponse(request);logger.info(response.getRequestId());return response;} catch (ClientException e) {throw e;}}/*** 返回封装的对象** @return*/public VodConfig stsResponse() {try {final AssumeRoleResponse response = assumeRole();AssumeRoleResponse.Credentials credentials = response.getCredentials();return  VodConfig.builder().accessKeyId(credentials.getAccessKeyId()).accessKeySecret(credentials.getAccessKeySecret()).securityToken(credentials.getSecurityToken()).region(ram_regionId).build();} catch (ClientException e) {logger.error(e.getErrMsg());return null;}}//*******************获取上传视频的权限***********************************************************/*** 上传视频** @return*/public CreateUploadVideoResponse createUploadVideo(String title, String fileName, Long fileSize) throws Exception {IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);DefaultAcsClient client = new DefaultAcsClient(profile);CreateUploadVideoRequest request = new CreateUploadVideoRequest();request.setSecurityToken(token());  //获取  tokenrequest.setTitle(title);request.setFileName(fileName);request.setFileSize(fileSize);try {CreateUploadVideoResponse response = client.getAcsResponse(request);logger.info(response.getRequestId());return response;} catch (ClientException e) {e.printStackTrace();return null;}}//*******************获取上传视频的权限***********************************************************/*** 获取TOKEN*/public String token() throws Exception {final AssumeRoleResponse response = assumeRole();AssumeRoleResponse.Credentials credentials = response.getCredentials();String token = credentials.getSecurityToken();return token;};//*************************************STS方式鉴权************************************************end//********************************获取视频播放地址**************************************************start/*获取播放地址函数*//*** 获取到的URL是鉴权过后的* 如果视频在播放过程中,过了时效,视频仍然可以播放* 如果时间到期,再次刷新,该地址就不能够播放* 需要重新获取新的URL地址播放* @param videoId* @return* @throws Exception*/public GetPlayInfoResponse  getPlayInfo(String videoId) throws Exception {DefaultAcsClient client = initVodClient();GetPlayInfoResponse response = new GetPlayInfoResponse();try {GetPlayInfoRequest request = new GetPlayInfoRequest();request.setVideoId(videoId);request.setAuthTimeout(durationSeconds);request.setActionName("GetPlayInfo");response = client.getAcsResponse(request);List<GetPlayInfoResponse.PlayInfo> playInfoList = response.getPlayInfoList();//播放地址for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) {logger.info("PlayInfo.PlayURL = {}", playInfo.getPlayURL()  +"\n");}} catch (Exception e) {logger.error("ErrorMessage = {}" + e.getLocalizedMessage());}return   response;}//********************************获取视频播放地址**************************************************end}

vod.properties文件为:

#主账号信息
vod.regionId=cn-shanghai
vod.accessKeyId=
vod.accessKeySecret=
vod.version=2015-04-01
vod.durationSeconds=3600
#子账号信息
vod.ram.regionId=cn-shanghai
vod.ram.accessKeyId=
vod.ram.accessKeySecret=
vod.ram.roleArn=
vod.ram.roleSessionName=roleSessionName
vod.ram.actionName=AssumeRole

vod.config.java

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class VodConfig implements Serializable {private  String accessKeyId;private  String accessKeySecret;private  String securityToken;private  String region;}

在对URL进行鉴权的时候,需要在域名管理中的访问控制中开启 url鉴权 设置key,并且设置失效时间

集成阿里VOD功能 音/视频点播功能相关推荐

  1. Spring Boot集成阿里云的存储oss功能(实例)

    一只IT界中的菜鸟,立志做一只最菜的鸟 授人以鱼不如授人以渔 作为程序猿要有一个善于分析产品,起码你要知道让你做你能不能实现功能 话不多说进入主题 你觉得你的web项目的图片,视频应该放在那里,放在项 ...

  2. Java集成腾讯云音视频录制功能

    Java集成腾讯云音视频录制功能 为什么要实现音视频录制功能 因为我们做的是一个医院的项目,医生和患者可能进行视频通话和语音通话,为了保证通话的质量以及后续的问题, 我们就需要进行音视频录制,以便后续 ...

  3. 阿里云视频点播功能使用

    1.开通并且获得密钥和安全密钥 1.开通 1. 2. 3. 4. 2.获得配置参数 1.启用 2.添加转码模组 3.获取AccessKeyId和AccessKey Secret 2.使用 1.下载Ja ...

  4. 微信小程序集成实时音视频通话功能

    微信小程序集成实时音视频通话功能 背景 在项目的开发当中,很多时候,我们会有音频.视频通话的需求,但是一般都不会自己来写,所以我们就需要借助第三方来实现.尤其是这次的项目开发当中,需要在微信小程序当中 ...

  5. springboot集成阿里MNS消息队列发布订阅消息功能

    声明: 上一篇文章是springboot集成阿里ons发布订阅消息,此篇文章是mns发布订阅功能先简单记录一下ons与mns有什么区别 这里是在网上找的对比图: 此处为具体区别文章链接:点击打开链接 ...

  6. springboot集成阿里云短信服务,实现发送短信功能

    springboot集成阿里云短信服务,实现发送短信功能 准备工作: 1.登陆阿里云->进入控制台->开通短信服务(进入后根据提示开通) 2.充值(借人家平台发短信你以为不要钱的?我充了3 ...

  7. 知识付费阿里云视频点播功能

    阿里云视频点播(VOD)是集音视频上传.自动化转码处理.媒体资源管理.分发加速于一体的全链路音视频点播服务.借助灵活.可伸缩的存储.处理及内容分发服务,帮助企业和开发者快速搭建安全.弹性.高可定制的点 ...

  8. Android集成阿里云推送功能

    官方集成参考网址:https://help.aliyun.com/document_detail/51056.html?spm=a2c4g.11186623.6.587.64ed7fa8NY9DN8 ...

  9. Spring Boot集成阿里云视频点播服务的过程记录

    阿里云视频点播 效果预览 视频点播 视频点播概述 功能 优势 流程 环境准备 开通视频点播 创建RAM用户并授权 上传SDK 上传流程 下载上传SDK 安装上传SDK 集成Java上传SDK 异常说明 ...

最新文章

  1. 数据结构常见算法原理讲解100篇(一)-递归和分治算法原理及案例应用
  2. poj 1679 判断最小生成树是否唯一
  3. 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。
  4. openstack安装rabbitmq-server消息队列时出现错误
  5. 面试官 | 说一下 JVM 常用参数有哪些?
  6. Java调用WeChat's API总结
  7. poj 3181 Dollar Dayz (整数划分问题---递归+DP)
  8. 二叉树 的建立及遍历 过程
  9. shared_ptr使用场景、陷阱、性能分析,使用建议
  10. 小学计算机教案 插入艺术字,小学信息技术《在幻灯片中插入艺术字》说课及反思...
  11. 2018年易语言FPS骨骼方框透视辅助开发
  12. 软件设计模式学习笔记(八)
  13. 捷宇高拍仪D系列 javaweb集成进项目
  14. Springboot定时任务、Quartz表达式
  15. java sqlite读取数据库_java如何读写sqlite数据库
  16. 生化环材四大天坑劝退指南
  17. 国内源代码安全漏洞检测工具现状浅析
  18. WebGL着色器变量(attribute、uniform和varying)
  19. 华为手机便签有扫描的功能么
  20. 【LaTeX】LaTeX打取整符号

热门文章

  1. eclipse workspace设置
  2. 开题报告应该怎么写?
  3. freeswitch 变声模块mod_soundtouch、mod_ladspa
  4. 88FTP数据连接和控制连接
  5. iOS 修改image尺寸
  6. 企业组建物联卡流量池需要了解的常识
  7. 如何处理杀毒软件提示:受到192.168.1.X的网络攻击,已阻止。暴破攻击防护
  8. 游戏中如何加载人物,场景模型
  9. 用豪斯霍尔德(Householder)变换进行矩阵的QR分解,及其Matlab和OpenCV实现
  10. 海湾gst5000协议号_海湾GST5000消防主机调试须知: