开发者学堂课程【低代码音视频开发教程:【视频】服务端 API 探索】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/936/detail/14872
【视频】服务端 API 探索
内容介绍:
一、进入官网
二、产品目录
三、互动直播
四、技巧
五、总结
一、进入官网
1.登录
探索低代码音视频工厂服务端 API 。首先登陆阿里云官网,在阿里云官网的搜索栏搜索低代码音视频工厂。进入低代码音视频工厂的产品页,可以看到控制台、购买资源包、产品价格、Demo 体验以及帮助与文档的链接。进入帮助与文档的页面。低代码音视频工厂能开快捷地帮助我们完成一些场景的开发。
2.产品目录
页面的侧栏是整个文档的目录结构。包括产品简介、产品计费、快速入门、互动直播、互动课堂、控制台操作指南、SDK 参考、API 参考、视频专区以及常见问题。
二、产品简介
1.低代码音视频工厂
低代码音视频工厂是基于阿里云云原生、音视频 AI 智能算法等网络先进技术,提供易接入,强扩展,高效部署和覆盖多场景的音视频服务。助力企业快速搭建高质高品质的专属音视频业务平台。产品可覆盖电商直播,在线教育,企业培训,活动直播,秀场直播语聊房等多种场景。使用平台可以快速地完成注入多种场景业务。低代码音视频工厂从上到下提供了各种场景的 SDK 接入,以及在平台服务侧提供了各种服务的组件。今天介绍服务端 API 的探索。主要是在平台服务组件的部分。
三、互动直播
1.互动直播简介
通过低代码音视频工厂可以完成许多场景的开发。下面将以一个场景为例。提供互动直播的产品,互动直播是低代码音视频工厂的一款场景化产品,主要应用于互联网与泛娱乐行业新增的直播玩法,电商行业新增直播带货功能等场景。通过互动直播商品提供了覆盖全端的发起直播的功能,提供移动端直播,PC 端直播,移动端连麦直播、PC 端连麦直播等一系列功能。
2.低代码集成(含 UI )
(1)接入流程
如何才能完成一场互动直播的场景开发呢?可以选择低代码集成。对于整个平台的接入流程只需要进行三步,第一步是在平台的控制台创建应用,第二步集成客户端,第三步是根据自己的业务需求进行进阶开发。创建应用是通过控制台提供的功能,登陆低代码音视频工厂的控制台,选择互动直播的场景,就可以完成应用的创建。
(2)创建应用
创建应用之后,可以在应用的页面选择需要集成的客户端。当客户端接入完成之后,整个互动场景的业务开发基本完成。如果需要一些进阶的开发,比如需要一些自定义的功能。可以继续做第三步的进阶开发,进阶开发里面。用到服务端的进阶开发。
(3)进阶开发
服务端进阶开发
①集成服务端 SDK
首先,服务端进阶开发,第一步需要集成服务端的 SDK。服务端 SDK 提供了多语言的支持,语言类型包括原类型支持Java、Python、PHP、C/C++。以 Java 工程为例,Java 功能集成Java SDK ,整个 SDK 选择 Java,默认同步实现逻辑,不需要 Java 异步。通过 Java 的集成,首先需要安装环境,安装完环境,引入 Java 的构建依赖,在引入最新的提供的低代码音制品工厂服务端 SDK 的构建依赖。这样就完成了一个 Java SDK 服务端的集成。
②扩展服务功能
完成第一部服务端 SDK 之后,可以通过服务端sdk完成互动直播的扩展功能的开发。一场互动直播,按直播的生命周期分为直播前,直播中,直播后。直播通过 Web 端或是 Windows 端作为开播工具的话。可以参考已经提供的 Web 页面主播端集成或 Windows 端推流工具集成来创建直播,并获取服务跳转的链接。在直播中如果想做一些进阶的开发,比如对直播的状态需要放置业务流程中,可以监听直播状态的回调事件。如果完成整个回调,首先是在控制台进行回调事件的配置,配置完成之后服务端提供回调地址。在一场直播开始后,整个低代码音视频平台,将直播的开始相关的内容回调给服务端,服务端可以进行一些扩展的操作,比如将直播开始的状态。广播给所有的观众或是通过后台的服务端 API 操作对直播进行管控。在直播后的场景,比如停止一场直播后,还可以获取录制回放的视频,以及获取一场直播的统计信息,这些都可以通过服务端的 API 实现。
③其他
除了上面的直播前中后举例的实现,其他丰富的功能可以继续看服务端 API 的概览。先以互动直播的场景为例,通过创建应用,应用接入,客户端接入完成低代码的集成。在进阶开发集成之后,会引入服务端的进阶开发,服务端进阶开发,首先要集成服务端 SDK,第二步是进行扩展服务端的功能,扩展服务端功能的开发会用到服务端的相关功能。
3.互动课堂
(1)互动课堂简介
同样的,如果想实现一场互动课堂,互动课堂在低代码音视频工厂上,整个的开发流程和互动直播非常类似。
(2)低代码接入
建议先采用地代码接入的方式,如果需要进阶开发,才会用到服务端的相关进阶开发。流程是首先要集成服务端 SDK ,其次再进行扩展服务端功能的开发。
(3)服务端 API
4.API 概览
服务端 API 的相关内容从扩展服务端功能的页面。可以看到其他功能的选项。
跳转到 API 的参考,侧栏 API 参考服务端 API 的目录下找到所有的内容。整个服务端的 API 涵盖了以下多个服务,包含长连接、直播、课堂、房间、消息、连麦、样板间。
5.长连接
长连接的 API 提供了获取长连接的 Token 长连接用于客户端,服务端进行连接,连接时所提供的获取 Token 或是令牌的服务。提供了获取健全 Token 这样的服务端的接口,通过调用获取 GetAuthToken 获取健全 Token 的接口,客户端可以获取到长连接的 Token,然后客户端可以用 Token 来和低代码音视频平台建立连接,建立连接之后可以在客户端直接使用提供的服务能力。
6.直播
如果自己的服务端需要完成其他的一些流程。比如直播的内容扩展开发。直播的完整生命周期包含了直播前,中,后三个生命周期,在整个 API 的结合里提供了直播对象的创建、删除、直播数据统计、获取列表、发布以及查询详情、获取直播录制信息、停止直播和更新直播等内容。
(1)创建直播
以创建直播为例。可以通过服务端的接口创建一场直播,创建直播接口首先提供了调试的入口。
①请求参数
请求参数里首先持有在低代码音视频工厂控制台创建的应用,用户的应用 ID 以及直播的标题、直播的公告、直播的封面、直播的控制、扩展字段、主播的 ID 、主播的昵称以及操作人的信息。
如上图:侧栏请求参数一栏,首先写了参数名称以及参数类型,还有是否必选,参数的示例值,最后是参数的具体含义,在使用该接口的时候可以看看整个描述,描述中也会详细陈述该参数的含义以及它的一些限制。
②返回数据
接口的返回数据,创建直播通用返回的一个 RequestID,这个结构下有一个 Result 的对象。Result 的对象下返回了 AppID 的就用户的应用 ID 以及直播所属的房间 ID 。在创建一场直播时,会默认创建一个房间,这个房间 ID 在使用一些扩展功能的时候可以用到。LiveID 是直播的唯一标识, ChatID 就是直播里开启的一个弹幕服务,是弹幕的唯一标识,在用户发送弹幕或是发送字例消息时会用到这样的参数,还返回了直播标题、直播公告、直播封面、直播主播的信息,当直播结束时会用到直播回放的 Url。直播的回放地址 PlayBackUrl、直播的推流地址 PushUrl、直播的播流地址 LiveUrl,默认的是 flv 协议的,还提供了主播的昵称,以及提供了 Hls 协议的播放地址,提供了 DN 式直播,DN 式直播的播放地址对象信息,包含了原画的直播 ArtcUrl ,以及用于移动端播放的ArtcH5Url ,根据自己的业务场景和播放端来选择不同的播放协议的地址。
③示例
请求示例以 http 请求为例,如果接入了Java SDK,就可以用通用的提供的初始化 Client 去调用,调用方法就不是通过 HTV 协议调用。如果接口出现了异常,会返回一些错误码。
(2)发布直播
对直播可以完成创建,创建完可以进行发布,发布的话,后台就将整个直播的状态从待开始变为直播中。直播中主播端会进行推流,将整个的直播地址下发到观众端就可以成功的观看。
(3)停止直播
发布直播,当一场直播结束,可以调用服务端的停止直播的接口进行结束。结束直播完成哪些操作呢?首先将直播的状态置为结束。其实如果配置了回看,那么会生成回看地址。
(4)直播数据统计
①查询直播统计数据
在直播结束之后可以通过。查询直播的数据统计,来查询一场直播的相关的数据,比如一场直播的数据统计。有直播的时长、状态,以及直播的 Uv 观看人数,观看次数 Pv,还有直播里面发送的互动消息数和直播开始结束时间和总的观看时长。
②分页查询直播用户数据统计
如果想看具体的某个用户的观看时长 。也可以通过分页查询直播用户数,据统计的接口来获得。
(5)获取直播列表
当一场直播结束后,可以通过获取直播列表以及发起或待发起所有的直播的信息。
(6)更新直播信息
如果直播中想做一些直播信息的更新,比如想更新一个直播的封面图,或是更新直播里面的扩展信息,可以调用更新直播信息的接口来完成操作。
(7)所以以直播服为例,提供了整个创建、发布、停止,以及数据统计、查看直播录制信息的相关的接口。里面提供了创建时和更新扩展的字段,方便植入业务场景的属性。当写了一些字例字段之后,通过查询直播详情,来获取一些字段来完成自己业务和一场直播的结合。
7.课堂
(1)创建课程
还提供的服务能力,还有课堂服务,课堂提供了创建课程、获取课程列表,获取课程详情,获取课程录制信息、更新课程、删除课程以及结束课程全生命周期的课程的相关内容。通过这些API可以成功的发起一堂课,可以将课程课堂分发出去发给学生。
(2)获取课程录制信息
当课程结束之后,可以看整个课程的录制回放。可以获取课程的录制信息,观看课程。在整个创建课程的同时,可以添加一些其他的信息。在创建课程返回里,同样默认创建房间。
8.房间
(1)创建房间
房间服务,房间是比较抽象的一个概念,创建完一个房间,房间可以被用成为一个直播间也可以用作是一个课堂。针对房间提供了创建房间、查询、更新以及删除等完整的接口。如前面所讲,我们在创建一场直播和一场课堂,默认创建一个房间。
(2)查询房间详情
当有了一个房间的 ID 之后,可以查询房间的详情,在房间的详情返回数据里,会返回房间的基本信息以及房里直播的以插件的形式存在 PlugininstanceinfoList 。有几种插件类型,比如开启了一个直播插件,白板插件,聊天插件以及音视频通信插件。以创建一场直播为例,创建一场直播之后,互动直播里包含关联了一个房间,该房间下,由于还有互动消息存在,还有一个插件就是聊天插件,所以一个互动直播的房间包含着两个插件,一个是直播插件,一个是聊天插件。一堂课堂包含的插件有直播的插件,白板的插件,聊天的插件以及音视频通信的插件。直播的插件用于课堂的录制场景,白板的插件用于整个课堂后面黑板的绘画,聊天插件就是在整个课堂过程中一些互动消息,音视频通讯是老师和同学进行的连麦。就是上课过程中进行的连麦场景的服务的能力,所以房间的对象是一个通用和抽象的实体,可以根据自己的业务场景去选用这样的服务。
9.消息
(1)批量查询弹幕消息
下面一个模块是消息模块,消息模块在整个的场景体系里可以用来发送弹幕。承载幕场景或是发送自定义消息,在互动直播的场景里可以用它向一场直播里所有的人发送弹幕。
(2)发送自定义消息
也可以通过向直播归宿的房间,发送自定义消息,完成自己的业务场景。比如想在直播间的某一时刻。去呼起一个商品列表,或呼起自己的促销信息。可以通过发送自定义消息进行实现,将消息的内容植入到 Body 字段里发送,发送之后,整个会传到传送到观看端。客户端接到之后可以将这样的消息进行处理,比如弹出来以弹框的形式进行处理。可以完成弹出商品列表,弹出答题卡或者一些促销信息或等自定义业务。
10.连麦
连麦模块。连麦的服务是提供了一个超低延时的通信。连麦服务主要是使用在课堂场景老师和学生的连麦这样场景中,后台提供了功能首先是可以查询连麦的详情,持有一个课堂返回的连麦的 ID 就是 ConferenceID可以查询整个连麦的详情,以及连麦的用户列表。在后台可以根据自己的业务场景调用接口来实现结束连麦以及把在麦上的人进行踢人操作。这是连麦服务模块。
11.样板间
(1)获取样板间服务跳转链接
最后是样板间服务。样板间服务在产品功能上服务的是整个低代码集成的服务。低代码集成服务是当我们不想去开发一些比较重的业务时,我们采用低代码集成时会用到样板间的服务,样板间的服务主要是在低代码集成时提供的一个服务的跳转链接。持有这样的服务跳转链接可以完成一些业务场景。
(2)举例
以互动直播场景为例,如果选用低代码集成的方式,假设通过默认会开启一个样板间的服务,通过样板间服务,比如持有的 AppID、AppKey 还有里面的关信息。互动直播是发起一场直播,将这样的参数进行传递之后会生成一个自动下发一个样板间,一个直播的观看地址。拿到一个样板间服务跳转链接之后可以快速的分发给观众端,观众端拿到这样的地址可以直接进行观看,所以采用低代码集成服务,会使用到样板间服务,主要的场景就是通过服务端或是客户端发起一场直播,或是一个课堂。那么在调用这样的服务端接口,获取一个观看直播或是课堂这样的服务链接。获取之后可以将这样的链接分发给我们想触达的这样的客户,可以这样直接观看直播或是课堂,快速将业务进行传播。
四、技巧
1.调试技巧
服务端 API 调试的一个小技巧。以创建直播为例,可以从创建直播的文档的调试窗口链接过去,
示例代码以 Java 为例,
Config config = new Config()
//您的AccessKey ID
.setAccessKeyId(accessKeyId)
//您的AccessKey Secret
.setAccessKeySecret(accessKeySecret);
//访问的域名
Config.endpoint = “imp.aliyuncs.com”;
Return new com.aliyun.imp20210630.Client(config);
Java.util.List<String> args = java.util.Arrays.asli.t(args_);
Com.aliyum.imp20210630.Client client = Sample.creatClient(“accessKeyId”,”accessKeySecret”);
CreateLiveRoomRequest createLiveRoomRequest = new CreateLiveRoomRequest();
//复制代码运行请自行打印API的返回值
Client.createLiveRoom(createLiveRoomRequest);
默认集成 SDK ,Java 代码中有初始化的 Client 进行的一个调用,可以通过页面假设在控制台已经创建完应用,输入应用 ID 再输入直播标题 Test 直播,这些非必填可以设置为空,先写一个主播 ID ,进行发起调用。
2.发起调用
“CreateTime”:1646214030000,
“PluginId”:”358d6d05-90af-4d3b-8217-3ede9e8c347clq60cu”,
“PluginType:”chat”
“CreateTime”:1646214031000,
“PluginId”:”a225cb5c-f2f6-4d1b-a419-43e51251430b”,
“PluginType:”live”
“HlsUrl”:http://demo-livepass.dingtalk.com/live/a225cb5c-f2f6-4b1d-a419-43e51251430b.m3u8?Auth key=1646818831-0-0-45c7c7ff4a68c00a2da598c735ab0944”,
发起调用之后可以看到该接口的返回,获取直播详情里返回了互动消息的 ID,返回了一个直播的 ID,返回了 Hls 协议的播放地址、主播和直播 ID,同样的拿到这样的直播 ID 可以去继续调用获取直播详情的接口。进行进一步的调试,查询直播详情来进行调试。从刚才拿到直播的 ID 还有控制台的 AppID 进行调用。这样就拿到了直播的推拉流地址,比如说直播推流地址是 PushUrl。或是播放地址。
3.模拟直播
如果想简单模拟一场直播,可以通过这样创建出来的推流或拉流地址,推流可以采用本地 OBS 工具进行推流。当然建议推流之前调用。发布直播进行发布,发布完后持有整个直播的推流地址,本地的推流工具进行推流,还可以采用播放器打开一个直播观看地址来验证整个直播的流程就可以进行观看。这是一个 Open API 的调试的示例。
五、总结
主要对整个的低代码音视频工厂的服务端 API 进行探索。
首先在整个产品页的侧栏有详细的介绍,低代码音视频工厂提供了互动直播、互动课堂等产品能力。以互动直播为例,接入一个产品,比如在低代码集成之后,如果想进行一些进阶的开发,那么就会用到服务端的 API ,首先要集成服务端 SDK ,其次通过服务端 SDK以及 API 列表查询相关的功能来完成业务能力。具体的 API 列表在 API 参考服务端目录下。主要包含长连接服务、直播服务、课堂服务、房间、消息、连麦、样板间等一系列服务,这些服务可以根据业务场景进行选择。
最后一部分如何通过阿里云官网进行 API 的调试,跳转到调试界面。在页面输入相关参数,输入参数后,会展示一些代码,这些代码可以用于服务开发之中。调试的结果在整个页面可以进行返回查看。