页面录制最佳实践
页面录制场景和其他云端录制场景有所不同,因此,使用页面录制时,请参考云端录制的通用最佳实践和本页面介绍的页面录制的最佳实践。
概述
页面录制场景下,网络异常等偶然因素可能会造成以下问题:
- 无法正常访问待录制页面,如页面加载失败或时间过长。针对该问题,声网提供页面加载超时检测功能。
- 可以正常访问待录制页面,但未能正确加载页面中的 HTML 元素。
- 录制过程中未能正常加载页面中发生变化的 HTML 元素。
- 未能正常播放待录制页面中的音视频。
- 页面录制异常停止。
为了避免上述问题导致的录制内容与预期不一致,声网建议你按照以下方案保障页面录制的可靠性。
录制启动时的保障
建议你通过如下步骤确认录制服务已成功启动:
-
每次
acquire
请求获取到 Resource ID 后的 2 秒内立即发起对应的start
请求。批量获取 Resource ID 后进行批量start
请求可能导致请求失败。acquire
和start
的请求需配对调用。Resource ID 在获取到的 5 分钟内有效,需尽快使用。超时需要重新申请 Resource ID。 -
确认
start
请求成功,即成功获得 sid (录制 ID)。如果start
请求失败,需要根据状态码采取相应措施:- 如果返回的 HTTP 状态码为
40x
,则表示请求参数错误,需要进行排查。 - 如果返回的 HTTP 状态码为
50x
,可使用相同的参数重试多次,直到成功返回sid
为止。建议使用退避策略,如第一次等待 3 秒后重试、第二次等待 6 秒后重试、第三次等待 9 秒后重试,以免超过 QPS 限制导致失败。如果三次重试均失败,建议更换 UID 再次调用acquire
, 获得一个新的 Resource ID,并用该 Resource ID 再次调用start
方法。 - 如果收到错误码
65
,需要使用相同的参数再次调用start
。建议使用退避策略重试两次,如第一次等待 3 秒后重试、第二次等待 6 秒后重试。
- 如果返回的 HTTP 状态码为
-
获得
sid
之后的 5 秒后,使用退避策略调用 query 方法,例如依次间隔 5 秒、10 秒、15 秒调用。如果query
请求成功,且serverResponse
中的status
字段值为4
或5
,则表示录制服务已成功启动。如果在获得sid
之后的 90 秒后status
仍非4
或5
, 则可以认为录制未启动或成功后超时退出。
录制页面加载时的保障
定时检测待录制页面是否加载成功
开始页面录制前,你需要自行完成待录制页面的检测逻辑,以实现以下方案:
- 调用
start
开始页面录制时,页面录制浏览器访问并加载待录制页面。 - 页面录制服务执行待录制页面 Javascript 的页面检测逻辑,当页面元素加载符合你的预期时,页面录制服务回调
sid
(录制周期的唯一标识)通知业务服务端录制服务启动成功。 - 待录制页面定期上报状态,通知业务服务端页面内容变化。
待录制页面加载失败的处理措施
在实现待录制页面检测逻辑的前提下,当待录制页面录制加载失败,业务服务端未收到回调时,声网推荐你重新发起录制请求。
录制异常停止的保障
开通消息通知服务并订阅 71 web_recorder_stopped
回调事件,当业务服务器收到 web_recorder_stopped
回调,且 code
不为 0
,表示页面录制异常停止,声网推荐你重新发起新的录制。