
能力说明:
掌握计算机基础知识,初步了解Linux系统特性、安装步骤以及基本命令和操作;具备计算机基础网络知识与数据通信基础知识。
暂时未有相关云产品技术能力~
阿里云技能认证
详细说明简介 本章节主要介绍通过访问限制配置来实现对点播视频的保护。访问限制类的视频保护使用门槛低、快速生效等优点。 IP黑白名单 视频点播支持配置IP黑名单或白名单,拒绝或只允许特定IP的访问。 操作步骤 登录VOD控制台,选择域名管理。 单击目标域名后的配置,选择访问控制。 选择IP黑/白名单,单击修改配置进行设置。 比如下图是针对120.55.XXX.34这个IP设置黑名单 测试可以发现通过这个IP请求点播视频的时候会返回403报错,报错原因是IP黑名单报错:denied by IP ACL = blacklist Referer防盗链 基于HTTP协议支持的Referer机制,通过Referer跟踪来源,对来源进行识别和判断,可配置访问的Referer黑、白名单来限制视频资源被访问的情况。 操作步骤 登录VOD控制台,选择域名管理。 单击目标域名后的配置,选择访问控制。 选择Refer防盗链,单击修改配置进行设置。 比如下图是针对aliyun.com这个域名设置了白名单,且不允许空Referer访问: 测试可以发现如果请求时候Referer参数不是aliyun.com这个域名就会有报错:denied by Referer ACL 注意事项 可以通过点播的日志查看用户的IP和Referer:https://help.aliyun.com/document_detail/86099.html IP黑/白名单支持添加IP网段,例如127.0.0.1/24。网段127.0.0.1/24,24表示采用子网掩码中的前24位为有效位,即用32-24=8bit来表示主机号,该子网可以容纳2^8 - 2 = 254 台主机,故可表示IP网段范围:127.0.0.1~127.0.0.255。 Referer配置后会自动添加泛域名支持,例如填写a.com,最终配置生效的是*.a.com,所有子级域名都会生效。 由于移动端一般拿不到Referer,当前默认支持空Referer访问,可选择关闭。
概述 如何保障视频内容的安全,不被盗链、非法下载和传播,是众多企业困扰已久的问题,特别是在线教育、财经金融、行业培训等在线版权视频领域尤为迫切,处理不好会造成极为严重的经济损失,甚至法律风险。阿里云视频点播提供了完善的内容安全保护机制,本系列文章将全面介绍这些安全保护机制,以满足不同业务场景的安全需求。 安全方案对比 视频点播提供了多个纬度的安全方案,下面的表格对比了不同安全方案的特性,可以根据实际的业务情况选择。 下面的章节将会对上面列出的安全方案逐一介绍,详细描述方案特点、实现方法和使用限制。
业务场景 点播服务上传的原始视频没有字幕,需要对点播视频加上视频字幕。 业务流程 上传字幕文件 添加带字幕的转码模版 使用带字幕的转码模版转码 使用步骤 上传字幕文件字幕文件无法通过控制台上传,需要通过上传SDK的上传接口上传,并且指定subtitle参数: from voduploadsdk.AliyunVodUtils import * from voduploadsdk.AliyunVodUploader import AliyunVodUploader from voduploadsdk.UploadAttachedMediaRequest import UploadAttachedMediaRequest def testUploadLocalAttachedMedia(accessKeyId, accessKeySecret, filePath): try: uploader = AliyunVodUploader(accessKeyId, accessKeySecret) uploadAttachedRequest = UploadAttachedMediaRequest(filePath, 'subtitle') uploadAttachedRequest.setTitle('test upload local watermark file') media = uploader.uploadAttachedMedia(uploadAttachedRequest, True) print(media) except AliyunVodException as e: print(e) localFilePath = '/Users/mac/Downloads/VodUploadSDK-Python_1.3.1/dlfiles/subtitle-02.srt' testUploadLocalAttachedMedia(accessKeyId, accessKeySecret, localFilePath) 上传完成后会返回字幕文件的url信息:{'FileURL': u'https://outin-a30b2feff15a11e8ad9400163e1a625e.oss-cn-shanghai.aliyuncs.com/subtitle/5D55590D555C40BA8DC9BF307D3AC28C-3-3.srt', 'MediaId': u'68928b9ab5744b65b7b04f0cca97f54d', 'MediaURL': u'http://vod.pier39.cn/subtitle/5D55590D555C40BA8DC9BF307D3AC28C-3-3.srt'} 设置转码模版点播控制台的转码模版目前还不支持选择字幕,所以也是通过接口来完成对带字幕转码模版的设置的: from aliyunsdkcore import client from aliyunsdkvod.request.v20170321 import AddTranscodeTemplateGroupRequest clt = client.AcsClient(access_key_id, access_key_secret, region) def AddTranscodeTemplateGroup(clt): request = AddTranscodeTemplateGroupRequest.AddTranscodeTemplateGroupRequest() transcodeTemplateList = [] transcodeTemplate = {} # 设置模板名称 transcodeTemplate["TemplateName"] = "Subtitle_Transcode" # 清晰度 transcodeTemplate["Definition"] = "LD" # 视频流转码配置 videoConfig = {"Width": 640, "Bitrate": 400, "Fps": 25, "Remove": False, "Codec": "H.264", "Gop": "250"} transcodeTemplate["Video"] = videoConfig # 音频流转码配置 audioConfig = {"Codec": "AAC", "Bitrate": "64", "Channels": "2", "Samplerate": "32000"} transcodeTemplate["Audio"] = audioConfig # 封装容器 container = {"Format": "m3u8"} transcodeTemplate["Container"] = container # 添加字幕参数 subtitleList = {"SubtitleUrl":"https://outin-a30b2feff15a11e8ad9400163e1a625e.oss-cn-shanghai.aliyuncs.com/subtitle/D973C24DA668448A80E235F9D020BEFE-3-3.srt", "CharEncode":"UTF-8"} transcodeTemplate["SubtitleList"] = subtitleList request.set_TranscodeTemplateList(json.dumps(transcodeTemplateList)) request.set_Name('subtitle') response = clt.do_action_with_exception(request) return response print AddTranscodeTemplateGroup(clt) 代码里subtitleList参数是设置字幕的,里面的SubtitleUrl参数填写第一步中返回的FileURL地址 使用带字幕的转码模版转码这里可以通过控制台的媒体处理选项选择上面创建的转码模版,或者通过转码接口来实现转码: from aliyunsdkcore import client from aliyunsdkvod.request.v20170321 import SubmitTranscodeJobsRequest clt = client.AcsClient(access_key_id, access_key_secret, region) def SubmitTranscodeJobs(clt): request = SubmitTranscodeJobsRequest.SubmitTranscodeJobsRequest() request.set_VideoId('4bee0ee927ad4bed8ca865471c6680a7') request.set_TemplateGroupId('89a90b2cb8fdfdf9765747dd39fae31e') response = clt.do_action_with_exception(request) return response print SubmitTranscodeJobs(clt) 播放通过上面转码模版转码后的视频就会有字幕的效果了
业务场景 在线教育场景下,提供视频课程给用户试看一段时间(如前5分钟),用户试看完后如果要继续观看,需要付费购买。 业务流程 客户端到应用后台请求试看地址 应用后台请求阿里云点播服务,获取视频试看地址 阿里云点播服务返回试看地址 应用后台返回试看地址给客户端播放 客户端通过试看地址播放 使用步骤 点播域名开启试看功能登陆点播控制台,配置管理-分发加速配置-域名管理-配置(对应域名处)-访问控制-URL鉴权中,开启A方式鉴权,同时,勾选”支持试看”选项。 试看地址获取调用 获取播放地址接口 ,通过参数 PlayConfig 结构中的 PreviewTime 来获取指定时长的播放试看地址。示例代码: from aliyunsdkvod.request.v20170321 import GetPlayInfoRequest from aliyunsdkcore import client access_key_id = "your access_key_id" access_key_secret = "your access_key_secret" region = "cn-shanghai" videoId = "your videoId" def GetPreviewURL(clt): request = GetPlayInfoRequest.GetPlayInfoRequest() request.set_VideoId(videoId) #设置set_PlayConfig参数指定试看时长为15秒 request.set_PlayConfig('{"PreviewTime":"15"}') request.set_accept_format('JSON') response = clt.do_action(request) return response clt = client.AcsClient(access_key_id, access_key_secret, region) print GetPreviewURL(clt) 使用获取到的试看地址播放获取到的播放地址格式(最后end=15参数说明是15s试看):https://vod.aliyunvod.cn/8f026a6b21004454bc1524f3bfa71015/6c2bed8cd51e4e02b261d00a19ce76e4-3c166f6cad28fc09ff0ddada54f4ab08-fd.mp4?auth_key=1575626158-f644bdd753434db08813410fa04e4492-0-d7976721890fc12348ea4cabfb70b815&end=15 播放效果实际播放可以看到视频只有15秒 注意事项 试看的基本原理是,播放的CDN加速地址带有试看的指定时长信息,云端会对该信息进行鉴权,鉴权通过会返回指定的文件内容,否则拒绝访问、返回403。 点播试看功能基于阿里云CDN加速实现,且必须在视频点播(VOD)控制台配置CDN加速域名。 此方案必须开启A鉴权,同时,为了防止试看参数被篡改,试看参数也作为auth_key计算的一部分。 域名必须开启 range回源 和 拖拽播放。具体可在域名管理-配置(对应域名处)-视频相关处开启。
业务场景 在线音视频会议、1 对 1 视频通话应用的场景(类似微信的视频通话功能)下,需要实现视频呼叫的功能。目前阿里云的音视频通信产品需要通话双方约定加入同一个频道号才能互相通话,本文将给出一个借助消息服务实现视频呼叫的方案。 业务流程 下图所展示的基于消息服务(自建或云服务)和音视频通信 RTC 实现一次音视频通话会议的调用流程,其中灰色部分为您的自建开发程序或AppServer服务,蓝色部分是消息服务(自建或云服务)、橙色是音视频通信 RTC服务。 该场景中用户 A 将邀请用户 B 加入音视频会议,具体流程如下所述: 终端 App 的某个用户 A 发起呼叫请求,通过发送消息将请求传递到消息服务端,消息经过消息服务路由到业务方自行开发的AppServer,AppServer验证通过后返回本次通话用户A和用户B的加入频道相关参数。 用户A收到加入频道相关参数后,调用RTC的客户端接口加入音视频通话频道中 消息服务主动将用户B的加入频道相关参数发送给用户B的客户端 用户B接受邀请后,通过步骤3中的入会信息调用RTC的客户端接口加入音视频通话频道中 基于上述设计思路,可以使用消息服务实现其他自定义流程,例如销毁会议、中途拉人入会、禁言等操作。消息服务在音视频会议场景中充当了信令传输的角色。 注意事项 方案中的消息服务需要业务方自行实现,或者也可以使用第三方的即时通信服务 需要保证AppServer返回的A和B用户的入会信息中频道号一样
2020年03月
2020年01月