【视频】客户端 API 探索|学习笔记

简介: 快速学习【视频】客户端 API 探索。

开发者学堂课程【低代码音视频开发教程:【视频】客户端 API 探索】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/936/detail/14813


【视频】客户端 API 探索


内容介绍:

一、低代码音视频工厂的客户端 API

二、客户端 API 列表


一、低代码音视频工厂的客户端 API

1.打开文档

低代码音视频工厂的客户端 API 首先通过浏览器打开阿里云官网。在阿里云官网首页通过搜索低代码音视频工厂找到低代码音视频工厂的首页。点击查看文档快速上手,来到低代码音视频工厂的文档页面。

image.png

2.进入文档

在这个文档页面看到左侧客户端 API name。在客户端 API name 里可以看到有整个客户端 API 比较的完备的信息和完整的 API 列表和发布历史。还有整个客户端 API 按照功能划分的模块。


二、客户端 API 列表

1.列表

(1)首先看一下客户端 API 列表。这里面根据目前的四个端。Android,iOS,Web 和 Windows 对 API 进行划分。

image.png

首先点击进入安卓的接口列表,可以看到里面有最新版本的1.5.0接口的具体说明文档,是个长链接可以点进去看。还有一些比较重点的类的介绍,在具体的 API 文档中。点击可以跳转到一个阿里云官方的客户端,

image.png

是 API 的一个介绍的文档的样式。

看完客户端的 API 列表,看一下整个客户端 SDK 发布的历史,也是分四段来介绍。

image.png

这个页面以安卓为例,在这个页面会把历史的版本全部列出来,以及每个版本升级所做的升级的功能点。方便不同的用户来选择,按需选择不同的版本。整个客户端的功能按照不同的模块划分出来的,在具体的模块里介绍具体的对应的 API。

2.长连接

(1)长连接概述

长连接顾名思义是一个一直保持着的网络通道,底层是一个 TCP 的一个通道。这个通道是让客户端 SDK 在内部与自己的服务端进行网络通信的时候用的。所以这个长链接是整个客户端 SDK 的基础。

(2)初始化

长链接首先有一个初始化和建连的流程展示。如下图:首先需要初始化然后建立连接,建立连接的过程中需要获取登录用的 Token。

image.png

具体如何初始化。

• 初始化接口,是客户端SDK准备资源,与服务端建立连接的步骤。

• 本接口参数主要包含appId、appKey 、deviceld和token回调函数,以下名参数的详细说明:

①appld,应用ld,用作标识应用,可以在应用管理页应用列表中获得。

②appkey,用作标识客户端类型的宇符串,可以在应用管理页的应用列表中获得Android、iOS 、P、Web的对应值。

③deviceld,用作标识当前设备的唯一Id,如何获取deviceld,请参考下方各端的API使用示例。

④token回调函数,token回调函数是提供给SDK内部调用,用来获取建连所需要的token令牌。在回调函数的实现里,需要开发者调用自己的应用服务提供的接口来获取到token信息,并将token返回给SDK。SDK通过token与服务端建立连接。

长连接的初始化需要一些应用的信息。包括 appId 和 appKey 这两个。在阿里云低代码音视频工厂控台里面的应用管理中,具体创建应用后可以获得。deviceId 可以用来标识设备的唯一性,用具体的算法就行。

(3)建立长连接

做完初始化成功之后可以建立长连接,建立的过程中主要用到的 ID 是用户的 user ID ,目前只支持英文或者阿拉伯数字或是二者的组合。长连接成功以后,客户端内部可以必要的时候完成客户端 SDK 和服务端服务之间的通行。

(4)断开长连接

长连接也可以断开,断开有类似的逻辑。

3.房间

(1)获取房间实例对象

长连接建立完了以后,来到了低代码音视频工厂的核心的概念叫做房间。房间是低代码音视频工厂设计出来的虚拟的空间概念,在这个虚拟的空间概念概念里可以进行很多事情,比如直播、连麦、白板等。所有的要做的事情必须要在房间里完成的,而且这个房间可以帮助我们来对于房间里的任何行为和事件进行记录。如何创建房间呢?创建房间需要一个服务的接口。用户可以使用服务的 open API 接口创建好房间,创建好房间后拿到 roomID。标识房间的一串字符,拿到房间 ID 后可以去各个端。实地化一个房间对应的句柄。拿着句柄是进行房间的任何操作的前提。

(2)进入房间

进入房间的时候需要按照用户的诉求传入一些自定义的信息,每个端都支持这样的能力。包括在房间内的用户监听其他人进入房间的消息,也有类似的实例。

(3)离开房间

离开房间与进入房间类似,包括其他房源离开房间的消息也可以监听到。

(4)获取房间详情

刚才说到房间可以用来记录房间内的很多动作和行为的数据。其实就是包括房间里面本身的一些情况。这样的 API 就叫获取房间内的详细情况。可以查询的内容包括当前房间的房间 ID ,房间创建人的 userID ,用户 ID 包括房间的标题,房间的公告,包括房间内部的在线人数。

(5)更新房间标题

刚才说到房间里面包括很多信息,其中一个普遍的,或者是最基本的就是房间的标题。可以支持设置房间的标题,也可以设置别人设置房间标题更新的时候接收通知。

(6)更新房间公告

同样类似的房间公告也可以对房间标题有类似的设置和消息的解说。

(7)获取房间成员列表

另外就是可以获取房间的成员列表,实时查看房间内目前有多少人。多少user ID在这个房间内。

(8)房间踢人

房间也可以把某个人踢出去。

4.房间内

在房间内可以进行直播、消息、白板、文档、连麦,比如说可以在房间内进行直播。主播去直播推流,观众去观看直播,在房间里可以发消息,还可以构造一个白板。在房间内的其他人也可以看到实时互动的白板,也有文档,包括常见的语音连麦,视频连麦。

5.直播

先从直播开始看,直播接口主要分为两端主,一个是主播的推流。包括观众的拉流观看。这里的接口支持。基本上通用的所有的直播的能力都具备。用户无需关心直播内部的创建的内部的细节。可以通过一个接口开始直播和结束直播,包括可以去更新一些直播信息。比如常见的在电商场景下,直播里面挂载了一些商品链接,可以通过更新直播信息,在一场直播过程中更换不同的商品链接。同时直播信息会在观众端收到更新。

6.消息

消息是每个房间里都有消息对应的实例。使用这个实例的句柄就可以进行一些消息的操作,比如常见的可以在房间里发消息。在房间里发弹幕或点赞也可以发自定义消息。这里的自定义消息和弹幕消息的区别是自定义消息可以发给房间内的所有成员,也可以房间内的指定成员,而弹幕消息只能发给房间。因为房间内可以使用消息发言,也可以来禁言。或者取消禁言。具体的每一种逻辑有各个端的具体的实现的示例。包括禁言以后,用户去感知到自己被禁言这种消息的提醒。

7.白板

(1)初始化

下一个要介绍的就是白板能力,白板其实就是所普遍知道的可以实时互动的白板。白板的创建者可以在白板上进行书写,包括可以贴文档以及 PPT 以及贴视频去播放。由于提供的白板的接口的呈现形式是一个图形化的。白板会给出来一个类似 wave 的概念,wave 已经带着它的工具栏。比如要在白板上画一个圆或是矩形,已经把图形化的工具栏提供了。所以白板这块最主要是一开始的初始化,当白板呈现出来以后,就可以在白板上进行操作。

(2)白板录制和回放

白板还支持白板的录制。白板的录制是在整个白板的操作过程中,所有的动作的记录都可以被实时录制下来。可以做白板的回放。

(3)白板图片与页码操作

另外白板可以支持贴图片。例如将一个 PPT 里面的每一页作为图片贴到白板里面就可以做到在白板里面呈现文档,呈现 PPT。

8.文档

(1)上传

是一个普通的文档模块,每个房间内都会有一个文档的操作句柄,是一个文档的实例,是自己的模块。

(2)获取文档下载地址

使用句柄的话,可以进行文档的上传,文档的下载,包括文档的原始地址的获取。比如一个网络链接,可以通过查找文档的原始地址来找到下载链接。当然也可以直接对文档进行下载。

(3)下载

这里的下载是一个内存的二进制流。在移动端支持,目前在 Web,Windows上不支持。而且在可以看到整个文档运行时,对不同的文档在上传时会得到一个类似的叫文档 ID。documentID 的概念,documentID 是标识这个文档。

9.连麦

(1)流程介绍

所谓的连麦就是日常在直播中比较常见的主播和观众之间的连麦。可以去做纯的语音的连麦也可以做语音聊天室。

image.png

如上图连麦的流程。首先需要进入房间,在连麦开始前需要做一些连麦的配置,然后就去加入连麦。加入连麦成功就可以在连麦的内部去发布自己的摄像头或是麦克风的声音,包括共享屏幕,包括查看连麦成员列表。

(2)配置

具体看一下这样的步骤流程,首先看连麦的配置。可以支持在连麦之前做很多的配置,包括麦克风的设置,摄像头视频流的设置。屏幕比例,摄像头的画面采集的码率、编码的码率、摄像头的分辨率。支持对屏幕共享流的推送。对连麦设置完了之后下一个动作就是加入连麦。

(3)加入连麦和退出连麦

加入连麦在不同端游不同的实现逻辑。包括加入成功或是加入失败,类似退出连麦与加入连麦类似。包括退出的事件的监听。

(4)摄像头

摄像头的一些设置,在进行视频连麦的过程中,摄像头是一个很重要的部分。摄像头画面其实就是视频画面,视频画面包括两个部分,自己的视频画面就是自己的预览画面,自己的摄像头拍摄自己的画面,这叫本地预览画面。本地预览画面包括做一些旋转镜像都支持。本人视频流画面就是本地预览画面,支持是前后摄像头的关闭,前后摄像头的切换。关闭以后就变成了纯音频的连麦。支持对连麦过程中收到其他人视频流时的一些动作,一些通知。

(5)麦克风

自己麦克风的音频流。比如打开麦克风,关闭麦克风以及包括 Windows 端还有切换。在 Windows 端可以存在多种音频输入。对于他人的音频流可以主动去监听。包括其他人麦克风的开关都会有消息通知。还可以获取当前正在说话的人,当前正在麦克风里面有数据流的人的消息通知。

10.屏幕共享

(1)开启和关闭屏幕共享

将自己的屏幕作为画面去推送出去。目前视频共享界面在 iOS 端由于是系统权限较高,需要配置 extension。

(2)观看屏幕共享

如主播的或是老师端在课堂模式情况下进行屏幕共享,观众端如何去观看屏幕共享。在连麦过程中有常见的动作叫邀请连麦。

11.邀请连麦

(1)发出或撤销邀请

比如在直播间中,主播邀请某个观众进行连麦。包括发出邀请如果突然后悔了,撤销这个邀请。观众端在收到主播连麦邀请的时候,也有一些处理逻辑,可以接受,也可以拒绝。

(2)处理邀请

主播端如果收到了观众的拒绝要请,也会收到类似的事件。去处理类似的事件就可以了。

12.申请连麦

(1)发出或撤销申请

是在一个直播间里面某个观众向主播申请想跟主播进行连麦,他只是向主播发出一个申请。当他发出申请后,主播可以进行拒绝,也可以进行同意,都会有类似的事件提醒。

(2)处理申请

当主播收到观众的连麦申请的时候可以做一些处理,可以同意也可以拒绝,这个同意或者拒绝的消息都会发送到观众端,发出连麦申请的观众端都会收到信息。

13.踢出连麦

但主播也可以在连麦的过程中,把正在连麦的某个观众踢出连麦,结束与他的连麦。具体的操作逻辑以及四端的展示比较完整。

14.静音他人

(1)静音某个成员

在连麦或者进行视频会议中常见一个逻辑就是把某个人静音。如果不想让一个人说话,就可以静音。

(2)静音全体成员

也可以对所有人进行静音,所有人静音的话,是不包括当前主播或是当前教师,当前连麦的创建人可以静音房间内的其他人不包括自己。

15.连麦成员列表

(1)连麦中的成员

在房间中最近连麦时,可以获取房间中连麦成员,成员有多种情况。

(2)申请连麦中的成员

正在连麦的成员和申请连麦的成员。已经发出申请了,但主播并没有同意进行连麦的人员和已经正在连麦中的成员。

16.旁路直播

(1)开始旁路推流

普通的连麦情况下,是在连麦当中的所有人都是在跟主播实时互动的,实时音视频的连麦。但是跟主播音视频的连麦还可以通过旁边的一路直播通过推流出去让房间里面其他人不参与连麦就能看到当前主播的视频画面,这叫旁路直播。在连麦之外的旁边的单独的通路,把连麦的内容作为直播的内容进行推送出去。旁路直播只有主播或者老师才能开启。目前是房间的创建者才能开启。可以开始,也可以结束。

(2)设置旁路直播布局

旁路直播里有个很关键的点就是设置旁路直播里面正在连麦的多人画面的布局形式。

17.录制与回放

连麦进行录制以后,录制完成之后可以进行回放。首先连麦本身可以进行录制,连麦过程当中所有的视频画面,所有的音频都可以被作为一个视频完整地视频录制下来,录制下来后就可以进行回放,有专门的接口来查找获取连麦录制之后的生成的视频的地址。

相关文章
|
3月前
|
存储 API Apache
【zookeeper 第三篇章】客户端 API
本文介绍了Apache ZooKeeper客户端的一些常用命令及其用法。首先,`create`命令用于创建不同类型的节点并为其赋值,如持久化节点、有序节点及临时节点等。通过示例展示了如何创建这些节点,并演示了创建过程中的输出结果。其次,`ls`命令用于列出指定路径下的所有子节点。接着,`set`命令用于更新节点中的数据,可以指定版本号实现乐观锁机制。
33 0
|
1月前
|
人工智能 自然语言处理 PyTorch
Text2Video Huggingface Pipeline 文生视频接口和文生视频论文API
文生视频是AI领域热点,很多文生视频的大模型都是基于 Huggingface的 diffusers的text to video的pipeline来开发。国内外也有非常多的优秀产品如Runway AI、Pika AI 、可灵King AI、通义千问、智谱的文生视频模型等等。为了方便调用,这篇博客也尝试了使用 PyPI的text2video的python库的Wrapper类进行调用,下面会给大家介绍一下Huggingface Text to Video Pipeline的调用方式以及使用通用的text2video的python库调用方式。
|
2月前
|
负载均衡 API 数据安全/隐私保护
Zookeeper的客户端-原生的API
Zookeeper的客户端-原生的API
|
3月前
|
安全 API 网络安全
【Azure API 管理】APIM如何配置客户端证书的CRL检测策略
【Azure API 管理】APIM如何配置客户端证书的CRL检测策略
|
3月前
|
人工智能 监控 安全
F5社区学习笔记:API和AI如何改变应用安全?
F5社区学习笔记:API和AI如何改变应用安全?
48 1
|
3月前
|
测试技术 编译器 Go
依赖注入与控制反转:优化Go语言REST API客户端
依赖注入与控制反转:优化Go语言REST API客户端
|
3月前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
165 0
|
3月前
|
jenkins API 持续交付
jenkins学习笔记之十五:SonarSQube API使用
jenkins学习笔记之十五:SonarSQube API使用
|
3月前
|
API
【Azure 应用服务】在App Service中调用外部服务API时需要携带客户端证书,而多次调用的情况下会出现WindowsCryptographicException Keyset does not exist异常
【Azure 应用服务】在App Service中调用外部服务API时需要携带客户端证书,而多次调用的情况下会出现WindowsCryptographicException Keyset does not exist异常
|
3月前
|
存储 安全 API
【Azure API 管理】在APIM中使用客户端证书验证API的请求,但是一直提示错误"No client certificate received."
【Azure API 管理】在APIM中使用客户端证书验证API的请求,但是一直提示错误"No client certificate received."

热门文章

最新文章