Java + jQuery 实现阿里云点播
Java + jQuery 实现阿里云点播
阿里云播放器直接在线点播视频以及直播技术,此处记录点播实现过程
更多精彩
- 更多技术博客,请移步 asing1elife’s blog
官网
准备步骤
后端相关操作
在项目 pom 中引入所需 jar 包
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>3.2.2</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-vod</artifactId> <version>2.7.0</version> </dependency>
获取对接需要的数据
- 将 AccessKeyId 、AccessKeySecret 进行相应存储
新建 VideoController 用于接收前端获取视频播放凭证的请求
@Controller @RequestMapping("/api/video") public class VideoController extends AbstractBaseController { @Autowired private VideoServiceImpl videoServiceImpl; /** * 获取播放凭证 * * @param videoId * @return */ @RequestMapping(value = "/auth", method = RequestMethod.POST) @ResponseBody public ResponseData playAuth(@RequestParam final String videoId) { return new SimpleActionHandler(request) { @Override protected void doHandle(ResponseData responseData) throws Exception { responseData.setData(videoServiceImpl.getVideoPlayAuth(videoId)); } }.handle(); } }
新建 VideoServiceImpl 用于和阿里云播放器接口对接
@Service public class VideoServiceImpl extends AbstractBaseService { ... }
在 VideoServiceImpl 中添加获取客户端的 getClient() 方法
-
Constants.ALI_ACCESS_KEY_ID
和Constants.ALI_ACCESS_SECRET
是密钥,成对生成和使用 - 其他参数信息按照阿里云开发手册说明,均不需要改变
private DefaultAcsClient getClient() { // 初始化配置 DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", Constants.ALI_ACCESS_KEY_ID, Constants.ALI_ACCESS_SECRET); // 获取客户端 return new DefaultAcsClient(profile); }
通过外部传入的视频 id 从客户端获取视频播放凭证
public String getVideoPlayAuth(String videoId) { GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest(); GetVideoPlayAuthResponse response = null; // 播放id request.setVideoId(videoId); try { response = getClient().getAcsResponse(request); } catch (ClientException e) { logger.error("视频客户端获取失败!", e); } if (response != null) { return response.getPlayAuth(); } return null; }
前端相关操作
引入播放器所需要的 css/js 文件
- 以下引入的 js 文件为通用版本,包括了 flash 和 h5 的播放器
- 如果只想单独引入 flash 或 h5 ,只需要将名称中间加上对应标识即可,例如
aliplayer-h5-min.js
- css 文件为公有版本,无需区分类型
<link rel="stylesheet" href="//g.alicdn.com/de/prismplayer/2.5.1/skins/default/aliplayer-min.css"/> <script charset="utf-8" type="text/javascript" src="//g.alicdn.com/de/prismplayer/2.5.1/aliplayer-min.js"></script>
准备待转化为播放器的标签内容
- 标签中的
data-id
是将视频传入到阿里云播放器后端之后返回的一个 vid - 该 vid 可以通过 接口上传 也可以通过阿里云后端上传,此处不做介绍
<div class="prism-player" id="prismPlayer" data-id="281fc1687cb245658dc5e7462e54bc66"></div>
初始化视频播放器
-
$.ts.doAction
是经过封装后的 ajax 操作 -
Aliplayer({...})
则是具体的播放器初始化操作
var playerTag = target.find("#prismPlayer"); var videoId = playerTag.data("id"); // 移除文字标识 playerTag.empty(); // 非空验证 if (videoId === undefined) { return; } $.ts.doAction("/api/video/auth", { videoId: videoId }, function () { Aliplayer({ id: "prismPlayer", autoplay: true, width: "100%", vid: videoId, playauth: this.data }); }, '', '', '');
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
WPF绘制深度不同颜色的3D模型填充图和线框图
原文: WPF绘制深度不同颜色的3D模型填充图和线框图 在机械测量过程中,测量的数据需要进行软件处理。通常测量一个零件之后,需要重建零件的3D模型,便于观察测量结果是否与所测工件一致。 重建的3D模型需要以填充图和线框图两种方式切换显示,其中填充图的材质需要根据不同深度进行着色,线框图需要消隐(不能透视)。以圆柱为例,如下图: 由于WPF对DirectX进行了封装,并构建出一套简单的3D绘图框架,因此我们可以快速的创建所需要的3D模型,便于像我这样的对三维计算机图形学不太了解的人进行开发。 关于WPF 3D绘图的基础,大家可以参考《Practical WPF Charts and Graphics》一书,里面也讲到一些3D显示的计算机图形学和数学基础。 下面我们开始3D模型的构建。 在WPF中,我们可以按如下步骤进行操作: 1、创建一个Viewport3D对象来host 三维模型; 2、继承ModelVisual3D或者ModelUIElement3D来定义3D对象; 3、指定3D场景中的光源,在WPF中光源也是一种ModelVisual3D; 4、创建一个相机来进行3D图形到2D显示...
- 下一篇
List抛出ConcurrentModificationException
版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82796593 List抛出ConcurrentModificationException 在对 List 进行遍历的同时进行 remove 元素操作,可能会抛出 java.util.ConcurrentModificationException 异常 更多精彩 更多技术博客,请移步 asing1elife’s blog 错误示范 在遍历 List 时获取元素实际上通过迭代器在进行,迭代器在获取下一个元素时会对 modCount 和 expectedCount 进行匹配 遍历的同时直接对 List 进行 remove 操作,会导致只有 modCount 发生变化,而expectedCount 未发生变化 所以迭代器在获取下一个元素会发现两个值不匹配则抛出 java.util.ConcurrentModificationException 异常 for (CourseDTO course : cours...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7,8上快速安装Gitea,搭建Git服务器