# agora::rtc::IRtmpLocalUser类 参考 (/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-rtmp-local-user)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<a id="details"></a>

## 详细描述 [#详细描述]

[`IRtmpLocalUser`](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-rtmp-local-user) 类。定义了 CDN 推流用户的行为和状态。

每个 CDN 连接都有自己的用户。你可以通过 [getRtmpLocalUser](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-rtmp-connection#a87b6eedbf3b26da33c0f65135826349b) 获取本地用户对象的指针。

## 成员枚举类型说明 [#成员枚举类型说明]

<a id="a692c5ab59e1da5664535c3f4df4789b6"></a>

### VideoBitrateAdjustType [#videobitrateadjusttype]

<ApiSignature>

enum [agora::rtc::IRtmpLocalUser::VideoBitrateAdjustType](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-rtmp-local-user#a692c5ab59e1da5664535c3f4df4789b6)

</ApiSignature>

视频编码码率的调节类型。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="a692c5ab59e1da5664535c3f4df4789b6ada1eb20a5aca64378518617f22367623"></a>None

</td>
<td>0: 不调节。</td>
</tr>
<tr>
<td>

<a id="a692c5ab59e1da5664535c3f4df4789b6a44c4304a2772bab41a48e987a78e53a0"></a>Increasing

</td>
<td>1: 增加。每次使用该枚举时，视频编码码率会增加 50 kbps。</td>
</tr>
<tr>
<td>

<a id="a692c5ab59e1da5664535c3f4df4789b6a0c3a3b20ce3f00c3ca33153dd351f84b"></a>Decreasing

</td>
<td>2: 减少。每次使用该枚举时，视频编码码率会减少 100 kbps。</td>
</tr>
</tbody>
</DocsTable>

## 构造及析构函数说明 [#构造及析构函数说明]

<a id="a81b75038cb35ba1c8d9e2c6b4b3777c7"></a>

### ~IRtmpLocalUser() [#irtmplocaluser]

<ApiSignature labels="inline virtual">

virtual agora::rtc::IRtmpLocalUser::~IRtmpLocalUser()

</ApiSignature>

## 成员函数说明 [#成员函数说明]

<a id="a4821c3e6479de60dc31bad663cd23139"></a>

### setAudioStreamConfiguration() [#setaudiostreamconfiguration]

<ApiSignature labels="pure virtual">

virtual int agora::rtc::IRtmpLocalUser::setAudioStreamConfiguration(const [RtmpStreamingAudioConfiguration](/zh-CN/api-reference/rtc-server-sdk/cpp/structagora-1-1rtc-1-1-rtmp-streaming-audio-configuration) & *config*)

</ApiSignature>

设置主播端直接向 CDN 推流时的音频编码属性。

<ParameterList title="参数">
<Parameter name="config">

CDN 推流的音频编码属性，详见 [RtmpStreamingAudioConfiguration](/zh-CN/api-reference/rtc-server-sdk/cpp/structagora-1-1rtc-1-1-rtmp-streaming-audio-configuration) 。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a8d48a5a98fb165747beebe17ee4398c3"></a>

### setVideoStreamConfiguration() [#setvideostreamconfiguration]

<ApiSignature labels="pure virtual">

virtual int agora::rtc::IRtmpLocalUser::setVideoStreamConfiguration(const [RtmpStreamingVideoConfiguration](/zh-CN/api-reference/rtc-server-sdk/cpp/structagora-1-1rtc-1-1-rtmp-streaming-video-configuration) & *config*)

</ApiSignature>

设置主播端直接向 CDN 推流时的视频编码属性。

<ParameterList title="参数">
<Parameter name="config">

CDN 推流的视频编码属性，详见 [RtmpStreamingVideoConfiguration](/zh-CN/api-reference/rtc-server-sdk/cpp/structagora-1-1rtc-1-1-rtmp-streaming-video-configuration) 。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-1"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a3038768b1754345b60148d76899b421f"></a>

### adjustRecordingSignalVolume() [#adjustrecordingsignalvolume]

<ApiSignature labels="pure virtual">

virtual int agora::rtc::IRtmpLocalUser::adjustRecordingSignalVolume(int *volume*)

</ApiSignature>

调节主播端直接向 CDN 推流时的音频采集信号音量。

<ParameterList title="参数">
<Parameter name="volume">

音量，取值范围为 [0,100]。其中：

- 0: 静音。
- 100：（默认）原始音量。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-2"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="aeeb9d07adb39f08b4edb6215308d7c67"></a>

### getRecordingSignalVolume() [#getrecordingsignalvolume]

<ApiSignature labels="pure virtual">

virtual int agora::rtc::IRtmpLocalUser::getRecordingSignalVolume(int32_t * *volume*)

</ApiSignature>

获取主播端直接向 CDN 推流时的音频采集信号音量。

<ParameterList title="参数">
<Parameter name="volume">

音量指针。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-3"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a51dc863b4b0d7083ff2cf4efe7065946"></a>

### setAudioEnabled() [#setaudioenabled]

<ApiSignature labels="pure virtual">

virtual int agora::rtc::IRtmpLocalUser::setAudioEnabled(bool *enabled*)

</ApiSignature>

在 CDN 推流中开启或关闭本地音频。

你需要在开始直接向 CDN 推流前调用该方法。

<ParameterList title="参数">
<Parameter name="enabled">

是否开启本地音频：

- true：开启
- false：关闭

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-4"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a3fbf8989cae4f2001ea00603c2e61014"></a>

### adjustVideoBitrate() [#adjustvideobitrate]

<ApiSignature labels="pure virtual">

virtual void agora::rtc::IRtmpLocalUser::adjustVideoBitrate([VideoBitrateAdjustType](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-rtmp-local-user#a692c5ab59e1da5664535c3f4df4789b6) *type*)

</ApiSignature>

调节主播端直接向 CDN 推流时的视频编码码率。

如果多次调用该方法，调节效果会叠加。以当前视频编码码率为 200 kbps 为例：

1. 调用该方法并设置 `type` 为 `Increasing`，则视频编码码率会增加 50 kbps，当前视频编码码率变为 250 kbps。
2. 再次调用该方法并设置 `type` 为 `Decreasing`，则视频编码码率会减少 100 kbps，当前视频编码码率变为 150 kbps。

<ParameterList title="参数">
<Parameter name="type">

视频编码码率的调节类型，详见 [VideoBitrateAdjustType](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-rtmp-local-user#a692c5ab59e1da5664535c3f4df4789b6) 。

</Parameter>
</ParameterList>

<a id="a49b3bf6f3790d6a3ee13356d4a3ed411"></a>

### setVideoEnabled() [#setvideoenabled]

<ApiSignature labels="pure virtual">

virtual int agora::rtc::IRtmpLocalUser::setVideoEnabled(bool *enabled*)

</ApiSignature>

在 CDN 推流中开启或关闭本地视频。

你需要在开始直接向 CDN 推流前调用该方法。

<ParameterList title="参数">
<Parameter name="enabled">

是否开启本地视频：

- true：开启
- false：关闭

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-5"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a0be9b40060601e90bfd3c074fdf386f1"></a>

### publishAudio() [#publishaudio]

<ApiSignature labels="pure virtual">

virtual int agora::rtc::IRtmpLocalUser::publishAudio([agora_refptr](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1agora-refptr)&lt; [rtc::ILocalAudioTrack](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-local-audio-track) &gt; *audioTrack*)

</ApiSignature>

向 CDN 推送本地音频流。

<ParameterList title="参数">
<Parameter name="audioTrack">

本地音频轨道，详见 [ILocalAudioTrack](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-local-audio-track) 。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-6"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a96a5f14455e3d13ebf1bf67db4854116"></a>

### unpublishAudio() [#unpublishaudio]

<ApiSignature labels="pure virtual">

virtual int agora::rtc::IRtmpLocalUser::unpublishAudio([agora_refptr](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1agora-refptr)&lt; [rtc::ILocalAudioTrack](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-local-audio-track) &gt; *audioTrack*)

</ApiSignature>

停止向 CDN 推送本地音频流。

<ParameterList title="参数">
<Parameter name="audioTrack">

本地音频轨道，详见 [ILocalAudioTrack](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-local-audio-track) 。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-7"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a155b7e268e8b5ba9922f066b84a8365e"></a>

### publishVideo() [#publishvideo]

<ApiSignature labels="pure virtual">

virtual int agora::rtc::IRtmpLocalUser::publishVideo([agora_refptr](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1agora-refptr)&lt; [rtc::ILocalVideoTrack](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-local-video-track) &gt; *videoTrack*)

</ApiSignature>

向 CDN 推送本地视频流。

<ParameterList title="参数">
<Parameter name="videoTrack">

本地视频轨道，详见 [ILocalVideoTrack](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-local-video-track) 。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-8"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="ae87c22229919fcc96905129b67f56ab9"></a>

### unpublishVideo() [#unpublishvideo]

<ApiSignature labels="pure virtual">

virtual int agora::rtc::IRtmpLocalUser::unpublishVideo([agora_refptr](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1agora-refptr)&lt; [rtc::ILocalVideoTrack](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-local-video-track) &gt; *videoTrack*)

</ApiSignature>

停止向 CDN 推送本地视频流。

<ParameterList title="参数">
<Parameter name="videoTrack">

本地视频轨道，详见 [ILocalVideoTrack](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-local-video-track) 。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-9"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="ab945495e13c65ab654ea0e5adcf8a7f0"></a>

### registerRtmpUserObserver() [#registerrtmpuserobserver]

<ApiSignature labels="pure virtual">

virtual int agora::rtc::IRtmpLocalUser::registerRtmpUserObserver([IRtmpLocalUserObserver](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-rtmp-local-user-observer) * *observer*, void(*)([IRtmpLocalUserObserver](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-rtmp-local-user-observer) *) *safeDeleter* = `NULL`)

</ApiSignature>

注册 CDN 推流用户观测器。

成功注册后，你会收到 [`IRtmpLocalUserObserver`](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-rtmp-local-user-observer) 类中的相关回调。

<ParameterList title="参数">
<Parameter name="observer">

[IRtmpLocalUserObserver](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-rtmp-local-user-observer) 对象的指针。 你需要在该方法中实现 [`IRtmpLocalUserObserver`](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-rtmp-local-user-observer) 类。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-10"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a15f7fa80b21c4acf8b96448d4668df2c"></a>

### unregisteRtmpUserObserver() [#unregistertmpuserobserver]

<ApiSignature labels="pure virtual">

virtual int agora::rtc::IRtmpLocalUser::unregisteRtmpUserObserver([IRtmpLocalUserObserver](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-rtmp-local-user-observer) * *observer*)

</ApiSignature>

注销 CDN 推流用户观测器。

成功注销后，你将不再收到 [`IRtmpLocalUserObserver`](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-rtmp-local-user-observer) 类中的相关回调。

<ParameterList title="参数">
<Parameter name="observer">

[IRtmpLocalUserObserver](/zh-CN/api-reference/rtc-server-sdk/cpp/classagora-1-1rtc-1-1-i-rtmp-local-user-observer) 对象的指针。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-11"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a17f4ed230d4df237ed344849f69ad0db"></a>

### registerAudioFrameObserver() [#registeraudioframeobserver]

<ApiSignature labels="pure virtual">

virtual int agora::rtc::IRtmpLocalUser::registerAudioFrameObserver(media::base::IAudioFrameObserver * *observer*)

</ApiSignature>

注册音频观测器。

<ParameterList title="参数">
<Parameter name="observer">

IAudioFrameObserver 对象的指针。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-12"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="ac972e8d3b94e7e5f1b9b9d89f22c4802"></a>

### unregisterAudioFrameObserver() [#unregisteraudioframeobserver]

<ApiSignature labels="pure virtual">

virtual void agora::rtc::IRtmpLocalUser::unregisterAudioFrameObserver(media::base::IAudioFrameObserver * *observer*)

</ApiSignature>

注销音频观测器。

<ParameterList title="参数">
<Parameter name="observer">

IAudioFrameObserver 对象的指针。

</Parameter>
</ParameterList>

<a id="a4491e15cf5655d32142135bba29d37e4"></a>

### registerVideoFrameObserver() [#registervideoframeobserver]

<ApiSignature labels="pure virtual">

virtual int agora::rtc::IRtmpLocalUser::registerVideoFrameObserver(media::base::IVideoFrameObserver * *observer*)

</ApiSignature>

注册视频观测器。

<ParameterList title="参数">
<Parameter name="observer">

IVideoFrameObserver 对象的指针。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-13"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="ab4d2975a3a5e58650521e50df2302783"></a>

### unregisterVideoFrameObserver() [#unregistervideoframeobserver]

<ApiSignature labels="pure virtual">

virtual void agora::rtc::IRtmpLocalUser::unregisterVideoFrameObserver(media::base::IVideoFrameObserver * *observer*)

</ApiSignature>

注销视频观测器。

<ParameterList title="参数">
<Parameter name="observer">

IVideoFrameObserver 对象的指针。

</Parameter>
</ParameterList>
