为了保障输入在线媒体流服务的可靠性,Agora 建议你参考本文档集成输入在线媒体流 RESTful API。阅读本文档前,建议你参考输入在线媒体流 RESTful API 了解输入在线媒体流 RESTful API 的基础流程。
开始使用输入在线媒体流 RESTful API 前,你需要满足以下条件:
Agora 服务器限制输入在线媒体流 RESTful API 的调用速率,超出限制速率时会返回状态码 429(Too Many Requests)
。如果你有更高调用速率需求,请提交工单联系技术支持。
API | 限流说明 |
---|---|
Create |
name )的云端播放器时,每个不同名字的云端播放器的创建速率上限为 2 次/秒。name )的云端播放器时,云端播放器的创建速率上限为 50 次/ 秒。 |
Delete |
一个项目中,销毁云端播放器的速率上限为 100 次/秒。 |
List |
filter )时,查询速率上限为 2 次/秒 和 15 次/分钟。filter )时,查询速率上限为 10 次/秒和 20 次/分钟。 |
PCW(峰值并发任务数)默认为 300,表示允许在一个项目下最多同时运行 300 个输入在线媒体流任务,如需更高配额,请提交工单联系技术支持。
创建一个云端播放器(Create
)时,你需要关注以下注意事项:
你需要通过 region
参数分区域创建云端播放器:
region
与你的媒体流源站在同一个区域。例如媒体流源站为阿里云 OSS,则需要将 region
设置为 cn。
region
的值为小写。Agora 推荐你对请求报文的 Header 中的 X-Request-ID
字段赋值,Agora 服务器会在响应 Header 中返回一个 X-Custom-Request-ID
字段,以用于问题排查。
选择设置 UID 或 Account 作为云端播放器的用户名(请勿同时设置这两个字段),并保证每个云端播放器在频道内的用户名唯一。
为避免重复创建多个云端播放器导致重复输入媒体流,推荐使用 name
字段管理指定项目下的云端播放器:
409(Conflict)
。请注意云端播放器支持的音视频格式与协议,避免因使用不支持的音视频格式与协议导致输入媒体流失败。
idleTimeout
的参数值,推荐使用默认值 300 秒,表示当媒体流为非播放状态 300 秒后云端播放器会自动销毁,停止输入在线媒体流。监听云端播放器创建成功事件后,当你成功创建一个云端播放器时,消息通知服务器会向你的服务器通知该事件。报告事件 payload
中 status
字段为 "connecting"
,表示业务服务器正在连接媒体流地址或正在探测音视频数据。
Agora 建议你按照以下方式分页查询一个项目下所有云端播放器(List
):
List
时不使用查询参数 pageToken
,在响应报文中获取首页查询结果和 Agora 服务器返回的 nextPageToken
。List
时,将 nextPageToken
值传入查询参数 pageToken
,查询下一页云端播放器列表。nextPageToken
为 0
,表示已查到一个项目下所有云端播放器。云端播放器根据创建时间(createTs
)升序排列。当输入在线媒体流过程中出现 404
、429
、5xx
错误码时,你需要采取退避策略,例如等待 5-6 秒、10-11 秒、15-16 秒后重试。
使用退避策略重试后,如果连续 3 次响应包体中的 status
字段为 failed
,说明输入在线媒体流失败,请按照以下步骤进行排查:
200
,则请求成功。200
,则请求失败。请根据对应的响应报文 Body 中的 message
字段内容排查问题。状态码 | 可能的 message 字段内容 | 原因 | 建议措施 |
---|---|---|---|
200 OK |
/ | 创建成功 | / |
400 Bad Request |
Parameter 'streamUrl' is invalid formatted.Parameter channelName is invalid. Fix it in your request and retry. | 请求参数错误 | 参考 HTTP 响应 Body 中的 reason 字段进行排查。 |
401 Unauthorized |
Invalid authentication credentials. | RESTful API 认证失败 | 重新 HTTP 基本认证。 |
403 Forbidden |
This project has not enabled Cloud Player product yet. Contact us to enable it.This project's permission to use Cloud Player was revoked. Contact us for details. | 未开通服务 | 开通输入在线媒体流服务。 |
404 Not Found |
Resource is not found and destroyed. | 并未成功启动任务,或启动任务后中途退出,或自动迁移中,或正在销毁云端播放器。 | 采用退避策略重试。 |
409 Conflict |
Resource with the same name already exists. | 频道中已存在相同用户名的云端播放器。 | 删除已有的云端播放器并重新创建。 |
429 Too Many Requests |
Request rate limit exceeded.Resources quota limit exceeded.no available resources | 并发请求过多 | 采用退避策略重试。 |
500 Unknown |
Some internal error happened. Contact us to help fix it. | 服务端内部错误 | 采用退避策略重试。 |
502 Bad gateway |
Internal errors. Contact us for troubleshooting. | 服务端内部错误 | 采用退避策略重试。 |
503 Service Unavailable |
Service overload. Retry with back off strategy, and contact us to help fix it.Service unavailable temporarily. Retry with back off strategy. | 服务端内部错误 | 采用退避策略重试。 |
504 Gateway Timeout |
Gateway timeout. Query to check whether the player has been created, or to create another one instead. | 服务端内部错误 | 采用退避策略重试。 |
如果以上排查方法并未解决问题,请务必在日志中打印出响应 Header 中的 X-Request-ID
和 X-Resource-ID
字段值,并请提交工单联系 Agora 技术支持。
参考以下表格,快速确认每条检查项是否符合集成要求,以保证输入在线媒体流服务的可靠性。
编号 | 重要程度 | 检查项 | 检查内容 | 符合集成要求 |
---|---|---|---|---|
1 | 必要 | 频道模式 | 所在频道场景为直播。 | ✓ |
2 | 必要 | 开通服务 | 开通输入在线媒体流服务。 | ✓ |
3 | 必要 | QPS 限制条件 | 确保一个项目中,API 的调用速率低于最大限制。详见 API 调用速率限制。 | ✓ |
4 | 必要 | PCW 限制 | 确保一个项目中,并发任务数低于 300。详见 PCW 限制。 | ✓ |
5 | 可选 | 管理 Converter | uid 或 account 作为云端播放器的用户名(请勿同时设置这两个字段)。name 字段管理指定项目下的云端播放器。 |
✓ |
6 | 必要 | 区域设置 | region 与你的媒体流源站在同一个区域。region 值为小写。 |
✓ |
7 | 必要 | 超时逻辑 | 设置合理的 idleTimeout ,推荐设置为 300 秒。 |
✓ |
8 | 可选 | 问题排查 | 请按照如下方案进行问题排查: 如果以上排查方法并未解决问题,请打印出响应 Header 中的 X-Request-ID 和 X-Resource-ID 字段值,并联系 Agora 技术支持。 |
✓ |
9 | 可选 | 消息通知 | 开通输入在线媒体流消息通知服务,并监听输入在线媒体流事件。 | ✓ |