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: 方法调用失败。