python-html-百度云音视频点播服务
加密的视频:
一: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的生成方法:
- 生成签名signature = HMAC-SHA-256(userKey,String.format("/%s/%s", mediaId, expirationTime),sample code见HMAC-SHA-256加密算法 Sample Code
- 利用下划线(_) 连接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-百度云音视频点播服务的更多相关文章
- python利用百度云接口实现车牌识别
一个小需求---实现车牌识别. 目前有两个想法 调云在线的接口或者使用SDK做开发(配置环境和编译第三方库很麻烦,当然使用python可以避免这些问题) 自己实现车牌识别算法(复杂) ! 一开始准备使 ...
- 百度云推送-服务端 C# SDK
思路: 1.公司有项目需要做android和ios手机端推送消息的功能: 2.没有接触过这方面的知识,一头雾水,开始在网上一顿搜,网上倒是有不少解决方案,首先搜的是android的解决方案,因为ios ...
- 音视频点播服务基础系列(Fmpeg常用命令)
前言 公司业务中有一些场景需要用到服务端音视频剪辑技术,最开始为了快速上线使用的是某公有云的商用解决方案,但由于费用太高所以我们团队经过一个星期的冲刺,给出了一个FFmpeg+Serverless的解 ...
- 哪有Python视频百度云链接?
说到Python视频哪个好,小编在这里不好下结论.毕竟孰好孰坏,只有合适的才是最好的.就像买鞋子,一双鞋子好不好,只有合脚才是真的好.不过,这里有些个人认为通俗易懂的Python视频可以分享给大家. ...
- python最全学习资料:python基础进阶+人工智能+机器学习+神经网络(包括黑马程序员2017年12月python视频(百度云链接))
首先用数据说话,看看资料大小,达到675G 承诺:真实资料.不加密,获取资料请加QQ:122317653 包含内容:1.python基础+进阶+应用项目实战 2.神经网络算法+python应用 3.人 ...
- Java使用百度云存储BCS-让你的数据下载飞起来
作者:Vinkn 来自http://www.cnblogs.com/Vinkn/ 一.简介 云也不是一个新概念了,云到底是什么东西,你叫我说个明明白白的我也说不出来,姑且算作联网的就叫做云.国内的云服 ...
- android开发(25) - 推送的实现,使用百度云推送
什么叫推送? 中文名称:推送 英文名称:push 定义:描述因特网内容提供者和因特网用户之间工作方式的术语.“推送”指因特网内容提供者定期向预订用户“提供”数据. 项目中有可能会用到推送.如果自己写一 ...
- django之集成第三方支付平台PaysAPI与百度云视频点播服务接入
PaysAPI直接查看接口文档:https://www.paysapi.com/docindex,比较简单 百度云视频点播服务接入: 1. 准备工作:百度云的示例:http://cyberplayer ...
- 微软云平台媒体服务实践系列 2- 使用动态封装为iOS, Android , Windows 等多平台提供视频点播(VoD)方案
文章微软云平台媒体服务实践系列 1- 使用静态封装为iOS, Android 设备实现点播(VoD)方案 介绍了如何针对少数iOS, Android 客户端的场景,出于节约成本的目的使用媒体服务的静 ...
随机推荐
- mysql二进制日志详解
一.什么是二进制日志 二进制日志主要记录mysql数据库的变化,二进制日志包含所有更新了数据或者潜在更新了数据(如没有匹配到任何行的delete语句),语句以时间的形式保存,描述了数据的更改.二进制日 ...
- Linux下Python与C++混合编程
最近在做一个CUDA的项目,记录下学习心得. 系统 Linux --generic #-Ubuntu x86_64 GNU/Linux C++调用Python Python模块代码: #!/usr/b ...
- jersey2+freemarker+spring3的集成
由于即将开始的新项目,是一个对外网开放访问权限的web应用.所以,公司技术管理层不允许使用struts以及spring mvc这一套.所以,我们开始转战曾经用作REST API的框架jersey及其周 ...
- 总线读写---verilog代码
总线读写---verilog代码 `timescale 1ns / 1ps ////////////////////////////////////////////////////////////// ...
- Opencv 视频保存为图像
// 视频存为图片.cpp : 定义控制台应用程序的入口点. // /*================================================================ ...
- Scrapy环境安装
开始安装前,建议安装Visual C++ 2015 Build Tools,否则会一直出现如下提示: 下载地址:http://landinghub.visualstudio.com/visual-cp ...
- php 测试 程序执行时间,内存使用情况
memory_get_usage 可以分析内存占用空间. microtime 函数就可以分析程序执行时间. 上栗子: echo '开始内存:'.memory_get_usage(), ''; $tmp ...
- g6 cavans
{ // 默认模式 default: [ 'dragNode', 'dragEdge', 'dragBlank', 'clickBlankClearActive', 'resizeEdge', 'cl ...
- django报错总结
问题一: dictionary update sequence element #1 has length 3; 2 is required 解决方法: 检查视图函数的render里传的字典
- 在Express中使用Multiparty进行文件上传及POST、GET参数获取
Express 版本:4.14.1 在Express中,文件上传需要用到multiparty中间件,在项目目录中,通过npm install multiparty –save进行安装必要组件. 前端H ...