旁路推流

  • Android

更新时间不可用

startRtmpStreamWithoutTranscoding

开始向 CDN 推送音视频流(不进行转码)。

Java
public abstract int startRtmpStreamWithoutTranscoding(String url);

声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。 你可以调用该方法将音频或视频流推送到指定的 CDN 地址。该方法每次只能向一个 CDN 地址推送媒体流,如果需要推送到多个地址,请多次调用该方法。

注:

  • 请在加入频道后调用该方法。
  • 只有在 LIVE_BROADCASTING 模式下的主播角色可以调用该方法。
  • 如果推流失败后需要重试,请先调用 stopRtmpStream 停止推流,再调用该方法重新推流;否则,SDK 会返回与上次失败相同的错误码。

相关回调

成功调用该方法后,SDK 会触发 onRtmpStreamingStateChanged 回调报告推流状态。

参数

参数名描述
url

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

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。

  • < 0:方法调用失败。详见错误码了解详情和解决建议。

    • -2:url 不合法。
    • -7:调用该方法前未初始化 SDK。
    • -19:推流地址已被使用,请更换地址。

所属接口类

startRtmpStreamWithoutTranscodingEx

开始向 CDN 推送未经转码的媒体流。

Java
public abstract int startRtmpStreamWithoutTranscodingEx(String url, RtcConnection connection);

声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。 你可以调用该方法将音频或视频流推送到指定的 CDN 地址。该方法一次只能向一个 CDN 地址推送媒体流,如果需要推送到多个地址,请多次调用该方法。

注:

  • 请在加入频道后调用该方法。
  • 只有在频道场景为 LIVE_BROADCASTING 且角色为主播的用户才能调用该方法。
  • 如果推流失败后需要重试,请先调用 stopRtmpStream 停止推流,再调用该方法重新推流;否则,SDK 会返回与上次失败相同的错误码。

适用场景

该方法适用于多频道场景。

相关回调

成功调用该方法后,SDK 会触发 onRtmpStreamingStateChanged 回调报告推流状态。

参数

参数名描述
url

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

connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。

  • < 0:方法调用失败。详见错误码了解详情和解决建议。

    • -2:URL 或转码配置不合法,请检查 URL 和转码配置。
    • -7:调用该方法前未初始化 SDK。
    • -19:旁路推流地址已被使用,请更换地址。

所属接口类

startRtmpStreamWithTranscoding

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

Java
public abstract int startRtmpStreamWithTranscoding(String url, LiveTranscoding transcoding);

声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。 你可以调用该方法将实时音视频流推送到指定的 CDN 地址,并设置转码配置。该方法每次只能将媒体流推送到一个 CDN 地址。如果需要推送到多个地址,请多次调用该方法。在一个声网项目下,默认最多可同时进行 200 个媒体流推送任务。如需更高配额,请联系技术支持。

注:

  • 请在加入频道后调用该方法。
  • 仅在直播频道场景中,主播角色可以调用该方法。
  • 如果推流失败后需要重试,请先调用 stopRtmpStream 停止推流,再调用该方法重新推流;否则,SDK 会返回与上次失败相同的错误码。

相关回调

成功调用该方法后,SDK 会触发 onRtmpStreamingStateChanged 回调报告推流状态。

参数

参数名描述
url

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

transcoding

旁路推流的转码配置,详见 LiveTranscoding。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。

  • < 0:方法调用失败。详见错误码了解详情和解决建议。

    • -2:url 或转码配置不合法,请检查 url 和转码配置。
    • -7:调用该方法前未初始化 SDK。
    • -19:旁路推流地址已被使用,请更换其他地址。

所属接口类

startRtmpStreamWithTranscodingEx

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

Java
public abstract int startRtmpStreamWithTranscodingEx(String url, LiveTranscoding transcoding, RtcConnection connection);

声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。 你可以调用该方法将音视频直播流推送到指定的 CDN 地址,并设置转码配置。该方法每次只能将媒体流推送到一个 CDN 地址,如果需要推送到多个地址,请多次调用该方法。

注:

  • 使用该方法前,请确保已启用旁路推流服务。
  • 请在加入频道后调用该方法。
  • 仅在直播场景(LIVE_BROADCASTING)中的主播可以调用该方法。
  • 如果推流失败后需要重试,请先调用 stopRtmpStreamEx 停止推流,再调用该方法重试,否则 SDK 会返回与上次失败相同的错误码。

适用场景

该方法适用于多频道场景。

参数

参数名描述
url

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

transcoding

旁路推流的转码配置。详见 LiveTranscoding。

connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。

  • < 0:方法调用失败。详见错误码了解详情和解决建议。

    • -2:URL 或转码配置不合法,请检查 url 和 transcoding 参数。
    • -7:调用该方法前未初始化 SDK。
    • -19:旁路推流地址已被使用,请更换地址。

所属接口类

stopRtmpStream

停止向指定 CDN 地址推送媒体流。

Java
public abstract int stopRtmpStream(String url);

声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。 你可以调用该方法停止向指定的 CDN 地址推送媒体流。该方法每次只能停止一个地址的推流,如需停止多个地址的推流,请多次调用该方法。

参数

参数名描述
url

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

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

stopRtmpStreamEx

停止向指定 CDN 地址推送媒体流。

Java
public abstract int stopRtmpStreamEx(String url, RtcConnection connection);

声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。 你可以调用该方法停止向指定 CDN 地址的直播推流。该方法每次只能停止向一个 CDN 地址推流,如果需要停止多个地址的推流,请多次调用该方法。

适用场景

该方法适用于多频道场景。

相关回调

成功调用该方法后,SDK 会触发 onRtmpStreamingStateChanged 回调报告推流状态。

参数

参数名描述
url

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

connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

updateRtmpTranscoding

更新旁路推流的转码配置。

Java
public abstract int updateRtmpTranscoding(LiveTranscoding transcoding);

声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。

参数

参数名描述
transcoding

旁路推流的转码配置。详见 LiveTranscoding。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

updateRtmpTranscodingEx

更新旁路推流的转码配置。

Java
public abstract int updateRtmpTranscodingEx(LiveTranscoding transcoding, RtcConnection connection);

声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。 开始使用转码功能将媒体流推送到 CDN 后,你可以根据场景动态更新转码配置。更新配置后,SDK 会触发 onTranscodingUpdated 回调。

适用场景

该方法适用于多频道场景。

参数

参数名描述
transcoding

旁路推流的转码配置。详见 LiveTranscoding。

connection

连接信息。详见 RtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

onRtmpStreamingEvent

旁路推流事件回调。

Java
public void onRtmpStreamingEvent(String url, int event)

自从

自 v3.1.0 版本新增。

参数

参数名描述
url

旁路推流的地址。

event

旁路推流的事件码:

  • RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE(1):添加背景图或水印图时发生错误。
  • RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE(2):该推流地址已被用于旁路推流。如需开启新的推流,请使用新的推流地址。
  • RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT(3):该功能不支持。
  • RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN(4):保留参数。
表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onRtmpStreamingStateChanged

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

Java
public void onRtmpStreamingStateChanged(String url, int state, int reason)

该回调用于指示旁路推流的状态。当旁路推流状态发生变化时,SDK 会触发该回调,并返回对应的 URL 地址和当前的推流状态。当出现异常时,你可以参考错误码参数中的详细错误信息进行排查。

触发时机

该回调在旁路推流状态发生变化时被触发。

参数

参数名描述
url

发生状态变化的旁路推流地址。

state

当前旁路推流的状态:

  • RTMP_STREAM_PUBLISH_STATE_IDLE(0):旁路推流尚未开始或已结束。

  • RTMP_STREAM_PUBLISH_STATE_CONNECTING(1):正在连接推流服务器和 CDN 服务器。

  • RTMP_STREAM_PUBLISH_STATE_RUNNING(2):正在推流。SDK 成功推送 RTMP 或 RTMPS 流并返回该状态。

  • RTMP_STREAM_PUBLISH_STATE_RECOVERING(3):正在恢复推流。当 CDN 出现异常或旁路推流中断时,SDK 会尝试恢复推流并返回该状态。

  • RTMP_STREAM_PUBLISH_STATE_FAILURE(4):推流失败。你可以参考错误码参数中的详细错误信息进行排查,也可以尝试重新推流。

  • RTMP_STREAM_PUBLISH_STATE_DISCONNECTING(5):SDK 正在断开与声网旁路推流服务器和 CDN 服务器的连接。当你调用 stopRtmpStream 正常停止旁路推流时,SDK 会依次返回 RTMP_STREAM_PUBLISH_STATE_DISCONNECTING 和 RTMP_STREAM_PUBLISH_STATE_IDLE 状态。

reason

旁路推流状态变化的原因:

  • RTMP_STREAM_PUBLISH_REASON_OK(0):推流成功。
  • RTMP_STREAM_PUBLISH_REASON_INVALID_ARGUMENT(1):参数无效。请检查参数设置。
  • RTMP_STREAM_PUBLISH_REASON_ENCRYPTED_STREAM_NOT_ALLOWED(2):加密流无法推送。
  • RTMP_STREAM_PUBLISH_REASON_CONNECTION_TIMEOUT(3):推流超时。你可以尝试重新推流。
  • RTMP_STREAM_PUBLISH_REASON_INTERNAL_SERVER_ERROR(4):声网推流服务器内部错误。你可以尝试重新推流。
  • RTMP_STREAM_PUBLISH_REASON_RTMP_SERVER_ERROR(5):CDN 服务器错误。
  • RTMP_STREAM_PUBLISH_REASON_TOO_OFTEN(6):保留参数。
  • RTMP_STREAM_PUBLISH_REASON_REACH_LIMIT(7):主播推送的 URL 超过 10 个。你可以停止向不必要的 URL 推流。
  • RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED(8):主播操作了其他主播的 URL,例如更新或停止其他主播的流。请检查你的应用逻辑。
  • RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND(9):声网服务器未找到旁路推流的媒体流。
  • RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED(10):旁路推流地址格式不支持。请检查 URL 格式是否正确。
  • RTMP_STREAM_PUBLISH_REASON_NOT_BROADCASTER(11):用户角色不是主播,无法使用旁路推流功能。请检查你的应用代码逻辑。
  • RTMP_STREAM_PUBLISH_REASON_TRANSCODING_NO_MIX_STREAM(13):在无转码的旁路推流场景中调用了 updateRtmpTranscoding 方法更新转码配置。请检查你的应用代码逻辑。
  • RTMP_STREAM_PUBLISH_REASON_NET_DOWN(14):主播端网络异常。
  • RTMP_STREAM_PUBLISH_REASON_INVALID_PRIVILEGE(16):项目无权限使用旁路推流服务。
  • RTMP_STREAM_UNPUBLISH_REASON_OK(100):已正常停止旁路推流。调用 stopRtmpStream 停止推流后,SDK 返回该值。
表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

onTranscodingUpdated

发布端云端转码配置更新回调。

Java
public void onTranscodingUpdated() {}

当调用 startRtmpStreamWithTranscoding 更新 LiveTranscoding 配置时,SDK 会触发该回调以报告更新信息。

注: 如果首次调用 startRtmpStreamWithTranscoding 设置 LiveTranscoding 配置,SDK 不会触发该回调。

触发时机

该回调在发布端的云端转码配置发生更新时被触发。

所属接口类