监控录制状态
你可以通过云端录制 RESTful API 来获取录制服务状态。相比于云端录制 RESTful API,消息通知服务可以作为辅助手段。
消息通知服务只能作为辅助手段来获取服务录制状态。不建议你的核心业务逻辑依赖消息通知服务。如果你的业务对该服务强依赖,建议联系技术支持开通冗余消息功能,即接收双路消息通知,降低消息丢失的概率。开通冗余消息功能后,需要你基于 sid
对消息进行去重。冗余消息功能仍然不能保证 100% 的消息到达率。
监控录制过程中的状态
你可以通过周期性调用 query
方法来确认录制服务正在进行中且状态正常。相比于 query
,消息通知服务可以作为辅助手段。详见消息通知服务和 query 方法的对比。
使用周期性频道查询
如果你对状态查询的可靠性要求较高,声网强烈建议你使用 query
方法周期性查询频道内的录制状态,例如每隔 2 分钟调用一次 query
,并根据返回的 HTTP 状态码采取相应措施。
- 如果返回的 HTTP 状态码一直为
40x
,则表示请求参数错误,需要进行排查。 - 如果返回的 HTTP 状态码为
404
,且已经确认请求参数无误,则表示录制并未成功启动、或启动后中途退出。建议采用退避策略多次调用query
(例如间隔 5 秒、10 秒、15 秒)进行确认。 - 如果返回的 HTTP 状态码为
50x
,则表示query
请求失败,但尚不明确录制是否已退出。出现50x
错误的概率极小,建议使用退避策略 (5 秒, 10 秒, 15 秒,30 秒) 继续调用query
。
开启冗余消息通知
开通消息通知服务后,为避免消息投递的确认消息可能丢失,声网会重传消息。因此你需要基于 sid
对消息进行去重。举例来说,如果你需要在录制超时退出后再次开启录制,流程为:
- 你的服务器收到
31
、32
、或11
事件,表示录制服务已正常退出。 - 收到事件后,你的应用调用
acquire
,重新开启录制服务。 - 在此期间你的服务器又收到了
31
、32
、或11
事件。如果以上事件中的sid
与前一次的31
、32
、或11
事件一致,则可以作为冗余事件通知忽略。 - 如果你需要完全确保成功开启了录制服务,则仍然需要调用
query
进行查询。
一旦录制服务启用了高可用机制,某些消息可能会发送两次,你可以根据消息中的 UID 进行区分:如果 UID 与发起录制时使用的 UID 一致,则该消息为原有录制进程的事件;如果不一致,则该消息为启用高可用机制后的事件。
避免录制服务频繁退出
start
方法中的 maxIdleTime
字段默认值为 30 秒。如果实际场景中主播频繁上下线,过短的 maxIdleTime
会导致录制服务频繁退出。对于要求录制服务一直在频道中的场景,需要加大 maxIdleTime
,避免因频道内短时间无发流端导致的录制退出。
举例来说,如果每堂课中固定有 5 分钟的休息时间,则可以将 maxIdleTime
设置为 10 分钟,保证整堂课的录制不中断。
确认录制上传状态
录制结束后,正常情况下录制文件会在 20 分钟内上传至第三方云存储,但在网络异常等特殊情况下上传时间会达到 24 小时以上。
为了最大限度地减少录制文件的丢失风险,声网提供了录制文件备份上传功能,并提供付费找回服务。此功能旨在应对存储账号欠费或云存储厂商故障等紧急情况。具体收费标准请联系 sales@shengwang.cn。
录制文件备份上传服务仅作为紧急情况下的临时解决方案,备份文件最多存储 72 小时,超时将自动删除。我们建议你密切关注存储服务的可用性,并及时处理相关问题。