旁路推流
startRtmpStreamWithoutTranscoding
开始向 CDN 推送音视频流(不进行转码)。
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:推流地址已被使用,请更换地址。
- -2:
startRtmpStreamWithoutTranscodingEx
开始向 CDN 推送未经转码的媒体流。
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
开始旁路推流并设置转码配置。
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:旁路推流地址已被使用,请更换其他地址。
- -2:
startRtmpStreamWithTranscodingEx
开始旁路推流并设置转码配置。
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:旁路推流地址已被使用,请更换地址。
- -2:URL 或转码配置不合法,请检查
stopRtmpStream
stopRtmpStreamEx
停止向指定 CDN 地址推送媒体流。
public abstract int stopRtmpStreamEx(String url, RtcConnection connection);
声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。 你可以调用该方法停止向指定 CDN 地址的直播推流。该方法每次只能停止向一个 CDN 地址推流,如果需要停止多个地址的推流,请多次调用该方法。
适用场景
该方法适用于多频道场景。
相关回调
成功调用该方法后,SDK 会触发 onRtmpStreamingStateChanged 回调报告推流状态。
参数
- url
- 旁路推流地址。格式为 RTMP 或 RTMPS,长度不能超过 1024 字节。不支持中文等特殊字符。
- connection
- 连接信息。详见 RtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
updateRtmpTranscoding
updateRtmpTranscodingEx
更新旁路推流的转码配置。
public abstract int updateRtmpTranscodingEx(LiveTranscoding transcoding, RtcConnection connection);
声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。 开始使用转码功能将媒体流推送到 CDN 后,你可以根据场景动态更新转码配置。更新配置后,SDK 会触发 onTranscodingUpdated 回调。
适用场景
该方法适用于多频道场景。
参数
- transcoding
- 旁路推流的转码配置。详见 LiveTranscoding。
- connection
- 连接信息。详见 RtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
onRtmpStreamingEvent
旁路推流事件回调。
public void onRtmpStreamingEvent(String url, int event)
参数
- 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
旁路推流状态发生变化回调。
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 会尝试恢复推流并返回该状态。- 如果 SDK 成功恢复推流,则返回
RTMP_STREAM_PUBLISH_STATE_RUNNING(2)。 - 如果在 60 秒内未恢复推流或服务器发生错误,则返回
RTMP_STREAM_PUBLISH_STATE_FAILURE(4)。你也可以通过调用 startRtmpStreamWithTranscoding、startRtmpStreamWithoutTranscoding 和 stopRtmpStream 方法重新连接服务器。
- 如果 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
发布端云端转码配置更新回调。
public void onTranscodingUpdated() {}
当调用 startRtmpStreamWithTranscoding 更新 LiveTranscoding 配置时,SDK 会触发该回调以报告更新信息。
触发时机
该回调在发布端的云端转码配置发生更新时被触发。