LocalAudioTrack 类

  • Go

更新时间不可用

LocalAudioTrack 类是本地音频轨道的基类。

NewCustomAudioTrackPcm

Go
func NewCustomAudioTrackPcm(pcmSender *AudioPcmDataSender) *LocalAudioTrack {
    cTrack := C.agora_service_create_custom_audio_track_pcm(agoraService.service, pcmSender.cSender)
    if cTrack == nil {
        return nil
    }
    return &LocalAudioTrack{
        cTrack: cTrack,
    }
}
创建一个自定义 PCM 数据轨道。

参数

参数描述
pcmSenderAudioPcmDataSender 对象。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • LocalAudioTrack 对象:方法调用成功。
  • nil: 方法调用失败。

NewCustomAudioTrackEncoded

Go
func NewCustomAudioTrackEncoded(encodedAudioSender *AudioEncodedFrameSender, mixMode AudioTrackMixingState) *LocalAudioTrack {
    cTrack := C.agora_service_create_custom_audio_track_encoded(agoraService.service, encodedAudioSender.cSender, C.int(mixMode))
    if cTrack == nil {
        return nil
    }
    return &LocalAudioTrack{
        cTrack: cTrack,
    }
}
创建一个自定义编码数据轨道。

参数

参数描述
encodedAudioSenderAudioEncodedFrameSender 对象。
mixMode音频轨道混音模式,详见 AudioTrackMixingState。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • LocalAudioTrack 对象:方法调用成功。
  • nil: 方法调用失败。

SetEnabled

Go
func (track *LocalAudioTrack) SetEnabled(enable bool)
开启或关闭本地音频轨道。本地音频轨道开启之后,SDK 可以采集、处理和编码本地音频。

参数

参数描述
enable

是否开启音频轨道:

  • true: 开启音频轨道,
  • false: 关闭音频轨道。
表格内容超出当前宽度,可横向滚动查看更多列。

AdjustPublishVolume

Go
func (track *LocalAudioTrack) AdjustPublishVolume(volume int) int
调整音频发布音量。

参数

参数描述
volume音频发布音量。取值范围 [0,100],0 表示静音,100 表示原始音量。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

SetMaxBufferedAudioFrameNumber

Go
func (track *LocalAudioTrack) SetMaxBufferedAudioFrameNumber(frameNum int) {
    if track.cTrack == nil {
        return
    }
    C.agora_local_audio_track_set_max_bufferd_frame_number(track.cTrack, C.int(frameNum))
}
设置音频发送缓冲区的最大容量。

在 AI 交互等应用场景中,发送端发送音频帧的频率可能不均匀,例如有时每 20 ms 发送 1 帧数据、有时每 20 ms 发送 3 帧数据。如果 SDK 按照实际的发送频率去发送给声网服务器,则接收端可能会有卡顿、丢帧等不良体验。为优化音频传输性能,SDK 设置了音频发送缓冲区,不论发送端实际发送音频帧的频率是多少,SDK 都会将数据存放在音频发送缓冲区。待音频发送缓冲区中的数据达到允许发送的最小时长后,SDK 再开始按照 10 ms 每帧的频率发送数据给接收端。

SDK 默认的音频发送缓冲区最大容量是 6000,表示支持存放最多 6000 帧数据,即 60 s 的数据。如果你需要更大的缓冲区容量,你可以调用该方法进行调整。如果你还需要设置音频发送缓冲区允许发送的最小数据时长,调用 SetSendDelayMs 方法。

注意

该方法需要在 PublishAudio 方法之前调用。

参数

参数描述
frameNum缓冲区存放的最大音频帧数。例如,填入 6000 则表示 6000 帧音频数据。
表格内容超出当前宽度,可横向滚动查看更多列。

ClearSenderBuffer

Go
func (track *LocalAudioTrack) ClearSenderBuffer() int {
    if track.cTrack == nil {
        return -1
    }
    return int(C.agora_local_audio_track_clear_sender_buffer(track.cTrack))
}
清除当前音频发送缓冲区。

如果你不再需要当前音频发送缓冲区中的数据,可以调用该方法清除缓冲区。例如,用户给 AI 提了个问题,AI 正在通过 SDK 传输音频给用户解答,此时 SDK 的音频发送缓冲区中不断有数据进出。当用户打断 AI 的回复并提出另一个问题时,你可以调用该方法,让 SDK 清除当前未发送出去的缓冲数据,以便快速缓冲 AI 对新话题的回答。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

SetSendDelayMs

Go
func (track *LocalAudioTrack) SetSendDelayMs(delayMs int) int {
    if track.cTrack == nil {
        return -1
    }
    C.agora_local_audio_track_set_send_delay_ms(track.cTrack, C.int(delayMs))
    return 0
}
设置音频发送缓冲区允许发送的最小数据时长。

SDK 默认允许发送的最小数据时长为 160 ms,即 SDK 会等音频发送缓冲区存满 160 ms 的数据后将数据发送给接收端,这会带来如下影响:

  • 如果发送端一次发送的数据大于或等于 160 ms,例如 800 ms,则 SDK 会立即按照每帧 10 ms 的频率发送数据给接收端。
  • 如果发送端一次发送的数据小于 160 ms,例如 100 ms,则 SDK 会等缓冲区数据达到 160 ms 后,再按照 10 ms 每帧的频率发送数据给接收端。这就会造成至多 60 ms 的延迟。

你可以根据实际业务需求,调用该方法调整缓冲区允许发送的最小数据时长。

参数

参数描述
delayMs缓冲区允许发送的最小数据时长(ms)。该参数需要设置为 10 的倍数,取值范围为大于 0 且小于 SetMaxBufferedAudioFrameNumber 方法中 frameNum 参数值的 10 倍。
表格内容超出当前宽度,可横向滚动查看更多列。

Release

Go
func (track *LocalAudioTrack) Release()
释放本地音频轨道资源。