使用 Microsoft Teams实时媒体通话和会议
实时媒体平台使机器人能够使用实时语音、视频和屏幕共享与 Microsoft Teams 通话和会议交互。 实时媒体平台是一种先进的功能,允许机器人逐帧发送和接收语音和视频内容。 机器人可原始访问语音、视频和屏幕共享媒体流。 还有更简单的服务托管的媒体机器人,它们依赖实时媒体平台进行所有媒体处理。 自行处理媒体的机器人称为应用程序托管的媒体机器人。
例如,在与机器人的 1:1 通话中,当用户说话时,机器人每秒接收 50 个音频帧。 机器人接收每帧 20 毫秒 (ms) 音频的音频帧。 应用程序托管的媒体机器人可以在接收音频帧时进行实时语音识别。 无需在用户停止讲话后等待录音。 机器人还可以发送和接收高清分辨率视频,包括基于视频的屏幕共享内容。
该平台为机器人发送和接收媒体提供了简单的、类似套接字的 API。 它处理音频或视频数据包的实时编码和解码。 它使用 SILK 和 G.722 等编解码器进行音频编码,H.264 进行视频编码。 该平台还处理所有媒体数据包加密或解密,以及数据包网络传输。 机器人只涉及实际的音频或视频内容。 实时媒体机器人与多个参加者进行 1:1 的通话和会议。
媒体会话
实时媒体机器人必须声明其必支持的形式。 实时媒体机器人在接听来电或参加 Teams 会议时必须声明支持。 对于每个受支持的形式,机器人声明其是否可以发送和接收媒体、仅接收或仅发送。 例如,设计用于处理 1:1 Teams 通话的机器人需发送和接收音频。 但是机器人只需要发送视频,因为它不需要接收呼叫者的视频。 在机器人和 Teams 呼叫方或会议之间建立的一组音频和视频形式称为媒体会话。
支持两种类型的视频形式:主视频和基于视频的屏幕共享。 主视频用于从用户的网络摄像头传输视频。 基于视频的屏幕共享允许用户共享屏幕。 平台允许机器人发送和接收两种类型的视频。
加入 Teams 会议后,机器人可以同时接收多个主视频流,每个媒体会话最多 10 个。 机器人可在会议中看到多个参者。
下一节将提供机器人以帧序列的形式发送和接收媒体的详细信息。
帧和帧速率
实时媒体机器人直接与媒体会话的音频和视频形式交互。 机器人以帧序列的形式发送和接收媒体,每一帧都是一个内容单元。 一秒钟的音频以 50 帧的序列传输。 每帧包含 20 毫秒,是语音内容的 1/50 秒。 一秒钟的视频作为 30 幅静止图像的序列传输。 每幅图像的观看时间仅为 33.3 毫秒,即下一个视频帧前的 1/30 秒。 每秒传输或渲染的帧数称为帧速率。
下一节将提供实时媒体通话和会议中使用的音频和视频格式的详细信息。
音频和视频格式
在音频格式中,音频的每秒钟表示为 16000 个样本,每个样本包含 16 位数据。 20 毫秒的音频帧包含 320 个样本,即 640 字节的数据。
视频格式中支持多种格式。 视频格式的两个关键属性是帧大小和颜色格式。 支持的帧大小包括 640x360(360 像素)、1280x720(720 像素)和 1920x1080(1080 像素)。 支持的颜色格式包括每像素 12 位的 NV12 和每像素 24 位的 RGB24。
720-p 视频帧包含 921,600 像素,即 1280 乘以 720。 在 RGB24 颜色格式中,每像素表示为 3 个字节,即 24 位,包括红色、绿色和蓝色分量各 1 个字节。 单个 720p RGB24 视频帧需要 2,764,800 个字节的数据,即 921,600 像素乘以每像素 3 个字节。 在可变帧速率下,发送 720p RGB24 视频帧意味着每秒处理约 80 兆字节的内容。 在网络传输之前,H.264 视频编解码器会对 80 兆字节进行大量压缩。
平台的高级功能允许机器人以编码 H.264 帧的形式发送或接收视频。 支持提供其自己的 H.264 编码器或解码器的机器人,或者不需要解码为原始 RGB24 或 NV12 位图的视频流。
下一节将提供正在发言的哪些会议参加者是活跃的主发言人的详细信息。
活跃的主发言人
加入由多个参与者组成的 Teams 会议时,机器人可以识别哪些会议参与者正在发言。 活跃的发言人在每个已接收音频帧中识别听到的参加者。 主导说话人确定哪些参与者在小组对话中最活跃或最占主导地位,尽管他们的声音不会在每个音频帧中听到。 当不同参加者轮流发言时,主发言人会变更。
下一节将提供机器人发出的视频订阅请求的详细信息。
视频订阅
在 1:1 通话中,如果机器人能够接收视频,机器人会自动接收呼叫方的视频。 在 Teams 会议中,机器人必须向平台表明其希望看到的参加者。 视频订阅是机器人请求接收参加者的主视频或屏幕共享内容。 当会议参加者进行对话时,机器人会修改其所需的视频订阅。 机器人根据主要扬声器集的更新或指示哪个参与者正在共享屏幕的通知来修改视频订阅。
下一节将提供开发应用程序托管的媒体机器人所必须安装的内容及要求的详细信息。
开发人员资源
要开发应用程序托管的媒体机器人,必须在 Visual Studio 项目中安装 Microsoft.Graph.Calls.Media .NET 库 NuGet 包。
应用程序托管的媒体机器人需要 .NET 或 C# 和 Windows Server。 有关详细信息,请参阅 应用程序托管的媒体机器人的要求和注意事项。
代码示例
示例名称 | 说明 | Graph |
---|---|---|
策略记录机器人 | 此示例演示机器人如何接收媒体流进行录制。 | View |