阿里云视频点播详解
来源:互联网 发布:淘宝双十一活动策划书 编辑:程序博客网 时间:2024/05/29 19:16
整理了一下阿里云的视频点播相关的问题,记下来,以备后用。
阿里云视频点播是近几年刚有的服务,与OSS结合较深。开发之初找到有用的文档实在少之又少,所以把完整的开发流程已经我遇到一些问题记录下来。
阿里云视频点播介绍:
能查到的官话就不在这里赘述了,按照我在使用过程中的实际体验来说:
优点:
1、不占服务器硬盘
2、视频播放器的样式阿里提供,并且可以手动个性化改造(下面有介绍)
3、视频是通过授权的方式进行读取播放的,没有像腾讯视频点播一样直接使用链接
4、自带视频第一帧的功能,阿里赛高ヾ(゚∀゚ゞ)!(代码中有说明)
缺点:
1、没有特别注重安全,如果开发人员不注意可能会被盗用资源。
2、读取比较麻烦
3、会出现播放一次之后层级格外高的情况,盖住其他的东西。不过我有解决方案٩(๑>◡<๑)۶
4、播放器虽然可以定制,但是好丑哦
5、视频如果比较大,上传过程虽然会成功,但是用来读取视频的id可能会丢掉,需要注意呦
准备工作,当然是先申请视频点播服务,这一步比较麻烦,绑定域名之后,还要绑定CNAME等操作,所以就不赘述了,按照规定绑定完毕即可
————————-分————————-割————————-线————————-
需要引入阿里视频点播的包,官方api里提供的有;
首先我们要上传视频到自己的服务器作为中转;
一般的上传方法即可,如果不知道上传方法的话,可以看我上一篇文章。
然后上传到阿里的服务器:
/** * * 上传视频公用方法 * * @param fileName:上传文件所在的绝对路径(必须包含扩展名) * @param title:视频标题 * @param type:视频类型(描述) * @return video对应的视频id * @throws Exception */ public String uploadVideo(String fileName, String title, String type) throws Exception { String resultVideoId = ""; // 需要替换为真实用户AK // 构造上传请求实例 UploadVideoRequest request = new UploadVideoRequest("OSS的accessKeyId", "OSS的accessKeySecret", title, fileName); // 视频分类ID request.setCateId(0); // // 视频标签,多个用逗号分隔 // request.setTags("标签1,标签2"); // // 视频自定义封面URL // request.setCoverURL("http://cover.sample.com/sample.jpg"); // // 设置上传完成后的回调URL // request.setCallback("http://callback.sample.com"); // 可指定分片上传时每个分片的大小,默认为10M字节 request.setPartSize(10 * 1024 * 1024L); // 可指定分片上传时的并发线程数,默认为1 (注: 该配置会占用服务器CPU资源,需根据服务器情况指定) request.setTaskNum(1); request.setDescription(type); // 设置是否使用水印 request.setIsShowWaterMark(true); try { UploadVideoImpl uploader = new UploadVideoImpl(); UploadVideoResponse response = uploader.uploadVideo(request); // 上传成功后返回视频ID resultVideoId = response.getVideoId(); } catch (ClientException e) { System.out.println("UploadVideoRequest Client Exception:"); e.printStackTrace(); } return resultVideoId; }
这个resultVideoId是读取视频的标识,一定保存好
至此,上传已经完成了,下面我们看读取方法,比较麻烦的:
阿里的视频点播是通过播放凭证来播放的,so需要获取视频播放凭证
首先,是操作阿里视频点播的类,这个需要自己本地化改造哦
package com.wzgs.util.aliyun;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import com.aliyuncs.DefaultAcsClient;import com.aliyuncs.profile.DefaultProfile;import com.aliyuncs.profile.IClientProfile;import com.aliyuncs.exceptions.ClientException;import com.aliyuncs.exceptions.ServerException;import com.aliyuncs.vod.model.v20170321.GetVideoPlayAuthRequest;import com.aliyuncs.vod.model.v20170321.GetVideoPlayAuthResponse;import com.wzgs.controller.BaseController;/** * 阿里云视频点播相关方法 * * @author yu * */public class VideoDemand extends BaseController { DefaultProfile profile = DefaultProfile.getProfile( "自己选择服务器所在的地区,这个是华东2的:cn-shanghai", "OSS的accessKeyId", "OSS的accessKeySecret"); /** * 获取视频授权 * * @param videoId * 视频Id * @return */ public GetVideoPlayAuthResponse projectPalyVideo(String videoId) { DefaultAcsClient client = new DefaultAcsClient(profile); return getVideoPlayAuth(client, videoId); } GetVideoPlayAuthResponse getVideoPlayAuth(DefaultAcsClient client, String videoId) { GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest(); request.setVideoId(videoId); GetVideoPlayAuthResponse response = null; try { response = client.getAcsResponse(request); } catch (ServerException e) { e.printStackTrace(); return response; } catch (ClientException e) { e.printStackTrace(); return response; } response.getPlayAuth(); // 播放凭证 response.getVideoMeta(); // 视频Meta信息 return response; }}
然后是读取一些信息的片段
// 获取视频相关信息 VideoDemand videoDemand = new VideoDemand(); GetVideoPlayAuthResponse videoPlayAuthReq = videoDemand .projectPalyVideo("保存的视频id"); // 读取视频第一帧(o゚▽゚)o String coverurl = videoPlayAuthReq.getVideoMeta().getCoverURL(); // 读取播放凭证 String playAuth = videoPlayAuthReq.getPlayAuth(); // 视频Id String videoid = "保存的视频id";
至此,读取也就可以了,当然啦,会有一些小问题,可以留言讨论。
然后说一下阿里的播放器怎么使用和个性化改造:
楼主用的是jsp,勿喷 (〃’▽’〃)
引入文件
<!-- 需要写一个div --><div class="video-big" style="height:100%;width:100%"> <div class="prism-player" id="J_prismPlayer" style="height:80px;z-index:0"></div></div><!-- 阿里云视频点播JS --><script src="http://g.alicdn.com/de/prismplayer/1.7.6/prism-h5-min.js"></script><!-- js方法 --><script type="text/javascript"> $(window).ready(function(){ var videoHtml = '<div class="prism-player" id="J_prismPlayer" style="height:80px;z-index:0"></div>' var video = $('.video-big video') video.bind("ended",function(){ resetVideo() }) video.bind("pause",function(){ resetVideo() }) function isWeiXin(){ var ua = window.navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i) == 'micromessenger'){ return true; }else{ return false; } } function resetVideo (){ $('.video-big').html(' '); $('.video-big').html(videoHtml) var player = new prismplayer({ id: 'J_prismPlayer', width: '100%', height:'400px', autoplay: false, //播放方式一:推荐 //下面的这三个值就是在读取信息的代码片段里获取到的值 vid : '${videoid}', playauth : '${playAuth}', cover: '${coverurl}', }); var video = $('.video-big video') video.bind("ended",function(){ resetVideo() }) video.bind("pause",function(){ console.log('暂停了') resetVideo() }) } })</script><!-- 阿里云视频点播CSS --><link rel="stylesheet prefetch" href="http://g.alicdn.com/de/prismplayer/1.7.6/skins/default/index-min.css"><!-- 手写的一个css -->video { object-fit:fill; width:100%; height:120px;}.prism-player .prism-big-play-btn { width: 30px; height: 30px; background: url(../img/play.png) no-repeat center; background-size:30px 30px; left:50% !important; top:50% !important; margin-left: -15px; margin-top:-15px}.prism-player .prism-controlbar .prism-controlbar-bg { width: 1%; height: 150px; position: absolute; bottom: 0; left: 0; z-index: -1;}.prism-player .prism-time-display .current-time { display:none;}.prism-player .prism-play-btn { display:block}.prism-player .prism-fullscreen-btn { display:block}.duration{ display:block;}.time-bound{ display:none;}.prism-player .prism-progress { display:block;}@media (max-width: 767px){ #J_prismPlayer{ height:200px !important; } .prism-player .prism-time-display .current-time { display:none; } .prism-player .prism-play-btn { display:none; } .prism-player .prism-fullscreen-btn { display:none; } .duration{ display:none;; } .time-bound{ display:none;; } .prism-player .prism-progress { display:none;; }}
至此,阿里云的播放器也就初始化改造完毕了,非常简单的,在css中有一个play.png的图片是视频中间播放按钮的图片,附件上传不了,可以留言给我要。
强调一下,在页面读取视频的方法在初始化的js中,请仔细查看,需要配合读取视频信息的jav代码片段
下面解答一下上面说的一些问题:
关于视频不太安全的问题:
我试过,可以通过网站上显示的链接进行盗用,也就是在后台获取的授权信息能被看到,通过这些信息去盗版,可以试着隐藏或修改显示的连接和授权等信息来进行保密
关于播放完毕层级过高的问题:
可以在播放完毕之后删除div,然后在重新读取授权信息初始化播放器,虽然很简单,但是很有效哦
最后吐槽一下,阿里的东西都挺好用,但是就是说不上来的不舒服感,细节不是说不好,相比来说细节体验方面比其他的相同产品差了一下,比如乐视云的视频点播,简直是完美的。
- 阿里云视频点播详解
- 阿里云视频点播小计
- 阿里云视频点播指定清晰度
- 阿里云视频点播sdk代码 PHP版本
- 阿里云视频点播解决方案使用教程
- 阿里云视频点播解决方案使用教程
- 阿里云视频点播使用JavaScript上传文件重命名问题解决
- 直接调用阿里云视频点播API实现视频播放
- laravel中使用阿里云视频点播遇到的坑解决思路
- accs bindapp error,友盟推送与阿里云视频点播的so配置不兼容问题
- 腾讯云视频点播
- 阿里云助力创业者从零开启视频之路,史上最低门槛,299元打造视频点播平台
- 利用云平台轻松搭建视频点播网站
- 阿里云服务器配置VPN详解
- [教程]阿里云服务器配置VPN详解
- 阿里云ECS 下ngixn 配置详解
- 阿里云服务器配置VPN详解
- 阿里云部署 Flask + WSGI + Nginx 详解
- 手机usb连接不上电脑win7系统(99%解决)
- android studio开发:定时执行
- #!/usr/bin/env python与#!/usr/bin/python的区别
- 6.对日期格式数据转换处理
- AngualrJs 最新 文件图片上传教程4:Client-Services
- 阿里云视频点播详解
- 互补滤波
- 安装Python 3.5
- android打开相机拍照
- make: 警告:检测到时钟错误。您的创建可能是不完整的。
- Windows 下使用 Python 如何通过设置 sys.path 导入其它目录
- c++最大公约数
- 服务器支付流程
- 文章标题