LocalUser 类
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 | 用户角色。详见 |
返回值
- 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))
}
参数
| 参数 | 描述 |
|---|---|
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 类并根据需求注册回调。
参数
| 参数 | 描述 |
|---|---|
observer | AudioFrameObserver 类。 |
返回值
- 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)
}
参数
| 参数 | 描述 |
|---|---|
observer | LocalUserObserver 类。 |
返回值
- 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 对象。
参数
| 参数 | 描述 |
|---|---|
observer | VideoFrameObserver 类。 |
返回值
- 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: 方法调用失败。