本文为您介绍如何快速搭建长视频App。
前言
长视频也称为在线视频,主要以泛娱乐化的影视剧作为载体呈现。随着移动设备和网络的发展,终端用户对视频播放的需求也显个性化和垂直化,不仅适用于泛娱乐内容,同时也有教育、政企培训、融媒体等场景的需求。阿里视频云推出了一站式的解决方案,包含了视频的播放,视频管理等基础能力,同时也具备了业务属性的能力,如弹幕、广告播放等。通过阅读本文可以让您快速了解一个长视频APP所涉及到的相关产品和使用情况,快速搭建长视频APP。
客户端SDK
该部分内容主要阅读者是客户端开发人员
客户端SDK可帮助您实现视频播放层面的能力。
SDK下载视频播放端可以直接下载阿里视频云播放器SDK单击下载。不需要license授权。
业务代码实现我们本身提供了一套源码作为SDK如何使用的重要参考,如果你想快速上线,也可以直接集成我们的源码。源码下载。Demo编译运行与集成请参考Android长视频解决方案集成和iOS长视频解决方案集成。
服务端
该部分内容主要阅读者是服务端开发人员
生产出的视频需要发布到线上供其他用户观看和互动时还需要涉及以下几个服务的配置和开发:
如何使用视频点播服务(VOD):
视频点播(ApsaraVideo VoD,简称VoD)是集视频采集、编辑、上传、媒体资源管理、自动化转码处理(窄带高清TM)、视频审核分析、分发加速于一体的一站式音视频点播解决方案。
业务后台服务(APPServer)—主要讲解阿里云账号权限相关:
长视频App需要一台简单的业务服务器,该服务器可以为 App 提供注册、登录、存储用户关系数据、用户和视频关系数据、视频列表、视频上传签名、接受视频点播服务(VOD)的回调信息等能力,您可以将其搭建在ECS云服务器上自行开发搭建。
开发者要使用阿里云点播服务API和客户端SDK,阿里云会对每一次发起的请求根据当前的操作验证用户身份,即该账号是否拥有相应的权限,验证用户身份都需要使用AccessKey。
如何使用视频点播服务
开通视频点播服务
在阿里云官网视频点播产品详情页快速了解产品信息。
单击立即开通,在订购页面选择计费方式并确认订单。
开通完成后,即可进入视频点播控制台 概览 页面,开始使用点播服务。
添加域名。
进入视频点播控制台,添加用于视频分发与加速的自有域名。
说明注意:请确保该域名已经备案,并拥有使用权。
域名添加后,可获得阿里云加速域名CNAME地址,完成CNAME配置后即完成域名添加操作。
说明注意: 请根据提示信息,到您的域名解析商处完成CNAME绑定。如果使用万网、新网或DNSPod域名,域名绑定操作参考 CNAME绑定。 更多详细如果使用点播服务请查看相关文档
业务后台服务
配置RAM(子账号AK)
在使用阿里云服务端API的时候,都需要使用阿里云的AccessKey进行访问,直接使用主AccessKey访问存在较大的安全风险。使用RAM子账号可以帮助您有效避免AccessKey或者密码泄露导致的安全问题。
配置权限时,需要选择“AliyunVODFullAccess”和“AliyunSTSAssumeRoleAccess”两个权限。其中,“AliyunVODFullAccess”权限是用来访问点播服务API的,“AliyunSTSAssumeRoleAccess”权限主要是用来后续获取STS权限。如下图:
配置STS(子账号临时AK)
阿里视频云在客户端产生的视频文件需要上传到云端,此时需要把一个鉴权信息下发到客户端。上一章节中讲到的RAM是永久有效的,不适合在客户端上进行存储和分发,因而阿里视频云需要一个临时有效的AK给客户端调用。具体操作步骤如下:
新建角色。
在角色配置向导页面,选择用户角色 > 当前用户,根据提示完成角色创建。
配置角色权限。
说明注意:请按照上图选择视频点播服务的权限。
获取STS。(这部分在业务后台服务APPServer中编写。)
先看一段代码:
static AssumeRoleResponse assumeRole(String accessKeyId, String accessKeySecret, String roleArn, String roleSessionName, String policy, ProtocolType protocolType) throws ClientException { try { // 创建一个 Aliyun Acs Client, 用于发起 OpenAPI 请求 IClientProfile profile = DefaultProfile.getProfile(REGION_CN_HANGZHOU, accessKeyId, accessKeySecret); DefaultAcsClient client = new DefaultAcsClient(profile); // 创建一个 AssumeRoleRequest 并设置请求参数 final AssumeRoleRequest request = new AssumeRoleRequest(); request.setVersion(STS_API_VERSION); request.setMethod(MethodType.POST); request.setProtocol(protocolType); request.setRoleArn(roleArn); request.setRoleSessionName(roleSessionName); request.setPolicy(policy); // 发起请求,并得到response final AssumeRoleResponse response = client.getAcsResponse(request); return response; } catch (ClientException e) { throw e; } }
说明accessKeyId和accessKeySecret指RAM中保存下载的AK信息; roleArn指角色详情页的Arn值,如下图: roleSessionName:自定义,主要用于后续操作审计时使用。 policy:是对每次获取权限做一次更加细致的权限控制。 String policy = "{\n" + " \"Version\": \"1\",\n" + " \"Statement\": [\n" + " {\n" + " \"Action\": \"vod:*\",\n" + " \"Resource\": \"*\",\n" + " \"Effect\": \"Allow\"\n" + " }\n" + " ]\n" + "}";
获取到的数据下发到网页客户端提供给上传API进行视频文件上传。
附录
如您需要进一步了解AK,请参考:视频点播账号与授权概述。
如您需要进一步了解RAM,请参考:RAM子账户访问。
如您需要进一步了解STS,请参考:STS临时访问授权。
如您需要进一步了解Server,请参考:Server层源码下载和Server集成文档。
- 本页导读 (1)