LocalUser 类

  • Go

更新时间不可用

LocalUser 类。定义了本地用户的行为和状态。每个 RTC 连接都有自己的用户。你可以通过 GetLocalUser 获取本地用户。每个用户有两种角色:主播(能发送和接收音视频流)和观众(只能接收音视频流)。

SetUserRole

Go
func (localUser *LocalUser) SetUserRole(role int) int {
    if localUser.cLocalUser == nil {
        return -1
    }
    C.agora_local_user_set_user_role(localUser.cLocalUser, C.int(role))
    return 0
}
设置用户角色。你可以在用户连接频道前或连接频道后调用该方法。

注意

如果 Connect 中的 token 与 role 参数设置的角色不同,连接会失败。

参数

参数描述
role用户角色。详见 ClientRole。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

SetAudioEncoderConfiguration

Go
func (localUser *LocalUser) SetAudioEncoderConfiguration(config *AudioEncoderConfiguration) int {
    if localUser.cLocalUser == nil {
        return -1
    }
    cConfig := C.struct__audio_encoder_config{}
    cConfig.audio_profile = C.int(AudioProfileDefault)
    if config != nil {
        cConfig.audio_profile = C.int(config.AudioProfile)
    }
    return int(C.agora_local_user_set_audio_encoder_config(localUser.cLocalUser, &cConfig))
}
设置音频编码。SDK 会将配置应用于全部发送的音频轨道。

参数

参数描述
config音频编码配置。详见 AudioEncoderConfiguration。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

PublishAudio

Go
func (localUser *LocalUser) PublishAudio(track *LocalAudioTrack) int {
    if localUser.cLocalUser == nil {
        return -1
    }
    return int(C.agora_local_user_publish_audio(localUser.cLocalUser, track.cTrack))
}
将本地音频轨道发送到频道。默认情况下,所有发布的音频轨道都会进行混音。

参数

参数描述
track需要发布的本地音频轨道。详见 LocalAudioTrack。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。
    • -5: 如果本地用户的角色不是主播,会返回此错误。

UnpublishAudio

Go
func (localUser *LocalUser) UnpublishAudio(track *LocalAudioTrack) int {
    if localUser.cLocalUser == nil {
        return -1
    }
    return int(C.agora_local_user_unpublish_audio(localUser.cLocalUser, track.cTrack))
}
停止将本地音频轨道发送到频道。

参数

参数描述
track需要停止发布的本地音频轨道。详见 LocalAudioTrack。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

PublishVideo

Go
func (localUser *LocalUser) PublishVideo(track *LocalVideoTrack) int {
    if localUser.cLocalUser == nil {
        return -1
    }
    return int(C.agora_local_user_publish_video(localUser.cLocalUser, track.cTrack))
}
将本地视频轨道发送到频道。

参数

参数描述
track需要发布的本地视频轨道。详见 LocalVideoTrack。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

UnpublishVideo

Go
func (localUser *LocalUser) UnpublishVideo(track *LocalVideoTrack) int {
    if localUser.cLocalUser == nil {
        return -1
    }
    return int(C.agora_local_user_unpublish_video(localUser.cLocalUser, track.cTrack))
}
停止将本地视频轨道发送到频道。

参数

参数描述
track需要停止发布的本地视频轨道。详见 LocalVideoTrack。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

SubscribeAudio

Go
func (localUser *LocalUser) SubscribeAudio(uid string) int {
    if localUser.cLocalUser == nil {
        return -1
    }
    cUid := C.CString(uid)
    defer C.free(unsafe.Pointer(cUid))
    return int(C.agora_local_user_subscribe_audio(localUser.cLocalUser, cUid))
}
订阅频道中特定的远端用户发送的音频流。

参数

参数描述
uid远端用户的用户 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。
    • -2: 如果用户不存在或 uid 无效时会返回该错误。

SubscribeAllAudio

Go
func (localUser *LocalUser) SubscribeAllAudio() int {
    if localUser.cLocalUser == nil {
        return -1
    }
    return int(C.agora_local_user_subscribe_all_audio(localUser.cLocalUser))
}
订阅频道中全部远端用户发送的音频流。该方法会自动订阅频道中后续加入的用户发送的音频流。

返回值

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

UnsubscribeAudio

Go
func (localUser *LocalUser) UnsubscribeAudio(uid string) int {
    if localUser.cLocalUser == nil {
        return -1
    }
    cUid := C.CString(uid)
    defer C.free(unsafe.Pointer(cUid))
    return int(C.agora_local_user_unsubscribe_audio(localUser.cLocalUser, cUid))
}
停止订阅频道中特定的远端用户发送的音频流。

参数

参数描述
uid远端用户的用户 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。
    • -2: 如果用户不存在或 uid 无效时会返回该错误。

UnsubscribeAllAudio

Go
func (localUser *LocalUser) UnsubscribeAllAudio() int {
    if localUser.cLocalUser == nil {
        return -1
    }
    return int(C.agora_local_user_unsubscribe_all_audio(localUser.cLocalUser))
}
停止订阅频道中全部远端用户发送的音频流。该方法会自动取消订阅频道中后续加入的用户发送的音频流。你必须调用 subscribe_audio 或 subscribe_all_audio 才能恢复订阅音频。

返回值

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

SetPlaybackAudioFrameBeforeMixingParameters

Go
func (localUser *LocalUser) SetPlaybackAudioFrameBeforeMixingParameters(channels int, sampleRate int) int {
    if localUser.cLocalUser == nil {
        return -1
    }
    return int(C.agora_local_user_set_playback_audio_frame_before_mixing_parameters(localUser.cLocalUser, C.uint(channels), C.uint(sampleRate)))
}
设置播放的音频格式。该方法设置 OnPlaybackAudioFrameBeforeMixing 回调数据的格式。

参数

参数描述
channels音频数据声道数,可设置为 1(单声道) 或 2(双声道)。
sampleRate音频数据采样率,可设置为 8000、 16000、32000、 44100 或 48000。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

RegisterAudioFrameObserver

Go
func (localUser *LocalUser) RegisterAudioFrameObserver(observer *AudioFrameObserver) int {
    return localUser.connection.registerAudioFrameObserver(observer)
}
注册音频帧观测器。你必须实现 AudioFrameObserver 类并根据需求注册回调。

参数

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

返回值

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

UnregisterAudioFrameObserver

Go
func (localUser *LocalUser) UnregisterAudioFrameObserver() int {
    return localUser.connection.unregisterAudioFrameObserver()
}
销毁 AudioFrameObserver 对象。

返回值

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

SubscribeVideo

Go
func (localUser *LocalUser) SubscribeVideo(uid string, options *VideoSubscriptionOptions) int {
    if localUser.cLocalUser == nil {
        return -1
    }
    cUid := C.CString(uid)
    defer C.free(unsafe.Pointer(cUid))
    cOptions := C.video_subscription_options{}
    po := &cOptions
    if options != nil {
        cOptions._type = C.int(options.StreamType)
        cOptions.encoded_frame_only = C.int(0)
        if options.EncodedFrameOnly {
            cOptions.encoded_frame_only = C.int(1)
        }
    } else {
        po = nil
    }
    return int(C.agora_local_user_subscribe_video(localUser.cLocalUser, cUid, po))
}
订阅频道中指定远端用户发送的视频流。

参数

参数描述
uid远端用户的用户 ID。
options订阅选项。详见 VideoSubscriptionOptions
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。
    • -2:如果用户不存在或 uid 无效时会返回该错误。

SubscribeAllVideo

Go
func (localUser *LocalUser) SubscribeAllVideo(options *VideoSubscriptionOptions) int {
    if localUser.cLocalUser == nil {
        return -1
    }
    cOptions := C.video_subscription_options{}
    po := &cOptions
    if options != nil {
        cOptions._type = C.int(options.StreamType)
        cOptions.encoded_frame_only = C.int(0)
        if options.EncodedFrameOnly {
            cOptions.encoded_frame_only = C.int(1)
        }
    } else {
        po = nil
    }
    return int(C.agora_local_user_subscribe_all_video(localUser.cLocalUser, po))
}
订阅频道中全部远端用户发送的视频流。该方法会自动订阅频道中后续加入的用户发送的视频流。

参数

参数描述
options订阅选项。详见 VideoSubscriptionOptions
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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

UnsubscribeVideo

Go
func (localUser *LocalUser) UnsubscribeVideo(uid string) int {
    if localUser.cLocalUser == nil {
        return -1
    }
    cUid := C.CString(uid)
    defer C.free(unsafe.Pointer(cUid))
    return int(C.agora_local_user_unsubscribe_video(localUser.cLocalUser, cUid))
}
停止订阅频道中指定远端用户发送的视频流。

参数

参数描述
uid远端用户的用户 ID。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0: 方法调用成功。
  • < 0: 方法调用失败。
    • -2:如果用户不存在或 uid 无效时会返回该错误。

UnsubscribeAllVideo

Go
func (localUser *LocalUser) UnsubscribeAllVideo() int {
    if localUser.cLocalUser == nil {
        return -1
    }
    return int(C.agora_local_user_unsubscribe_all_video(localUser.cLocalUser))
}
停止订阅频道中全部远端用户发送的视频流。该方法会自动取消订阅频道中后续加入的用户发送的视频流。你必须调用 SubscribeVideo 或 SubscribeAllVideo 才能恢复订阅。

返回值

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

RegisterLocalUserObserver

Go
func (localUser *LocalUser) RegisterLocalUserObserver(observer *LocalUserObserver) int {
    return localUser.connection.registerLocalUserObserver(observer)
}
注册本地用户观测器。

参数

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

返回值

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

UnregisterLocalUserObserver

Go
func (localUser *LocalUser) UnregisterLocalUserObserver() int {
    return localUser.connection.unregisterLocalUserObserver()
}
销毁本地用户观测器。

返回值

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

RegisterVideoFrameObserver

Go
func (localUser *LocalUser) RegisterVideoFrameObserver(observer *VideoFrameObserver) int {
    return localUser.connection.registerVideoFrameObserver(observer)
}
注册 VideoFrameObserver 对象。

参数

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

返回值

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

UnregisterVideoFrameObserver

Go
func (localUser *LocalUser) UnregisterVideoFrameObserver() int {
    return localUser.connection.unregisterVideoFrameObserver()
}
销毁 VideoFrameObserver 对象。

返回值

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

GetRtcConnection

Go
func (localUser *LocalUser) GetRtcConnection() *RtcConnection {
    return localUser.connection
}
获取 RtcConnection 对象。

返回值

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

SendAudioMetadata

Go
func (localUser *LocalUser) SendAudioMetaData(metaData []byte) int {
	if localUser.cLocalUser == nil {
		return -1
	}

发送音频 Metadata 数据。

成功调用该方法后,远端会触发 OnAudioMetadataReceived 回调,远端用户可以在该回调中获取接收到的音频 Metadata 数据。

参数

参数描述
metaData音频 Metadata 数据。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

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