第三方服务-阿里云视频点播服务java服务端SDK相关代码
视频点播服务中的视频,也依然是存在OSS上的,但是区别是什么呢?下面关于区别的描述摘自阿里云官网
视频的点播场景涉及视频的存储、转码、分发加速几个环节,那么:
- 视频点播是集视频音视频采集、编辑、上传、自动化转码处理、媒体资源管理、分发加速于一体的一站式音视频点播解决方案;而OSS是作为一种海量、安全、低成本、高可靠的云存储服务。
- 视频点播中存储的媒体主要是视频,后续也会提供音频等完成媒体库的建设;但OSS中可以存放各种类型的文件,从视频、音频到图片,再到doc、pdf等等任何文件,可以理解为就是一个云上的硬盘。
- OSS下可以作为独立的存储来用,也可以链接cdn产品,完成存放在OSS下文件的分发加速;但视频点播在存储音视频的媒体文件之后,核心作用是提供视频的托管服务,满足在线点播视频的业务需求,并且通过媒资管理、视频在线编辑、视频审核发布、数据统计、短视频SDK、视频安全等能力,覆盖到视频点播业务的不同方面。
- 视频点播的数据存储也是基于oss bucket,不同于OSS的是,视频点播为客户提供的私有bucket不占用OSS的空间,无需客户开通OSS产品, 该bucket在客户OSS下也不可见,采用独立的计量计费方式。
使用java操作之前,确保你必须开通了各种服务,要不然会提示你类似The storageLocation does not exist这种服务类型的异常
此处吐槽一下,阿里云的文档写的不是很容易懂,否则我也就不会写这篇文章来记录了
上传视频
上传视频分两种形式,第一种是API形式,就是你通过HTTP请求来和阿里云交互,第二种是SDK形式,就是你引入阿里云的jar包,最终有这个jar包去和阿里云交互,本文介绍的是SDK的形式
首先引入POM文件
<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.1.0</version>
</dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-vod</artifactId><version>2.15.10</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>
你以为这就完事儿了?阿里云竟然还有一个包是在maven仓库不存在的,这个包的名字叫aliyun-java-vod-upload-1.4.12.jar,这个包你必须去阿里云官网搜索,然后找到关于该包,把这个包引入到本地的项目里
下面是相关上传视频和下载视频的代码
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;import com.aliyun.vod.upload.impl.UploadImageImpl;
import com.aliyun.vod.upload.impl.UploadVideoImpl;
import com.aliyun.vod.upload.req.UploadImageRequest;
import com.aliyun.vod.upload.req.UploadStreamRequest;
import com.aliyun.vod.upload.resp.UploadImageResponse;
import com.aliyun.vod.upload.resp.UploadStreamResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.GetPlayInfoRequest;
import com.aliyuncs.vod.model.v20170321.GetPlayInfoResponse;
import com.aliyuncs.vod.model.v20170321.GetVideoInfoRequest;
import com.aliyuncs.vod.model.v20170321.GetVideoInfoResponse;/*** <p>处理阿里云视频点播的相关操作* * <p>官方API文档* {@link https://help.aliyun.com/document_detail/60574.html?spm=a2c4g.11186623.6.701.6fcf3fa0qMuxMM}* * @author shiwentian* @since 08.07.2020*/
public abstract class AliVideoUtils {private static final String accessKeyId = "你的accessKeyId";private static final String accessKeySecret = "你的accessKeySecret";private static final String regionId = "cn-shanghai";/*** @return 视频ID,根据这个视频ID获取视频链接*/public static String uploadVideo() throws IOException {String title = "标题必须有不能为空";String fileName = "aa.mp4";// 文件名必须带格式InputStream videoStream = Files.newInputStream(Paths.get("C:\\Users\\aa.mp4"));// 这个类是com.aliyun.vod.upload.req.UploadStreamRequestUploadStreamRequest request = new UploadStreamRequest(accessKeyId, accessKeySecret, title, fileName,videoStream);// 是否加水印request.setShowWaterMark(false);request.setTags("标签1,标签2,多个用逗号隔开");request.setDescription("视频描述");request.setCoverURL("视频封面地址");// 设置上传完成后的回调URL(可选),建议通过点播控制台配置消息监听事件,参见文档// request.setCallback("http://callback.sample.com");// 自定义消息回调设置,参数说明参考文档,https://help.aliyun.com/document_detail/86952.html#UserData// request.setUserData(""{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackURL\":\"http://test.test.com\"}}"");// 视频分类ID(可选)// request.setCateId(0);// 模板组ID(可选)// request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56a33d");// 工作流ID(可选)// request.setWorkflowId("d4430d07361f0*be1339577859b0177b");// 存储区域(可选)// request.setStorageLocation("in-201703232118266-5sejdln9o.oss-cn-shanghai.aliyuncs.com");// 开启默认上传进度回调// request.setPrintProgress(true);// 设置自定义上传进度回调 (必须继承 VoDProgressListener)// request.setProgressListener(new PutObjectProgressListener());// 设置应用ID// request.setAppId("app-1000000");// 点播服务接入点// request.setApiRegionId("cn-shanghai");// ECS部署区域// request.setEcsRegionId("cn-shanghai");UploadVideoImpl uploader = new UploadVideoImpl();UploadStreamResponse response = uploader.uploadStream(request);return response.getVideoId();}/*** <p>获取视频地址* * @return 会返回多个地址,如果list长度为0,则应该业务处理该异常*/public static List<String> getVideoUri(String videoId) {DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);DefaultAcsClient client = new DefaultAcsClient(profile);GetPlayInfoResponse response = new GetPlayInfoResponse();List<String> uris = new ArrayList<>();try {GetPlayInfoRequest request = new GetPlayInfoRequest();request.setVideoId(videoId);response = client.getAcsResponse(request);List<GetPlayInfoResponse.PlayInfo> playInfoList = response.getPlayInfoList();for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) {uris.add(playInfo.getPlayURL());}// Base信息// response.getVideoBase().getTitle()} catch (Exception e) {e.printStackTrace();}return uris;}/*** <p>获取视频相关信息,注意,该方法不会获取视频本身(视频路径以及视频流),而是获取诸如描述,标签,标题等内容*/public static void getVideoInfo() {DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);DefaultAcsClient client = new DefaultAcsClient(profile);GetVideoInfoResponse response = new GetVideoInfoResponse();try {GetVideoInfoRequest request = new GetVideoInfoRequest();request.setVideoId("视频ID,一个32长度的字符串,类似40a53db847e54b17bc799b3566ea5218");response = client.getAcsResponse(request);System.out.print("Title = " + response.getVideo().getTitle() + "\n");System.out.print("Description = " + response.getVideo().getDescription() + "\n");} catch (Exception e) {System.out.print("ErrorMessage = " + e.getLocalizedMessage());}System.out.print("RequestId = " + response.getRequestId() + "\n");}/*** <p>上传封面图片** @param imageStream 封面图片流* * @return 图片URI*/public static String uploadCoverImage(InputStream imageStream) {return uploadImage(imageStream, "cover");}/*** <p>上传封面图片** @param imageStream 封面图本地绝对路径* * @return 图片URI*/public static String uploadCoverImage(String uri) {try {InputStream in = Files.newInputStream(Paths.get(uri));return uploadImage(in, "cover");} catch (IOException e) {e.printStackTrace();throw new RuntimeException("上传封面图片异常");}}/*** <p>图片上传,注意,该上传图片是OSS视频相关的上传图片,和普通上传图片略有不同** @param imageStream 封面图片流* @param imageType 必选,图片类型,用字符串表示default(默认),cover(封面),watermark(水印)* * @return 图片URI*/private static String uploadImage(InputStream imageStream, String imageType) {UploadImageRequest request = new UploadImageRequest(accessKeyId, accessKeySecret, imageType);request.setInputStream(imageStream);// 图片文件扩展名(可选)取值范围:png,jpg,jpeg// request.setImageExt("png");// 图片标题(可选)长度不超过128个字节,UTF8编码// request.setTitle("图片标题");// 图片标签(可选)单个标签不超过32字节,最多不超过16个标签,多个用逗号分隔,UTF8编码// request.setTags("标签1,标签2");// 存储区域(可选)// request.setStorageLocation("out-4f3952f78c0211e8b3020013e7.oss-cn-shanghai.aliyuncs.com");// 流式上传时,InputStream为必选,fileName为源文件名称,如:文件名称.png(可选)// request.setFileName("测试文件名称.png");// 开启默认上传进度回调// request.setPrintProgress(true);// 设置自定义上传进度回调 (必须继承 VoDProgressListener)// request.setProgressListener(new PutObjectProgressListener());// 设置应用ID// request.setAppId("app-1000000");// 开始上传图片UploadImageImpl uploadImage = new UploadImageImpl();UploadImageResponse response = uploadImage.upload(request);if (response.isSuccess()) {return response.getImageURL();} else {System.out.print("ErrorCode=" + response.getCode() + "\n");System.out.print("ErrorMessage=" + response.getMessage() + "\n");throw new RuntimeException("ErrorCode=" + response.getCode() + "\nErrorMessage=" + response.getMessage() + "\n");}}
第三方服务-阿里云视频点播服务java服务端SDK相关代码相关推荐
- 如何使用阿里云ARMS诊断Java服务端报错问题
摘要: 这是ARMS团队推出的"网站常见问题1分钟定位系列篇"第二文. 我的网站为什么一错再错 网页报错,尤其是5XX错误是互联网应用最常见的问题之一.5XX错误通常发生于服务端. ...
- 关于使用校园网的时候使用阿里云视频点播上传服务失败的解决方法
问题描述 昨天我使用阿里云的视频点播的时候,发现上传视频一直失败: 然后我去找了售后人员,最后知道问题的根源可能出在校园网上,然后我去问了校园网的工作人员,还是解决不了,于是我就想,能不能直接访问ip ...
- 阿里云视频点播-->>>阿里云媒资上传工具类及配置
阿里云媒资上传 官网: 介绍 1.阿里云视频点播 2.视频服务流程 三,测试类中编写代码 四,媒资管理管理配置-存储管理 五,开始编写我们的JAVA代码 1.application.yml 2.配置类 ...
- 阿里云视频点播上传,官网后台始终显示视频上传中的问题
这是由于阿里云视频点播相关依赖版本问题造成的. 项目中的各个依赖版本必须与阿里云官网java上传SDK示例中各个依赖的版本严格对应! 1.阿里云视频点播后台依赖引入示例 2.项目中实际依赖要与之对应 ...
- 阿里云视频点播(VOD)服务的视频上传JAVA代码开发(上传)
一. 设计需求 使用阿里云视频点播服务对客户端上传的视频进行转码处理, 并存储到本地. 支持海外用户的大视频文件上传. 解决海外上传的有无问题. 二. 实现思路 客户端向服务端请求凭证, 获取上传地址 ...
- Spring Boot集成阿里云视频点播服务的过程记录
阿里云视频点播 效果预览 视频点播 视频点播概述 功能 优势 流程 环境准备 开通视频点播 创建RAM用户并授权 上传SDK 上传流程 下载上传SDK 安装上传SDK 集成Java上传SDK 异常说明 ...
- 阿里云视频点播服务的开通和使用
阿里云视频点播服务的开通和使用 文章目录 阿里云视频点播服务的开通和使用 前言:什么是阿里云视频点播服务? 一.开通阿里云视频点播服务 二.控制台基本操作 三.JAVA JDK操作阿里云视频点播服务 ...
- [笔记]阿里云物联网之业务服务端(java、php)接入阿里云平台
文章目录 前言 准备 相关资料 相关介绍 消息通信 云产品流转 RocketMQ 服务订阅 MNS AMQP Topic通信 创建设备 Mqttfx设备接入(模拟设备) 安装mqtt.fx 1.71版 ...
- 阿里云视频点播服务SDK的使用,视频文件上传测试
文章目录 阿里云视频点播技术简介 一.阿里云视频点播技术能力盘点 1.应用场景 2.功能介绍 二.开通视频点播云平台 1.选择视频点播服务 2.开通视频点播 3.选择按使用流量计费 4.资费说明 5. ...
最新文章
- 基因测序的回顾与展望
- 百度开源业内首个口罩人脸检测及分类模型,携手开发者共同“抗疫”
- c语言数组电脑显示不出来,C语言有关结构数组的一个程序为什么运行什么结果都不显示?求助~...
- 温泉季节到了,设计师需要的SPA插画,完美体现那一池的温暖!
- vux loadmore + axios 实现点击加载更多
- new Date()浏览器兼容性问题
- atitit. 浏览器插件 控件 applet 的部署,签名总结 浏览器 插件 控件 的签名安全机制o9o
- 计算机连接未识别的网络,电脑网络连接处出现未识别的网络无Internet访问的解决办法...
- 4k分辨率是多少(真4k与假4k区别)
- 如何实现一个脚本语言?
- 1.dom4j 解析xml
- weblogic10.3.6升级补丁时间慢的问题
- 巴比特 | 元宇宙每日必读:中国银行公布元宇宙支付相关专利,阿里申请多个淘宝元宇宙商标,元宇宙商标、专利竞争加速?...
- zabbix探究告警触发器Triggers
- 知名开发社区:v2ex域名DNS被污染
- java程序框图 质数_程序框图——数据大爆炸
- 第三章 线性模型总结
- 50首最好听的英文歌
- 观察者模式ApplicationListener异步处理事件
- MySQL的多表关联查询
热门文章
- java邮件设置成可修改_Java实现发送邮件(可配置)忘记密码,发送邮件
- Nacos 新增命名空间
- Python 将输出内容保存在text文件中
- python程序出现了异常会执行哪个语句,python中的异常是什么?应该怎么处理异常?...
- 为什么建议使用count(*)来统计数据行数
- Java中proc是什么意思,Java PatientProcedureVo.setSignifProc方法代码示例
- html5拖放原理,HTML5 拖放实现
- java settimezone_Java时间处理2----时区TimeZone类方法探究(Java8以前)
- python c语言接口_C/C++ 提供 Python 接口
- python利用字典实现大侠_python实现字符串和字典的转换