七牛点播HLS 思路
dos命令行工具实现七牛云的空间备份和m3u8列表的备份与删除操作:
工具
1.sewise-player开源播放器 (发觉sewise player的播放当带宽不足时,存在卡顿效果,建议可以用其他播放器进行开发)
2.适配flash的配置crossdomain.xml
3.java-qiniu SDK
空间
要求点1.该空间是点播类型,
2.私有空间
3.放置有crossdomain.xml的配置文件,已兼容浏览器使用flash播放
上传新的视频
如果要将视频上传,需要
1.使用fopsAPI实现转码先,加入七牛转码队列,生成需要的加密分片和m3u8文件
2.查看控制台,假如该队列中该视频的转码完毕,(播放时候)则通过downloadAPI将存放在私有空间的链接鉴权拿到token 存放
Crossdomain的使用
<?xml version="1.0" encoding="utf-8"?>
<cross-domain-policy>
<allow-access-from domain="*.yourdomain"/>
<allow-http-request-headers-from domain="*.yourdomain" headers="*"/>
</cross-domain-policy>
Fop私有空间的转码规格
avthumb/m3u8/noDomain/1/vb/640k/hlsKey/xxxxxxxxQ1Ng
==/hlsKeyUrl/xxxxxxxxxxxxxxxxxxxxxxxxxxxxs
分片得到
#EXT-X-KEY:METHOD=AES-128,URI="http://domain/test/key",IV=0x9e7aaacac3e30732d4104caba7e9cff0
#EXTINF:41.400000,
/ElPSJkBWCffXykHUXYjBDg_ulrg=/lj3yTkLXOzp4wb5rm397sDhH2BLR/000000.ts
http://domian/test/key放在业务服务器中,这个地址不是七牛来访问的。 而是你的客户在访问这个视频的时候,从浏览器发起的请求。这样就需要你验证客户的身份了, 如果是非法用户就禁止其访问。
1. 、如果<HLSKey>的值为密钥明文的base64编码,那么<HLSKeyType>值为0或者不填;如果<HLSKey>的值为七牛公钥加密的密文,那么<HLSKeyType>值可以写1.0
2. <HLSKeyUrl>就填写密钥明文存放的地址,一般为你的业务服务器地址,通过业务服务器相关流程控制对这个url的访问权限。
总结:
3. 我建议加密的URL<HLSKeyUrl>不能放在七牛的公开或者私有空间里面,所以是没有限制的,什么用户都可以访问到,但我们应该将这个URL放到自己搭建的业务服务器上,比如,控制访问到这个URL必须输入一个秘钥才可以访问到,和做cookie认证控制必须注册登录的用户才有权限访问到这个URL。
4. 其实m3u8是个列表文件,所有的原始视频文件都被下载到一个隐藏文件夹了。
5. 你点击m3u8文件就会自动把这些视频文件链接在一起播放,可以用notepad++打开m3u8文件查看内容,里面是一个个本地文件的链接,这些链接指向一个个小视频文件,也就是说你找不到原来下载这个文件的网址了。
6. 如果想直接播放完整的原始视频文件就要找到那个文件夹,里面的视频文件是一段一段的,要把这些小视频文件按m3u8文件里面的顺序用qq影音合并成一个完整的视频文件,然后就可以播放了。
7. 当然,如果删除了那个隐藏文件夹,那这个m3u8文件也就没用了,点击播放会提示解析失败。
8. 那个隐藏文件夹可以直接在m3u8里面看到位于哪里,是个.开头的隐藏文件夹。
节目的列表
每个视频的链接都需要通过授权拿到视频的地址,含有时效。
后台接口需要
1 在某个视频已经转码完成的情况下(已经含有http://qiniudomain/xxxx),需要授权拿到指定的私有视频的授权地址pm3u8
2 经过AES128加密过后的视频,需要通过浏览器访问一个链接,该链接直接含有明文,该链接的获取需要经过业务服务器的鉴权。
转码视频:
1.存在转码队列 例如队列名字为testvideo
2.通过转码api 自定义加密的转码规格 m3u8分片列表+AES128、
譬如
String bucket = "空间名字";
String key = "视频原名";
//设置转码操作参数
//hlskey 指的是AES128或者base64url加密后的字符串 未加密前要为16位 hslkeyurl为访问原密的链接(经过base64url加密)
String fops = "avthumb/m3u8/noDomain/1/vb/640k/hlsKey/MxxxxxxxxxzQ1Ng
==/hlsKeyUrl/aHxxxxxxxxxxxxxxxxxx4ua2V5";
授权链接
1.经过调用api获取私密空间的pm3u8的列表链接
2.通过浏览器调用AES的明文链接(验证获取)
防止录播
添加播放器显示用户名跑马灯,类似于腾讯课堂播放器中显示用户id一样。