# 旁路推流 (/zh-CN/api-reference/rtc/csharp-windows/cloud-media-relay/media-push)

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

<a id="toc_media_push"></a>

<a id="api_irtcengine_startrtmpstreamwithouttranscoding"></a>

<a id="ariaid-title2"></a>

## StartRtmpStreamWithoutTranscoding [#startrtmpstreamwithouttranscoding]

开始非转码推流。

<a id="api_irtcengine_startrtmpstreamwithouttranscoding__prototype"></a>

```csharp
public abstract int StartRtmpStreamWithoutTranscoding(string url);
```

<a id="api_irtcengine_startrtmpstreamwithouttranscoding__detailed_desc"></a>

### 详情 [#详情]

声网推荐你使用更加完善的服务端推流功能，详见[实现服务端旁路推流](/zh-CN/realtime-media/media-push)。

调用该方法，你可以向指定的旁路推流地址推送直播音视频流。该方法每次只能向一个地址推送媒体流，如果你需要向多个地址转码推流，则需多次调用该方法。

调用该方法后，SDK 会在本地触发 [OnRtmpStreamingStateChanged](/zh-CN/api-reference/rtc/csharp-windows/cloud-media-relay/media-push#callback_irtcengineeventhandler_onrtmpstreamingstatechanged) 回调，报告推流的状态。

:::caution
注意：

- 请在加入频道后调用该方法。
- 只有直播场景下的主播才能调用该方法。
- 调用该方法推流失败后，如果你想要重新推流，那么请你务必先调用 [StopRtmpStream](/zh-CN/api-reference/rtc/csharp-windows/cloud-media-relay/media-push#api_irtcengine_stoprtmpstream)，再调用该方法重推，否则 SDK 会返回与上次推流失败时一样的错误码。
:::

<a id="api_irtcengine_startrtmpstreamwithouttranscoding__parameters"></a>

### 参数 [#参数]

<ParameterList>
<a id="url"></a>
<Parameter name="url">

旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。

</Parameter>
</ParameterList>

<a id="api_irtcengine_startrtmpstreamwithouttranscoding__return_values"></a>

### 返回值 [#返回值]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

  - -2：URL 或转码属性参数错误，请检查你的 URL 或参数设置。
  - -7：调用该方法前，未初始化 SDK。
  - -19：该旁路推流 URL 已在使用中，请使用其他旁路推流 URL。

### 所属接口类 [#所属接口类]

- [IRtcEngine](/zh-CN/api-reference/rtc/csharp-windows/rtc-interface-class#class_irtcengine)

<a id="api_irtcengineex_startrtmpstreamwithouttranscodingex"></a>

<a id="ariaid-title3"></a>

## StartRtmpStreamWithoutTranscodingEx [#startrtmpstreamwithouttranscodingex]

开始非转码推流。

<a id="api_irtcengineex_startrtmpstreamwithouttranscodingex__prototype"></a>

```csharp
public abstract int StartRtmpStreamWithoutTranscodingEx(string url, RtcConnection connection);
```

<a id="api_irtcengineex_startrtmpstreamwithouttranscodingex__detailed_desc"></a>

### 详情 [#详情-1]

声网推荐你使用更加完善的服务端推流功能，详见[实现服务端旁路推流](/zh-CN/realtime-media/media-push)。

调用该方法，你可以向指定的旁路推流地址推送直播音视频流。该方法每次只能向一个地址推送媒体流，如果你需要向多个地址转码推流，则需多次调用该方法。

调用该方法后，SDK 会在本地触发 [OnRtmpStreamingStateChanged](/zh-CN/api-reference/rtc/csharp-windows/cloud-media-relay/media-push#callback_irtcengineeventhandler_onrtmpstreamingstatechanged) 回调，报告推流的状态。

:::caution
注意：

- 请在加入频道后调用该方法。
- 只有直播场景下的主播才能调用该方法。
- 调用该方法推流失败后，如果你想要重新推流，那么请你务必先调用 [StopRtmpStream](/zh-CN/api-reference/rtc/csharp-windows/cloud-media-relay/media-push#api_irtcengine_stoprtmpstream)，再调用该方法重推，否则 SDK 会返回与上次推流失败时一样的错误码。
:::

<a id="api_irtcengineex_startrtmpstreamwithouttranscodingex__parameters"></a>

### 参数 [#参数-1]

<ParameterList>
<a id="url-1"></a>
<Parameter name="url">

旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。

</Parameter>
<a id="connection"></a>
<Parameter name="connection">

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/csharp-windows/class-rtcconnection)。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_startrtmpstreamwithouttranscodingex__return_values"></a>

### 返回值 [#返回值-1]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

  - -2：URL 或转码属性参数错误，请检查你的 URL 或参数设置。
  - -7：调用该方法前，未初始化 SDK。
  - -19：该旁路推流 URL 已在使用中，请使用其他旁路推流 URL。

### 所属接口类 [#所属接口类-1]

- [IRtcEngineEx](/zh-CN/api-reference/rtc/csharp-windows/rtc-interface-class#class_irtcengineex)

<a id="api_irtcengine_startrtmpstreamwithtranscoding"></a>

<a id="ariaid-title4"></a>

## StartRtmpStreamWithTranscoding [#startrtmpstreamwithtranscoding]

开始旁路推流并设置转码属性。

<a id="api_irtcengine_startrtmpstreamwithtranscoding__prototype"></a>

```csharp
public abstract int StartRtmpStreamWithTranscoding(string url, LiveTranscoding transcoding);
```

<a id="api_irtcengine_startrtmpstreamwithtranscoding__detailed_desc"></a>

### 详情 [#详情-2]

声网推荐你使用更加完善的服务端推流功能，详见[实现服务端旁路推流](/zh-CN/realtime-media/media-push)。

调用该方法，你可以向指定的旁路推流地址推送直播音视频流并设置转码属性。该方法每次只能向一个地址推送媒体流，如果你需要向多个地址转码推流，则需多次调用该方法。

一次推流代表一个推流任务，最大并发任务数默认为 200，表示你在一个声网项目下最多同时运行 200 个推流任务，如需更高配额，请[联系技术支持](https://ticket.shengwang.cn/)。

调用该方法后，SDK 会在本地触发 [OnRtmpStreamingStateChanged](/zh-CN/api-reference/rtc/csharp-windows/cloud-media-relay/media-push#callback_irtcengineeventhandler_onrtmpstreamingstatechanged) 回调，报告推流的状态。

<a id="api_irtcengine_startrtmpstreamwithtranscoding__note"></a>

:::caution
注意：

- 请在加入频道后调用该方法。
- 只有直播场景下的主播才能调用该方法。
- 调用该方法推流失败后，如果你想要重新推流，那么请你务必先调用 [StopRtmpStream](/zh-CN/api-reference/rtc/csharp-windows/cloud-media-relay/media-push#api_irtcengine_stoprtmpstream)，再调用该方法重推，否则 SDK 会返回与上次推流失败时一样的错误码。
:::

<a id="api_irtcengine_startrtmpstreamwithtranscoding__parameters"></a>

### 参数 [#参数-2]

<ParameterList>
<a id="url-2"></a>
<Parameter name="url">

旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。

</Parameter>
<a id="transcoding"></a>
<Parameter name="transcoding">

旁路推流的转码属性，详见 [LiveTranscoding](/zh-CN/api-reference/rtc/csharp-windows/class-livetranscoding)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_startrtmpstreamwithtranscoding__return_values"></a>

### 返回值 [#返回值-2]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

  - -2：URL 或转码属性参数错误，请检查你的 URL 或参数设置。
  - -7：调用该方法前，未初始化 SDK。
  - -19：该旁路推流 URL 已在使用中，请使用其他旁路推流 URL。

### 所属接口类 [#所属接口类-2]

- [IRtcEngine](/zh-CN/api-reference/rtc/csharp-windows/rtc-interface-class#class_irtcengine)

<a id="api_irtcengineex_startrtmpstreamwithtranscodingex"></a>

<a id="ariaid-title5"></a>

## StartRtmpStreamWithTranscodingEx [#startrtmpstreamwithtranscodingex]

开始旁路推流并设置转码属性。

<a id="api_irtcengineex_startrtmpstreamwithtranscodingex__prototype"></a>

```csharp
public abstract int StartRtmpStreamWithTranscodingEx(string url, LiveTranscoding transcoding, RtcConnection connection);
```

<a id="api_irtcengineex_startrtmpstreamwithtranscodingex__detailed_desc"></a>

### 详情 [#详情-3]

声网推荐你使用更加完善的服务端推流功能，详见[实现服务端旁路推流](/zh-CN/realtime-media/media-push)。

调用该方法，你可以向指定的旁路推流地址推送直播音视频流并设置转码属性。该方法每次只能向一个地址推送媒体流，如果你需要向多个地址转码推流，则需多次调用该方法。

调用该方法后，SDK 会在本地触发 [OnRtmpStreamingStateChanged](/zh-CN/api-reference/rtc/csharp-windows/cloud-media-relay/media-push#callback_irtcengineeventhandler_onrtmpstreamingstatechanged) 回调，报告推流的状态。

<a id="api_irtcengineex_startrtmpstreamwithtranscodingex__note"></a>

:::caution
注意：

- 请确保已开通旁路推流服务。
- 请在加入频道后调用该方法。
- 只有直播场景下的主播才能调用该方法。
- 调用该方法推流失败后，如果你想要重新推流，那么请你务必先调用 [StopRtmpStreamEx](/zh-CN/api-reference/rtc/csharp-windows/cloud-media-relay/media-push#api_irtcengineex_stoprtmpstreamex)，再调用该方法重推，否则 SDK 会返回与上次推流失败时一样的错误码。
:::

<a id="api_irtcengineex_startrtmpstreamwithtranscodingex__parameters"></a>

### 参数 [#参数-3]

<ParameterList>
<a id="url-3"></a>
<Parameter name="url">

旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。

</Parameter>
<a id="transcoding-1"></a>
<Parameter name="transcoding">

旁路推流的转码属性，详见 [LiveTranscoding](/zh-CN/api-reference/rtc/csharp-windows/class-livetranscoding)。

</Parameter>
<a id="connection-1"></a>
<Parameter name="connection">

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/csharp-windows/class-rtcconnection)。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_startrtmpstreamwithtranscodingex__return_values"></a>

### 返回值 [#返回值-3]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

  - -2：URL 或转码属性参数错误，请检查你的 URL 或参数设置。
  - -7：调用该方法前，未初始化 SDK。
  - -19：该旁路推流 URL 已在使用中，请使用其他旁路推流 URL。

### 所属接口类 [#所属接口类-3]

- [IRtcEngineEx](/zh-CN/api-reference/rtc/csharp-windows/rtc-interface-class#class_irtcengineex)

<a id="api_irtcengine_stoprtmpstream"></a>

<a id="ariaid-title6"></a>

## StopRtmpStream [#stoprtmpstream]

结束旁路推流。

<a id="api_irtcengine_stoprtmpstream__prototype"></a>

```csharp
public abstract int StopRtmpStream(string url);
```

<a id="api_irtcengine_stoprtmpstream__detailed_desc"></a>

### 详情 [#详情-4]

声网推荐你使用更加完善的服务端推流功能，详见[实现服务端旁路推流](/zh-CN/realtime-media/media-push)。

调用该方法，你可以结束指定的旁路推流地址上的直播。该方法每次只能结束一个推流地址上的直播，如果你需要结束多个推流地址的直播，则需多次调用该方法。

调用该方法后，SDK 会在本地触发 [OnRtmpStreamingStateChanged](/zh-CN/api-reference/rtc/csharp-windows/cloud-media-relay/media-push#callback_irtcengineeventhandler_onrtmpstreamingstatechanged) 回调，报告推流的状态。

<a id="api_irtcengine_stoprtmpstream__parameters"></a>

### 参数 [#参数-4]

<ParameterList>
<a id="url-4"></a>
<Parameter name="url">

旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。

</Parameter>
</ParameterList>

<a id="api_irtcengine_stoprtmpstream__return_values"></a>

### 返回值 [#返回值-4]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-4]

- [IRtcEngine](/zh-CN/api-reference/rtc/csharp-windows/rtc-interface-class#class_irtcengine)

<a id="api_irtcengineex_stoprtmpstreamex"></a>

<a id="ariaid-title7"></a>

## StopRtmpStreamEx [#stoprtmpstreamex]

结束旁路推流。

<a id="api_irtcengineex_stoprtmpstreamex__prototype"></a>

```csharp
public abstract int StopRtmpStreamEx(string url, RtcConnection connection);
```

<a id="api_irtcengineex_stoprtmpstreamex__detailed_desc"></a>

### 详情 [#详情-5]

声网推荐你使用更加完善的服务端推流功能，详见[实现服务端旁路推流](/zh-CN/realtime-media/media-push)。

调用该方法，你可以结束指定的旁路推流地址上的直播。该方法每次只能结束一个推流地址上的直播，如果你需要结束多个推流地址的直播，则需多次调用该方法。

调用该方法后，SDK 会在本地触发 [OnRtmpStreamingStateChanged](/zh-CN/api-reference/rtc/csharp-windows/cloud-media-relay/media-push#callback_irtcengineeventhandler_onrtmpstreamingstatechanged) 回调，报告推流的状态。

<a id="api_irtcengineex_stoprtmpstreamex__parameters"></a>

### 参数 [#参数-5]

<ParameterList>
<a id="url-5"></a>
<Parameter name="url">

旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_stoprtmpstreamex__return_values"></a>

### 返回值 [#返回值-5]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-5]

- [IRtcEngineEx](/zh-CN/api-reference/rtc/csharp-windows/rtc-interface-class#class_irtcengineex)

<a id="api_irtcengine_updatertmptranscoding"></a>

<a id="ariaid-title8"></a>

## UpdateRtmpTranscoding [#updatertmptranscoding]

更新旁路推流转码属性。

<a id="api_irtcengine_updatertmptranscoding__prototype"></a>

```csharp
public abstract int UpdateRtmpTranscoding(LiveTranscoding transcoding);
```

<a id="api_irtcengine_updatertmptranscoding__detailed_desc"></a>

### 详情 [#详情-6]

声网推荐你使用更加完善的服务端推流功能，详见[实现服务端旁路推流](/zh-CN/realtime-media/media-push)。

开启转码推流后，你可以根据场景需求，动态更新转码属性。转码属性更新后，SDK 会触发 [OnTranscodingUpdated](/zh-CN/api-reference/rtc/csharp-windows/cloud-media-relay/media-push#callback_irtcengineeventhandler_ontranscodingupdated) 回调。

<a id="api_irtcengine_updatertmptranscoding__parameters"></a>

### 参数 [#参数-6]

<ParameterList>
<a id="transcoding-2"></a>
<Parameter name="transcoding">

旁路推流的转码属性，详见 [LiveTranscoding](/zh-CN/api-reference/rtc/csharp-windows/class-livetranscoding)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_updatertmptranscoding__return_values"></a>

### 返回值 [#返回值-6]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-6]

- [IRtcEngine](/zh-CN/api-reference/rtc/csharp-windows/rtc-interface-class#class_irtcengine)

<a id="api_irtcengineex_updatertmptranscodingex"></a>

<a id="ariaid-title9"></a>

## UpdateRtmpTranscodingEx [#updatertmptranscodingex]

更新旁路推流转码属性。

<a id="api_irtcengineex_updatertmptranscodingex__prototype"></a>

```csharp
public abstract int UpdateRtmpTranscodingEx(LiveTranscoding transcoding, RtcConnection connection);
```

<a id="api_irtcengineex_updatertmptranscodingex__detailed_desc"></a>

### 详情 [#详情-7]

声网推荐你使用更加完善的服务端推流功能，详见[实现服务端旁路推流](/zh-CN/realtime-media/media-push)。

开启转码推流后，你可以根据场景需求，动态更新转码属性。转码属性更新后，SDK 会触发 [OnTranscodingUpdated](/zh-CN/api-reference/rtc/csharp-windows/cloud-media-relay/media-push#callback_irtcengineeventhandler_ontranscodingupdated) 回调。

<a id="api_irtcengineex_updatertmptranscodingex__parameters"></a>

### 参数 [#参数-7]

<ParameterList>
<a id="transcoding-3"></a>
<Parameter name="transcoding">

旁路推流的转码属性，详见 [LiveTranscoding](/zh-CN/api-reference/rtc/csharp-windows/class-livetranscoding)。

</Parameter>
<a id="connection-2"></a>
<Parameter name="connection">

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/csharp-windows/class-rtcconnection)。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_updatertmptranscodingex__return_values"></a>

### 返回值 [#返回值-7]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-7]

- [IRtcEngineEx](/zh-CN/api-reference/rtc/csharp-windows/rtc-interface-class#class_irtcengineex)

<a id="callback_irtcengineeventhandler_onrtmpstreamingevent"></a>

<a id="ariaid-title10"></a>

## OnRtmpStreamingEvent [#onrtmpstreamingevent]

旁路推流事件回调。

<a id="callback_irtcengineeventhandler_onrtmpstreamingevent__prototype"></a>

```csharp
public virtual void OnRtmpStreamingEvent(string url, RTMP_STREAMING_EVENT eventCode)
```

<a id="callback_irtcengineeventhandler_onrtmpstreamingevent__parameters"></a>

### 参数 [#参数-8]

<ParameterList>
<a id="url-6"></a>
<Parameter name="url">

旁路推流 URL。

</Parameter>
<a id="eventcode"></a>
<Parameter name="eventCode">

旁路推流事件码。详见 [RTMP_STREAMING_EVENT](/zh-CN/api-reference/rtc/csharp-windows/enum-rtmpstreamingevent)。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-8]

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/csharp-windows/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onrtmpstreamingstatechanged"></a>

<a id="ariaid-title11"></a>

## OnRtmpStreamingStateChanged [#onrtmpstreamingstatechanged]

旁路推流状态发生改变回调。

<a id="callback_irtcengineeventhandler_onrtmpstreamingstatechanged__prototype"></a>

```csharp
public virtual void OnRtmpStreamingStateChanged(string url, RTMP_STREAM_PUBLISH_STATE state, RTMP_STREAM_PUBLISH_REASON reason)
```

<a id="callback_irtcengineeventhandler_onrtmpstreamingstatechanged__detailed_desc"></a>

### 详情 [#详情-8]

旁路推流状态发生改变时，SDK会触发该回调，并在回调中明确状态发生改变的 URL 地址及当前推流状态。该回调方便推流用户了解当前的推流状态；推流出错时，你可以通过返回的错误码了解出错的原因，方便排查问题。

<a id="callback_irtcengineeventhandler_onrtmpstreamingstatechanged__parameters"></a>

### 参数 [#参数-9]

<ParameterList>
<a id="url-7"></a>
<Parameter name="url">

推流状态发生改变的 URL 地址。

</Parameter>
<a id="state"></a>
<Parameter name="state">

当前的推流状态，详见 [RTMP_STREAM_PUBLISH_STATE](/zh-CN/api-reference/rtc/csharp-windows/enum-rtmpstreampublishstate)。

</Parameter>
<a id="reason"></a>
<Parameter name="reason">

推流状态改变的原因，详见 [RTMP_STREAM_PUBLISH_REASON](/zh-CN/api-reference/rtc/csharp-windows/enum-rtmpstreampublishreason)。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-9]

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/csharp-windows/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_ontranscodingupdated"></a>

<a id="ariaid-title12"></a>

## OnTranscodingUpdated [#ontranscodingupdated]

旁路推流转码设置已被更新回调。

<a id="callback_irtcengineeventhandler_ontranscodingupdated__prototype"></a>

```csharp
public virtual void OnTranscodingUpdated()
```

<a id="callback_irtcengineeventhandler_ontranscodingupdated__detailed_desc"></a>

### 详情 [#详情-9]

[StartRtmpStreamWithTranscoding](/zh-CN/api-reference/rtc/csharp-windows/cloud-media-relay/media-push#api_irtcengine_startrtmpstreamwithtranscoding) 方法中的直播参数 [LiveTranscoding](/zh-CN/api-reference/rtc/csharp-windows/class-livetranscoding) 更新时，OnTranscodingUpdated 回调会被触发并向主播报告更新信息。

<a id="callback_irtcengineeventhandler_ontranscodingupdated__note"></a>

:::caution
注意： 首次调用 StartRtmpStreamWithTranscoding 方法设置转码参数 LiveTranscoding 时，不会触发此回调。
:::

### 所属接口类 [#所属接口类-10]

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/csharp-windows/rtc-interface-class#class_irtcengineeventhandler)
