旁路推流
startRtmpStreamWithoutTranscoding
开始非转码推流。
public abstract int startRtmpStreamWithoutTranscoding(String url);
详情
声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。
调用该方法,你可以向指定的旁路推流地址推送直播音视频流。该方法每次只能向一个地址推送媒体流,如果你需要向多个地址转码推流,则需多次调用该方法。
调用该方法后,SDK 会在本地触发 onRtmpStreamingStateChanged 回调,报告推流的状态。
- 请在加入频道后调用该方法。
- 只有直播场景下的主播才能调用该方法。
- 调用该方法推流失败后,如果你想要重新推流,那么请你务必先调用 stopRtmpStream,再调用该方法重推,否则 SDK 会返回与上次推流失败时一样的错误码。
参数
- url
- 旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
- -2:URL 或转码属性参数错误,请检查你的 URL 或参数设置。
- -7:调用该方法前,未初始化 SDK。
- -19:该旁路推流 URL 已在使用中,请使用其他旁路推流 URL。
startRtmpStreamWithoutTranscodingEx
开始非转码推流。
public abstract int startRtmpStreamWithoutTranscodingEx(String url, RtcConnection connection);
详情
声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。
调用该方法,你可以向指定的旁路推流地址推送直播音视频流。该方法每次只能向一个地址推送媒体流,如果你需要向多个地址转码推流,则需多次调用该方法。
调用该方法后,SDK 会在本地触发 onRtmpStreamingStateChanged 回调,报告推流的状态。
- 请在加入频道后调用该方法。
- 只有直播场景下的主播才能调用该方法。
- 调用该方法推流失败后,如果你想要重新推流,那么请你务必先调用 stopRtmpStream,再调用该方法重推,否则 SDK 会返回与上次推流失败时一样的错误码。
参数
- url
- 旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。
- connection
- Connection 信息。详见 RtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
- -2:URL 或转码属性参数错误,请检查你的 URL 或参数设置。
- -7:调用该方法前,未初始化 SDK。
- -19:该旁路推流 URL 已在使用中,请使用其他旁路推流 URL。
startRtmpStreamWithTranscoding
开始旁路推流并设置转码属性。
public abstract int startRtmpStreamWithTranscoding(String url, LiveTranscoding transcoding);
详情
声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。
调用该方法,你可以向指定的旁路推流地址推送直播音视频流并设置转码属性。该方法每次只能向一个地址推送媒体流,如果你需要向多个地址转码推流,则需多次调用该方法。
一次推流代表一个推流任务,最大并发任务数默认为 200,表示你在一个声网项目下最多同时运行 200 个推流任务,如需更高配额,请联系技术支持。
调用该方法后,SDK 会在本地触发 onRtmpStreamingStateChanged 回调,报告推流的状态。
- 请在加入频道后调用该方法。
- 只有直播场景下的主播才能调用该方法。
- 调用该方法推流失败后,如果你想要重新推流,那么请你务必先调用 stopRtmpStream,再调用该方法重推,否则 SDK 会返回与上次推流失败时一样的错误码。
参数
- url
- 旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。
- transcoding
旁路推流的转码属性,详见 LiveTranscoding。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
- -2:URL 或转码属性参数错误,请检查你的 URL 或参数设置。
- -7:调用该方法前,未初始化 SDK。
- -19:该旁路推流 URL 已在使用中,请使用其他旁路推流 URL。
startRtmpStreamWithTranscodingEx
开始旁路推流并设置转码属性。
public abstract int startRtmpStreamWithTranscodingEx(
String url, LiveTranscoding transcoding, RtcConnection connection);
详情
声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。
调用该方法,你可以向指定的旁路推流地址推送直播音视频流并设置转码属性。该方法每次只能向一个地址推送媒体流,如果你需要向多个地址转码推流,则需多次调用该方法。
调用该方法后,SDK 会在本地触发 onRtmpStreamingStateChanged 回调,报告推流的状态。
- 请确保已开通旁路推流服务。
- 请在加入频道后调用该方法。
- 只有直播场景下的主播才能调用该方法。
- 调用该方法推流失败后,如果你想要重新推流,那么请你务必先调用 stopRtmpStreamEx,再调用该方法重推,否则 SDK 会返回与上次推流失败时一样的错误码。
参数
- url
- 旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。
- transcoding
旁路推流的转码属性,详见 LiveTranscoding。
- connection
- Connection 信息。详见 RtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
- -2:URL 或转码属性参数错误,请检查你的 URL 或参数设置。
- -7:调用该方法前,未初始化 SDK。
- -19:该旁路推流 URL 已在使用中,请使用其他旁路推流 URL。
stopRtmpStream
结束旁路推流。
public abstract int stopRtmpStream(String url);
详情
声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。
调用该方法,你可以结束指定的旁路推流地址上的直播。该方法每次只能结束一个推流地址上的直播,如果你需要结束多个推流地址的直播,则需多次调用该方法。
调用该方法后,SDK 会在本地触发 onRtmpStreamingStateChanged 回调,报告推流的状态。
参数
- url
- 旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
stopRtmpStreamEx
结束旁路推流。
public abstract int stopRtmpStreamEx(String url, RtcConnection connection);
详情
声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。
调用该方法,你可以结束指定的旁路推流地址上的直播。该方法每次只能结束一个推流地址上的直播,如果你需要结束多个推流地址的直播,则需多次调用该方法。
调用该方法后,SDK 会在本地触发 onRtmpStreamingStateChanged 回调,报告推流的状态。
参数
- url
- 旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
updateRtmpTranscoding
更新旁路推流转码属性。
public abstract int updateRtmpTranscoding(LiveTranscoding transcoding);
详情
声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。
开启转码推流后,你可以根据场景需求,动态更新转码属性。转码属性更新后,SDK 会触发 onTranscodingUpdated 回调。
参数
- transcoding
旁路推流的转码属性,详见 LiveTranscoding。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
updateRtmpTranscodingEx
更新旁路推流转码属性。
public abstract int updateRtmpTranscodingEx(
LiveTranscoding transcoding, RtcConnection connection);
详情
声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。
开启转码推流后,你可以根据场景需求,动态更新转码属性。转码属性更新后,SDK 会触发 onTranscodingUpdated 回调。
参数
- transcoding
旁路推流的转码属性,详见 LiveTranscoding。
- connection
- Connection 信息。详见 RtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
onRtmpStreamingEvent
旁路推流事件回调。
public void onRtmpStreamingEvent(String url, int event) {}
参数
- url
- 旁路推流 URL。
- event
- 旁路推流事件码。
- RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE (1): 旁路推流时,添加背景图或水印出错。
- RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE (2): 该推流 URL 已用于推流。如果你想开始新的推流,请使用新的推流 URL。
- 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
推流状态发生改变的 URL 地址。
- state
- 当前的推流状态:
- RTMP_STREAM_PUBLISH_STATE_IDLE (0):推流未开始或已结束。
- RTMP_STREAM_PUBLISH_STATE_CONNECTING (1):正在连接声网推流服务器和 CDN 服务器。
- RTMP_STREAM_PUBLISH_STATE_RUNNING (2):推流正在进行。成功推流后,会返回该状态。
- RTMP_STREAM_PUBLISH_STATE_RECOVERING (3):正在恢复推流。当 CDN 出现异常,或推流短暂中断时,SDK 会自动尝试恢复推流,并返回该状态。
- 如成功恢复推流,则进入状态 RTMP_STREAM_PUBLISH_STATE_RUNNING(2)。
- 如服务器出错或 60 秒内未成功恢复,则进入状态 RTMP_STREAM_PUBLISH_STATE_FAILURE(4)。如果觉得 60 秒太长,也可以主动调用 startRtmpStreamWithTranscoding/startRtmpStreamWithoutTranscoding 和 stopRtmpStream 方法尝试重连。
- 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):单个主播的推流地址数目达到上限 10。请先停止对一些非必要地址的推流。
- RTMP_STREAM_PUBLISH_REASON_NOT_AUTHORIZED (8):主播操作不属于自己的流。例如更新其他主播的流参数、停止其他主播的流。请检查 App 逻辑。
- RTMP_STREAM_PUBLISH_REASON_STREAM_NOT_FOUND (9):服务器未找到这个流。
- RTMP_STREAM_PUBLISH_REASON_FORMAT_NOT_SUPPORTED (10):推流地址格式有错误。请检查推流地址格式是否正确。
- 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 更新时,onTranscodingUpdated 回调会被触发并向主播报告更新信息。