可以实现Web端,ios/android端,微信小程序的音视频加密,适合有一定开发能力的个人或企业。
阿里云vod的私有加密必须要使用它的私有播放器,并且要引入sdk才能解密,但是在小程序端,阿里云没有提供sdk,在咨询了市面上的一些小程序加密方案后,发现购买一套加密至少也要2万元,没办法,只能自己写了一套加解密;本文主要是后端部分的hls标准加密的加解密服务,令牌服务搭建,前端需要引入通用的解密库就能用,比较简单,参考:
https://github.com/video-dev/hls.jsgithub.com先贴一张逻辑图:
前置要求:
1.配置转码模板
2.ram授权
3.创建service秘钥
参考这里配置一下:
HLS标准加密_视频安全_开发指南_视频点播-阿里云help.aliyun.com其实整体步骤上面都写了,阿里云官方也有java示例,但是没有python的栗子,这里把
我实现的步骤和源码贴一下。
主要步骤大致分为:
1.视频上传:这里有服务端上传和客户端上传两种,服务端上传一般用来实现批量,客户端上传的话,就是服务端提供上传接口给客户端,客户端拿到上传地址和凭证之后用客户端上传的方法去上传就可以了,见:
使用上传地址和凭证上传_客户端上传_上传SDK_视频点播-阿里云help.aliyun.com服务器端把音视频元信息和音视频的唯一性校验md5信息都存到redis中,只有在上传成功和转码成功的时候,才会从redis中拿数据写到数据库中。
# 获取视频上传地址和凭证
def create_upload_video(self, **kwargs):
request = CreateUploadVideoRequest.CreateUploadVideoRequest()
request.set_Title(kwargs.get("title")) # 视频标题
request.set_FileName(kwargs.get("original_file_name")) # 视频源文件名
request.set_Description(kwargs.get("description")) # 视频描述
request.set_CoverURL(kwargs.get("cover_url")) # 自定义视频封面URL地址
request.set_Tags(kwargs.get("tags")) # 视频标签
request.set_CateId(kwargs.get("cate_id")) # 视频分类ID
request.set_accept_format('JSON')
response = json.loads(self._acs_client.do_action_with_exception(request))
return response
# 上传音视频
def create_upload_video(request):
CreateUploadVideo(request.GET).validate_for_api()
title =