阿里云视频点播(ApsaraVideo VOD)是集音视频管理、处理和分发播放于一体的一站式解决方案。本文介绍如何从零开始完成视频点播服务集成,搭建一个安全、经济且适用于生产环境的视频播放解决方案。
产品架构
前提条件
视频点播为新用户提供了新人试用产品,可以充分体验和使用服务。
地域选择
视频点播存在服务地域隔离。就近选择服务地域可以有效降低网络延迟,提高数据传输效率。同时,不同的服务区域支持的功能存在差异,详情请参见服务地域。
方案搭建
步骤一:配置存储
进入点播控制台存储管理,在上方菜单栏的服务区域,就近选择您要开通的服务地域。
单击启用点播系统Bucket,选择存储冗余类型。如果业务需要更高的可用性保障,建议选择同城冗余存储。
标准存储-同城冗余(ZRS)
采用多可用区(AZ)内的数据冗余存储机制,将用户的数据冗余存储在同一地域(Region)的多个可用区。当某个可用区不可用时,仍然能够保障数据的正常访问。
标准存储-本地冗余(LRS)
采用单可用区(AZ)内的数据冗余存储机制,将用户的数据冗余存储在同一个可用区内多个设施的多个设备上,确保硬件失效时的数据持久性和可用性。
启用存储地址需要一段时间,请您耐心等待。当系统提示存储地址启用成功,且存储地址的状态为正常后,方可使用该存储地址。
步骤二:上传音视频
在上传音视频前配置好转码模板组,可以确保视频上传后能自动生成多种清晰度的版本,优化播放体验并节省带宽。
选择上传方式
SDK上传(生产环境推荐)
通过后端服务调用SDK获取上传凭证,然后由客户端(Web/App)直接上传至点播服务。这是最安全、最高效的方式。
说明详细代码示例请参考媒体上传概述。
python# Python示例:后端服务获取上传凭证和地址 from aliyunsdkvod.request.v20170321 import CreateUploadVideoRequest from aliyunsdkcore.client import AcsClient import json # 1. 初始化客户端 # 请替换为您的AccessKey ID、AccessKey Secret和地域ID client = AcsClient('your-access-key-id', 'your-access-key-secret', 'cn-shanghai') # 2. 创建API请求并设置参数 request = CreateUploadVideoRequest.CreateUploadVideoRequest() request.set_Title('My Test Video') request.set_FileName('video_test.mp4') # request.set_TemplateGroupId('your-transcode-template-group-id') # 可选,指定转码模板 # 3. 发起请求并获取响应 response = client.do_action_with_exception(request) response_data = json.loads(response) # 4. 将UploadAddress和UploadAuth返回给客户端 upload_address = response_data['UploadAddress'] upload_auth = response_data['UploadAuth'] video_id = response_data['VideoId'] # 客户端拿到凭证后,使用上传SDK完成文件上传。
控制台上传(数量少且文件小时,可进行上传或者测试)
进入点播控制台媒资库音/视频,点击上传音/视频,进入上传音/视频页面,选择本地上传并添加上传文件。
URL批量拉取(没有存储在本地且支持通过公网URL访问时,适用于离线搬站),详细操作可参见URL批量拉取上传。
Windows客户端(多个大文件批量上传),详细操作可参见通过Windows客户端上传文件。
步骤三:配置加速域名(可选)
获取播放地址进行播放会按存储流出流量计费。配置加速域名后,加速服务费用相较于存储流出流量费用享有50%-70%的价格优惠。详情可参见添加加速域名。
步骤四:集成播放
获取播放凭证(生产环境推荐)
后端API调用
后端服务需要调用API,为每个播放请求动态生成一个有时效性的播放凭证(PlayAuth)。
python# Python示例:获取播放凭证 from aliyunsdkvod.request.v20170321 import GetVideoPlayAuthRequest # client已在上传步骤中初始化 request = GetVideoPlayAuthRequest.GetVideoPlayAuthRequest() request.set_VideoId('your-video-id') # 替换为实际的VideoId request.set_AuthInfoTimeout(3000) # 凭证有效期,单位:秒。此处为50分钟。 response = client.do_action_with_exception(request) play_auth = json.loads(response)['PlayAuth'] # 将获取到的 play_auth 和 video_id 返回给前端
前端播放器集成
前端播放器使用从后端获取的
vid
和playAuth
来初始化播放。Web端
<!-- Web播放器示例 --> <div id="player-container"></div> <script src="https://g.alicdn.com/de/prismplayer/2.15.2/aliplayer-min.js"></script> <script> var player = new Aliplayer({ id: 'player-container', width: '100%', height: '500px', vid: 'your-video-id', // 从后端获取 playauth: 'your-play-auth', // 从后端获取 cover: 'https://your-domain.com/cover.jpg' // 封面图URL }, function (player) { console.log('播放器创建成功'); }); </script>
Android端
1. 创建播放器 AliPlayer player = AliPlayerFactory.createAliPlayer(context); // 2. 配置播放源 VidAuth vidAuth = new VidAuth(); vidAuth.setVid("your-video-id"); vidAuth.setPlayAuth("your-play-auth"); vidAuth.setRegion("cn-shanghai"); // 设置地域 // 3. 准备播放 player.setDataSource(vidAuth); player.prepare();
iOS端
1. 创建播放器 let player = AliPlayer() // 2. 配置播放源 let vidAuth = AVPVidAuthSource() vidAuth.vid = "your-video-id" vidAuth.playAuth = "your-play-auth" vidAuth.region = "cn-shanghai" // 设置地域 // 3. 准备播放 player.setSource(vidAuth) player.prepare()
URL鉴权方式
URL鉴权方式将签名信息直接附加在URL中,安全性低于播放凭证方式。适用于一些不方便改造播放器的场景。详情可参见URL鉴权。
Web播放器在线体验
进行音视频上传测试或体验时,也可以直接使用Web播放器在线体验。
进入点播控制台媒资库音/视频,单击对应视频操作列下的管理。
选择视频地址标签页,点击对应清晰度操作栏下的复制地址。
在Web播放器中使用播放地址进行播放。
扩展
常见问题
如何进行批量音视频上传?
您可以通过PC客户端工具、URL批量拉取和上传SDK进行音视频批量上传,详情请参见媒体上传概述。