Table of Contents

Interface IAudioClient

Namespace
Kook.Audio
Assembly
Kook.Net.Core.dll

表示一个通用的音频客户端。

public interface IAudioClient : IDisposable
Inherited Members

Properties

ConnectionState

获取此客户端当前的连接状态。

ConnectionState ConnectionState { get; }

Property Value

ConnectionState

UdpLatency

获取到语音 UDP 服务器的往返时间估计值,单位为毫秒。

int UdpLatency { get; }

Property Value

int

Methods

CreateDirectOpusStream()

使用 Opus 编解码器创建一个新的音频流,不设置缓冲区。

AudioOutStream CreateDirectOpusStream()

Returns

AudioOutStream

一个新的 Opus 音频流。

CreateDirectPcmStream(AudioApplication, int?, int)

使用 PCM 编解码器创建一个新的音频流,不设置缓冲区。

AudioOutStream CreateDirectPcmStream(AudioApplication application, int? bitrate = null, int packetLoss = 30)

Parameters

application AudioApplication

音频应用程序的应用场景。

bitrate int?

音频流的比特率,单位为比特每秒;留空则使用在请求建立音频通道时由 KOOK 返回的指定的比特率。

packetLoss int

音频流的丢包率,单位为百分比,默认值为 30%。

Returns

AudioOutStream

一个新的 PCM 音频流。

Remarks

warning

如果为 bitrate 设置了比特率,但比特率过多地超过了由 KOOK 返回的指定的比特率,语音连接可能会被 KOOK 语音服务断开。

CreateOpusStream(int)

使用 Opus 编解码器创建一个新的音频流。

AudioOutStream CreateOpusStream(int bufferMillis = 1000)

Parameters

bufferMillis int

音频流的缓冲区大小,单位为毫秒。

Returns

AudioOutStream

一个新的 Opus 音频流。

CreatePcmStream(AudioApplication, int?, int, int)

使用 PCM 编解码器创建一个新的音频流。

AudioOutStream CreatePcmStream(AudioApplication application, int? bitrate = null, int bufferMillis = 1000, int packetLoss = 30)

Parameters

application AudioApplication

音频应用程序的应用场景。

bitrate int?

音频流的比特率,单位为比特每秒;留空则使用在请求建立音频通道时由 KOOK 返回的指定的比特率。

bufferMillis int

音频流的缓冲区大小,单位为毫秒。

packetLoss int

音频流的丢包率,单位为百分比,默认值为 30%。

Returns

AudioOutStream

一个新的 PCM 音频流。

Remarks

warning

如果为 bitrate 设置了比特率,但比特率过多地超过了由 KOOK 返回的指定的比特率,语音连接可能会被 KOOK 语音服务断开。

GetStreams()

获取该语音客户端所接收的所有音频输入流。

IReadOnlyDictionary<uint, AudioInStream> GetStreams()

Returns

IReadOnlyDictionary<uint, AudioInStream>

一个只读字典,其中键是 RTP 流的 SSRC 同步信源标识符,值是对应的音频输入流。

StopAsync()

停止该语音客户端发送音频。

Task StopAsync()

Returns

Task

一个停止操作的异步任务。

Events

Connected

当客户端成功连接到语音服务器时引发。

event Func<Task> Connected

Event Type

Func<Task>

Disconnected

当客户端从语音服务器断开连接时引发。

event Func<Exception, Task> Disconnected

Event Type

Func<Exception, Task>

Remarks

事件参数:

  1. Exception 参数是导致连接断开的异常。

StreamCreated

当客户端接收到一个新的语音输入流时引发。

event Func<uint, AudioInStream, Task> StreamCreated

Event Type

Func<uint, AudioInStream, Task>

Remarks

important

SSRC 为 RTP 实时传输协议中的同步信源标识符,RTP 会话中,每个媒体流应具有一个唯一的 SSRC 标识符。KOOK 服务端未通过网关下发用户与 RTP 流 SSRC 的映射关系,因此无法通过 SSRC 直接获取其关联的用户。Kook.Net 遵循 RTP 协议,以 SSRC 区分不同的信源,创建不同的 AudioInStream 实例,并引发此事件。 一般地,每个 SSRC 值都可以分别表示一个用户在一个语音频道内在一次连接与断开之间的音频流的唯一标识符, 同一用户切换语音频道或断开后重新连接到同一语音频道,KOOK 语音服务器都会为其分配新的 SSRC 标识符。


warning

Bot 用户可以通过 API 指定要使用的 SSRC 标识符,这可能会导致 SSRC 碰撞。KOOK 开发者文档推荐 Bot 用户使用 1111 为 SSRC 标识符,如果需要区分音频流是否由 Bot 创建,可以尝试判断 SSRC 标识符是否为 1111 作为参考。Kook.Net 不以固定的 1111 作为 SSRC 标识符,而是使用随机值,如果音频由 Kook.Net 所构建的 Bot 推送,此方法可能无法区分该音频流是否由 Bot 创建。


事件参数:
  1. int 参数是 RTP 流的 SSRC 同步信源标识符。
  2. AudioInStream 参数是所新创建的音频输入流。

StreamDestroyed

当音频输入流被销毁时引发。

event Func<uint, Task> StreamDestroyed

Event Type

Func<uint, Task>

Remarks

事件参数:

  1. int 参数是 RTP 流的 SSRC 同步信源标识符。

UdpLatencyUpdated

当语音 UDP 服务器的延迟已更新时引发。

event Func<int, int, Task> UdpLatencyUpdated

Event Type

Func<int, int, Task>

Remarks

事件参数:

  1. int 参数是更新前的延迟(毫秒)。
  2. int 参数是更新后的延迟(毫秒)。