为保障旁路推流场景下用户体验,避免频繁出现推流异常,你可以参考本文优化旁路推流的业务逻辑。
本文展示使用 onRtmpStreamingStateChanged
报告的错误码进行的最佳处理方式。
请在调用 startRtmpStreamWithTranscoding
或 startRtmpStreamWithoutTranscoding
后,根据收到的 onRtmpStreamingStateChanged
回调报告的错误码进行处理。onRtmpStreamingEvent
回调报告的事件不影响推流的进行,仅作为事件提醒。onRtmpStreamingStateChanged
回调报告的错误会导致推流的中断,收到任何错误码都请参考文档进行相应处理。
RTMP_STREAM_PUBLISH_ERROR_OK (0)
: 推流成功。RTMP_STREAM_UNPUBLISH_ERROR_OK (100)
: 正常结束推流。RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT (3)
: 向声网推流服务器请求超时。常见出错原因:网络异常。stopRtmpStream
、startRtmpStreamWithTranscoding
/startRtmpStreamWithoutTranscoding
重新尝试推流。RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR (4)
:声网推流服务器出错stopRtmpStream
、startRtmpStreamWithTranscoding
/startRtmpStreamWithoutTranscoding
重新尝试推流。RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR (5)
: CDN 网络问题,或声网推流服务器与 CDN 之间的网络问题。stopRtmpStream
、startRtmpStreamWithTranscoding
/startRtmpStreamWithoutTranscoding
重新尝试推流。如果 3~5 次重推后,依然失败,请依次联系 CDN 厂商、声网技术支持排查问题。RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND (9)
: 找不到该推流地址。startRtmpStreamWithTranscoding
/startRtmpStreamWithoutTranscoding
重新尝试推流。RTMP_STREAM_PUBLISH_ERROR_NET_DOWN (14)
: 主播的网络出错。stopRtmpStream
、startRtmpStreamWithTranscoding
/startRtmpStreamWithoutTranscoding
重新尝试推流。stopRtmpStream
和 startRtmpStreamWithTranscoding
/startRtmpStreamWithoutTranscoding
方法重推时,请确保在收到 onRtmpStreamingStateChanged
回调报告 stopRtmpStream
调用成功后,才调用 startRtmpStreamWithTranscoding
/startRtmpStreamWithoutTranscoding
。
RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT (1)
: 参数无效。解决方法:检查 API 调用时序,检查传参。RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED (2)
: 推送的媒体流已加密,无法进行推流。详见媒体流加密。RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT (7)
: 推流地址已达到上限。每个项目下每个频道中,每个 uid
推流地址上限为 10 个。解决方法:请先停止对一些非必要地址的推流。RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED (8)
: 没有权限的操作。常见出错原因:将媒体流推送到另一个主播正在使用的推流地址。解决方法:检查业务逻辑。RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED (10)
: 推流地址格式错误。解决方法:检查推流地址。RTMP_STREAM_PUBLISH_ERROR_NOT_BROADCASTER (11)
: 用户角色不是主播,该用户无法使用推流功能。请检查你的应用代码逻辑。RTMP_STREAM_PUBLISH_ERROR_TRANSCODING_NO_MIX_STREAM (13)
: 非转码推流情况下,调用了 updateRtmpTranscoding
方法更新转码属性。请检查你的应用代码逻辑。RTMP_STREAM_PUBLISH_ERROR_INVALID_APPID (15)
: 你的 App ID 没有使用声网旁路推流服务的权限。请参考前提条件开启旁路推流服务。本文以 C++ 语言为例,如果你使用其他语言的 API,请参考 API 对照表:
C++ | Objective-C | Java |
---|---|---|
startRtmpStreamWithoutTranscoding |
startRtmpStreamWithoutTranscoding |
startRtmpStreamWithoutTranscoding |
startRtmpStreamWithTranscoding |
startRtmpStreamWithTranscoding |
startRtmpStreamWithTranscoding |
updateRtmpTranscoding |
updateRtmpTranscoding |
updateRtmpTranscoding |
stopRtmpStream |
stopRtmpStream |
stopRtmpStream |
onRtmpStreamingStateChanged |
rtmpStreamingChangedtoState |
onRtmpStreamingStateChanged |
onRtmpStreamingEvent |
rtmpStreamingEventWithUrl |
onRtmpStreamingEvent |