加密的视频:

一:python后端需要生成token

token计算规则

名词解释:

  • userId: 百度云用户唯一标识,可在百度云管理控制台账号基本信息中得到,32位字符串。
  • userKey:用户密钥,是AES-128内容密钥,用于对MediaId和ExpirationTime组成的串进行加密。长度为16字节,用32位十六进制数表示。可在百度云VOD管理控制台中设置和更新。
  • signature: 签名,是用UserKey给MediaId和ExpirationTime加密生成的字符串。长度为32字节,用64位十六进制数表示。
  • mediaId:百度云VOD中媒资的唯一标识。
  • expirationTime:Signature的过期时间,是一个unix时间戳,以秒为单位。
  • token:由Signature_UserId_ExpirationTime组成的字符串。
  • 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)

代码如下

urlpatterns = [
  path("course_token", view.course_token)
] def course_token(request):
""" 百度点播的token """
video_url = request.GET.get('video_url')
# 过期时间
expiration_time = int(time.time()) + 2 * 60 * 60 USER_ID = settings.BAIDU_CLOUD_USER_ID # 控制台-用户中心-用户ID
USER_KEY = settings.BAIDU_CLOUD_USER_KEY # 音视频点播服务-全局设置-发布设置-安全设置-user key # file=http://xxx/xxxxx/xxxx/yyyyyyy.m3u8
extension = os.path.splitext(video_url)[1] # .m3u8
# 'mda-igjsr8g7z7zqwnav.m3u8'.replace('.m3u8', '') = 'yyyyyyy'
media_id = video_url.split('/')[-1].replace(extension, '') # unicode->bytes=unicode.encode('utf-8')bytes
key = USER_KEY.encode('utf-8')
message = '/{0}/{1}'.format(media_id, expiration_time).encode('utf-8')
signature = hmac.new(key, message, digestmod=hashlib.sha256).hexdigest()
token = '{0}_{1}_{2}'.format(signature, USER_ID, expiration_time)
print('token:', token)
return restful.result(data={'token': token})

二:前端

1.播放页面需要加载

前三个文件下载地址:http://sdk.bce.baidu.com/media-sdk/Baidu-T5Player-SDK-Web-v3.4.0.zip

    <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> # 该文件提供点击播放功能,播放的div盒子格式如下
<script src="{% static 'js/course_detail.js' %}"></script>
<div class="video-container">
<span hidden data-video-url="{{ course.video_url }}" data-cover-url="{{ course.cover_url }}"></span>
<div id="playercontainer"></div>
</div>

js代码

$(function () {
var span = $(".video-container span");
var video_url = span.attr("data-video-url");
var cover_url = span.attr('data-cover-url');
var player = cyberplayer("playercontainer").setup({
width: '100%',
height: '100%',
file: video_url,
image: cover_url,
autostart: false,
stretching: "uniform",
repeat: false,
volume: 100,
controls: true,
// primary: 'flash', flash优先
tokenEncrypt: "true",
// 点击头像 安全中心 AccessKey
ak: 'xxxxxxxxxxxxxxxxxx'
});
player.on("beforePlay",function (e) {
// 不是m3u8格式的就不是加密视频
if(!/m3u8/.test(e.file)){
return;
} xfzajax.get({
'url': '/course/course_token/',
'data': {
'video_url': video_url
},
'success': function (result) {
if(result['code'] === 200){
var token = result['data']['token'];
console.log('token:', token);
player.setToken(e.file,token);
}else{
window.messageBox.showError('token获取错误!');
}
}
});
});
});

python-html-百度云音视频点播服务的更多相关文章

  1. python利用百度云接口实现车牌识别

    一个小需求---实现车牌识别. 目前有两个想法 调云在线的接口或者使用SDK做开发(配置环境和编译第三方库很麻烦,当然使用python可以避免这些问题) 自己实现车牌识别算法(复杂) ! 一开始准备使 ...

  2. 百度云推送-服务端 C# SDK

    思路: 1.公司有项目需要做android和ios手机端推送消息的功能: 2.没有接触过这方面的知识,一头雾水,开始在网上一顿搜,网上倒是有不少解决方案,首先搜的是android的解决方案,因为ios ...

  3. 音视频点播服务基础系列(Fmpeg常用命令)

    前言 公司业务中有一些场景需要用到服务端音视频剪辑技术,最开始为了快速上线使用的是某公有云的商用解决方案,但由于费用太高所以我们团队经过一个星期的冲刺,给出了一个FFmpeg+Serverless的解 ...

  4. 哪有Python视频百度云链接?

    说到Python视频哪个好,小编在这里不好下结论.毕竟孰好孰坏,只有合适的才是最好的.就像买鞋子,一双鞋子好不好,只有合脚才是真的好.不过,这里有些个人认为通俗易懂的Python视频可以分享给大家. ...

  5. python最全学习资料:python基础进阶+人工智能+机器学习+神经网络(包括黑马程序员2017年12月python视频(百度云链接))

    首先用数据说话,看看资料大小,达到675G 承诺:真实资料.不加密,获取资料请加QQ:122317653 包含内容:1.python基础+进阶+应用项目实战 2.神经网络算法+python应用 3.人 ...

  6. Java使用百度云存储BCS-让你的数据下载飞起来

    作者:Vinkn 来自http://www.cnblogs.com/Vinkn/ 一.简介 云也不是一个新概念了,云到底是什么东西,你叫我说个明明白白的我也说不出来,姑且算作联网的就叫做云.国内的云服 ...

  7. android开发(25) - 推送的实现,使用百度云推送

    什么叫推送? 中文名称:推送 英文名称:push 定义:描述因特网内容提供者和因特网用户之间工作方式的术语.“推送”指因特网内容提供者定期向预订用户“提供”数据. 项目中有可能会用到推送.如果自己写一 ...

  8. django之集成第三方支付平台PaysAPI与百度云视频点播服务接入

    PaysAPI直接查看接口文档:https://www.paysapi.com/docindex,比较简单 百度云视频点播服务接入: 1. 准备工作:百度云的示例:http://cyberplayer ...

  9. 微软云平台媒体服务实践系列 2- 使用动态封装为iOS, Android , Windows 等多平台提供视频点播(VoD)方案

    文章微软云平台媒体服务实践系列 1- 使用静态封装为iOS, Android 设备实现点播(VoD)方案  介绍了如何针对少数iOS, Android 客户端的场景,出于节约成本的目的使用媒体服务的静 ...

随机推荐

  1. Ambari安装常见问题

    参考自: http://blog.csdn.net/xingxc111/article/details/70667574 http://blog.csdn.net/xfg0218/article/de ...

  2. Java MyBatis insert数据库数据后返回主键

    <selectKey keyProperty="id" resultType="java.lang.Long" order="AFTER&quo ...

  3. jquery.nicescroll.min.js滚动条使用方法

    jquery.nicescroll.min.js滚动条使用方法,Nicescroll 是制作自定义滚动条的jq插件.支持div,iframe,html等使用,兼容IE7-8,safari,firefo ...

  4. python 中的 metaclass

    最遇到一个问题. class Meta(type): pass class M1(Meta): pass class M2(metaclass=M1): pass class Test(M2,meta ...

  5. Linux学习 LVM ***

    一.前言 LVM,逻辑卷管理工具,它的作用是提供一种灵活的磁盘管理办法.通常我们的某个分区用完了,想要扩容,很麻烦.但是用lvm就可以很方便的扩容,收缩. 看它的原理图: 它的原理大致是:首先将磁盘做 ...

  6. 【AMQ】之安装,启动,访问

    1.访问官网下载AMQ 2.解压下载包 windows直接找到系统对应的win32|win64 双击activemq.bat 即可 linux执行 ./activemq start 访问: AMQ默认 ...

  7. C/C++基础---算法概览

    符号概念 beg和end表示元素范围的迭代器 beg2表示第二个序列开始位置迭代器,end2表示第二个序列末尾迭代器(如果有).如没有则假定系列2至少与beg end表示的范围一样大.beg和beg2 ...

  8. 【转】non-blocking REST services with Spring MVC

    堵塞Controller Controller为单例: 非线程安全: 堵塞方式: 1个request对应1个处理Thread: @RestController public class Process ...

  9. MongoDB查询结果存放入新的Collection

    第一种方法 var lst = db.visits_201501.find({ "url":/http:\/\/m.baidu.com\/application/ }); whil ...

  10. 修改OBS为仅直播音频

    准备工作: 1. VS2013 的最新更新版或者VS2015 2. QT Creater 5.7   https://www.qt.io/ 3.  CMake (cmake-gui) 4. obs 依 ...