PaysAPI直接查看接口文档:https://www.paysapi.com/docindex,比较简单

百度云视频点播服务接入:

1. 准备工作:百度云的示例:http://cyberplayer.bcelive.com/demo/new/index.html

· 在百度云注册账号并且开通“音视频点播VOD”服务

· 进入后台管理系统 -> 安全认证 -> 获取AccessKey

· 自定义转码模板(因为视频需要使用token加密再播放):

 后端实现:

  ·token加密计算规则:   

  名词解释:
1. userId: 百度云用户唯一标识,可在百度云管理控制台账号基本信息中得到,32位字符串。
2. userKey:用户密钥,是AES-128内容密钥,用于对MediaId和ExpirationTime组成的串进行加密。长度为16字节,用32位十六进制数表示。可在百度云VOD管理控制台中设置和更新。
3. signature: 签名,是用UserKey给MediaId和ExpirationTime加密生成的字符串。长度为32字节,用64位十六进制数表示。
4. mediaId:百度云VOD中媒资的唯一标识。
5. expirationTime:Signature的过期时间,是一个unix时间戳,以秒为单位。
6. token:由Signature_UserId_ExpirationTime组成的字符串。
7. HMAC-SHA-256:签名算法,详见https://tools.ietf.org/html/rfc4868

token的生成方法:
1. 生成签名signature = HMAC-SHA-256(userKey,String.format("/%s/%s", mediaId, expirationTime),sample code见HMAC-SHA-256加密算法 Sample Code
2. 利用下划线(_) 连接signature,userId,expirationTime组合成token = String.format(“%s_%s_%s”, signature, userId,expirationTime)

 加密代码实例:
# hamc,hashlib:加密包
import hmac,hashlib,time
from django.conf import settings
# 获取视频加密token方式
def course_token(request):
file = request.GET.get('video')
  # 自行设置token过期时间
expiration_time = int(time.time()) + 2 * 60 * 60
  # 用户唯一ID
USER_ID = settings.BAIDU_CLOUD_USER_ID
   # 用户秘钥
USER_KEY = settings.BAIDU_CLOUD_USER_KEY
  # 从视频地址中得到 百度云VOD 中媒体资源的唯一标识
media_id = file.split('/')[-2]
  # 加密时,需要将加密的字符串转为16进制
key = USER_KEY.encode('utf-8')
message = '/{0}/{1}'.format(media_id, expiration_time).encode('utf-8')
# hamc.new():创建一个加密的实例
  # digestmod=hashlib.sha256:指定加密类型
  # .hexdigest():得到加密后的对象
signature = hmac.new(key, message, digestmod=hashlib.sha256).hexdigest()
token = '{0}_{1}_{2}'.format(signature, USER_ID, expiration_time)
return restful.result(data={'token': token})
前端实现:

  · 前端准备工作:

    1. 下载百度云视频播放插件:http://sdk.bce.baidu.com/media-sdk/Baidu-T5Player-SDK-Web-v3.4.0.zip

    2. 导入js文件:

 <script src="{% static 'videojs/video.min.js' %}"></script>
<script src="{% static 'videojs/videojs-contrib-hls.min.js' %}"></script>
<script src="{% static 'videojs/videojs-contrib-quality-levels.min.js' %}"></script>
<script type="text/javascript" src="https://cdn.bdstatic.com/jwplayer/latest/cyberplayer.js"></script>

         3. 需要创建一个容器来存放视屏播放器:<div id="playercontainer"></div>

    4. 在js代码中初始化视频播放器:

 var videourl = "视频地址";
var cover = "视频封面图";
var player = cyberplayer("playercontainer").setup({
width: '100%',//设置宽度
height: '100%',//设置播放器高度
file: videourl,//视频播放地址
image: cover,//视频封面图片
   autostart: false,
   //设置播放器缩放方式,缩放方式分为:1.none:不缩放;2.uniform:添加黑边缩放;3. exactfit:改变宽高比缩到最大;4.fill:剪切并缩放到最大(默认方式为uniform)
stretching: "uniform",
   //设置视频的重复播放模式,重复模式分为:1.false:无重复; 2.true:重复播放
repeat: false,
volume: 100,//音量调节,默认为100
   //设置播放器控制条的显示模式,显示模式分为:1.none:不显示;2.over:悬浮(鼠标无操作时自动隐藏)
controls: true,
   //primary: "flash",// 是否使用flash播放
   // 是否开启token加密(重要)
tokenEncrypt: "true",
// AccessKey
ak: 'AccessKey' //用户的AccessKey
});
// 命令 beforePlay :在开始播放前需要做的事情
player.on('beforePlay',function (e) {
  // 判断视频格式是否为m3u8格式
if(!/m3u8/.test(e.file)){
return;
}
xfzajax.get({
// 获取token的url
'url': '/course/course_token/',
'data': {
'video': videourl
},
'success': function (result) {
if(result['code'] === 200){
var token = result['data']['token'];
          // 将token设置到播放器中
player.setToken(e.file,token);
}else{
          // 如果token有误,则将视频停止播放
player.stop();
}
},
'fail': function (error) {
console.log(error);
}
});
});

 有志者,事竟成!

最新文章

  1. centos 7.0 安装nginx 1.9.10
  2. HDU 1863
  3. 转载: SQL Server中的索引
  4. 视图缩放、移动、旋转--ios
  5. 通过WebBrowser取得AJAX后的网页
  6. iOS 怎么样给自己的app打分呢?
  7. .NET 下成熟开源的BPM产品四款推荐
  8. uva 10306 - e-Coins(完全背包)
  9. 转载 java基础题(面试必知)
  10. 想成为Python全栈开发工程师必须掌握的技能
  11. 局域网下Android与scoket通信的实现
  12. Python设计模式 - UML - 部署图(Deployment Diagram)
  13. NET设计模式 第二部分 结构性模式(9):装饰模式(Decorator Pattern)
  14. 【转】Windows Server 2016 安装 IIS 服务时提示指定备用源路径
  15. ASP.NET MVC:Cookie 的过期时间在服务器端是获取不到的
  16. 关于 Handler 与 opener
  17. pandas 设置单元格的值
  18. xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西。xml里面的结构和数据库不一致..................
  19. [转]WIN2008 IIS7的日期格式
  20. Docker+.Net Core 的那些事儿-2.创建Docker镜像

热门文章

  1. Improved Variational Inference with Inverse Autoregressive Flow
  2. Chapter 11 Why Model ?
  3. python极简教程01:基础变量
  4. uniapp跳转webview后H5不执行UniAppJSBridgeReady 回调无用
  5. 编写Java程序,使用面向接口编程模拟不同动物的吼叫声
  6. VUE3 之 键盘事件
  7. CentOS6.5安装CM5.13
  8. Word2010初识
  9. 学习Layui笔记-父窗口获取子窗口的radio
  10. 包装类integer的常用方法