为了保障输入在线媒体流服务的可靠性,声网建议你参考本文档集成输入在线媒体流 RESTful API。阅读本文档前,建议你参考输入在线媒体流 RESTful API 了解输入在线媒体流 RESTful API 的基础流程。
开始使用输入在线媒体流 RESTful API 前,你需要满足以下条件:
声网服务器限制输入在线媒体流 RESTful API 的调用速率,超出限制速率时会返回状态码 429(Too Many Requests)
。如果你有更高调用速率需求,请联系技术支持。
API | 限流说明 |
---|---|
Create |
name )的云端播放器时,每个不同名字的云端播放器的创建速率上限为 2 次/秒。name )的云端播放器时,云端播放器的创建速率上限为 50 次/ 秒。 |
Delete |
一个项目中,销毁云端播放器的速率上限为 100 次/秒。 |
List |
filter )时,查询速率上限为 2 次/秒 和 15 次/分钟。filter )时,查询速率上限为 10 次/秒和 20 次/分钟。 |
PCW 限制与你使用输入在线媒体流服务处理的视频流分辨率和所在地区有关,详见下表:
服务类型 | 中国大陆 | 欧洲 | 美洲 | 亚洲(除中国大陆) |
---|---|---|---|---|
输入在线媒体流 | SD: 20,HD: 20,FHD: 10 | SD: 20,HD: 10,FHD: 5 | SD: 20,HD: 10,FHD: 5 | SD: 20,HD: 20,FHD: 5 |
分辨率说明:
如需更高配额,请联系技术支持。
输入在线媒体流服务支持的视频属性上限为:分辨率 1920 × 1080,帧率 30 fps。
输入在线媒体流支持的最大拉流路数详见下表:
服务类型 | 中国大陆 | 欧洲 | 美洲 | 亚洲(除中国大陆) |
---|---|---|---|---|
输入在线媒体流 | SD: 20,HD: 20,FHD: 10 | SD: 20,HD: 10,FHD: 5 | SD: 20,HD: 10,FHD: 5 | SD: 20,HD: 20,FHD: 5 |
分辨率说明:
如果需要提升配额,请联系技术支持。
为保障 REST 服务的高可用,避免因区域网络故障造成的服务不可用,声网提供故障迁移和切换域名的方案。
针对网络故障,以及非声网云、非声网软件、设施和不可抗力因素等因素导致的输入在线媒体流中断,声网流为了保证更好的用户体验,提供自动故障迁移服务,该服务会在尽量短的时间内完成迁移(预计 4 分钟内),迁移期间输入在线媒体流任务中断,可能导致部分数据丢失。
如果对于频道内较多观众端的场景或关键性业务,你需要基于当前业务的重要性和声网提供的自动迁移时效性来考虑是否采用更高的质量保障,例如准备多路流保障以应对迁移期间的快速切换,或者可以采用退避重试策略主动迁移以减少迁移时间。
如需比故障迁移更高的质量保障,你可以采用多路任务保障策略。每路输入在线媒体流任务单独计费,计费方式详见输入在线媒体流计费说明。实现步骤如下:
同时发起主任务和备份任务,向同一频道推送在线媒体流,观众端订阅主任务中的 uid
。
在客户端监听以下回调事件,可以及时通知观众端订阅备份任务中的 uid
:
onUserOffline
onRemoteAudioStateChanged
/onRemoteVideoStateChanged
主域名 | 区域域名 | 地理区域 |
---|---|---|
api.sd-rtn.com | api-us-west-1.sd-rtn.com | 美国西部 |
api-us-east-1.sd-rtn.com | 美国东部 | |
api-ap-southeast-1.sd-rtn.com | 亚太东南 | |
api-ap-northeast-1.sd-rtn.com | 亚太东北 | |
api-eu-west-1.sd-rtn.com | 欧洲西部 | |
api-eu-central-1.sd-rtn.com | 欧洲中部 | |
api-cn-east-1.sd-rtn.com | 中国华东 | |
api-cn-north-1.sd-rtn.com | 中国华北 | |
api.agora.io | api-us-west-1.agora.io | 美国西部 |
api-us-east-1.agora.io | 美国东部 | |
api-ap-southeast-1.agora.io | 亚太东南 | |
api-ap-northeast-1.agora.io | 亚太东北 | |
api-eu-west-1.agora.io | 欧洲西部 | |
api-eu-central-1.agora.io | 欧洲中部 | |
api-cn-east-1.agora.io | 中国华东 | |
api-cn-north-1.agora.io | 中国华北 |
创建一个云端播放器(Create
)时,你需要关注以下注意事项:
你需要通过 region
参数分区域创建云端播放器:
region
与你的媒体流源站在同一个区域。例如媒体流源站为阿里云 OSS,则需要将 region
设置为 cn。
region
的值为小写。声网推荐你对请求报文的 Header 中的 X-Request-ID
字段赋值,声网服务器会在响应 Header 中返回一个 X-Custom-Request-ID
字段,以用于问题排查。
选择设置 UID 或 Account 作为云端播放器的用户名(请勿同时设置这两个字段),并保证每个云端播放器在频道内的用户名唯一。
为避免重复创建多个云端播放器导致重复输入媒体流,推荐使用 name
字段管理指定项目下的云端播放器:
409(Conflict)
。请注意云端播放器支持的音视频格式与协议,避免因使用不支持的音视频格式与协议导致输入媒体流失败。
idleTimeout
的参数值,推荐使用默认值 300 秒,表示当媒体流为非播放状态 300 秒后云端播放器会自动销毁,停止输入在线媒体流。监听云端播放器创建成功事件后,当你成功创建一个云端播放器时,消息通知服务器会向你的服务器通知该事件。报告事件 payload
中 status
字段为 "connecting"
,表示业务服务器正在连接媒体流地址或正在探测音视频数据。
声网建议你按照以下方式分页查询一个项目下所有云端播放器(List
):
List
时不使用查询参数 pageToken
,在响应报文中获取首页查询结果和声网服务器返回的 nextPageToken
。List
时,将 nextPageToken
值传入查询参数 pageToken
,查询下一页云端播放器列表。nextPageToken
为 0
,表示已查到一个项目下所有云端播放器。云端播放器根据创建时间(createTs
)升序排列。当输入在线媒体流过程中出现 404
、429
、5xx
错误码时,你需要采取退避策略,例如等待 5-6 秒、10-11 秒、15-16 秒后重试。
使用退避策略重试后,如果连续 3 次出现 404、5xx 错误码,或查询推流状态响应包体中的 state
字段为 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
字段值,并请联系技术支持。
参考以下表格,快速确认每条检查项是否符合集成要求,以保证输入在线媒体流服务的可靠性。
编号 | 重要程度 | 检查项 | 检查内容 | 符合集成要求 |
---|---|---|---|---|
1 | 必要 | 频道模式 | 所在频道场景为直播。 | ✓ |
2 | 必要 | 开通服务 | 开通输入在线媒体流服务。 | ✓ |
3 | 必要 | QPS 限制条件 | 确保一个项目中,API 的调用速率低于最大限制。详见 API 调用速率限制。 | ✓ |
4 | 必要 | 最大并发任务数限制 | 确保一个项目中,并发任务数低于 50。详见 最大并发任务数限制。 | ✓ |
5 | 可选 | 管理 Converter | uid 或 account 作为云端播放器的用户名(请勿同时设置这两个字段)。name 字段管理指定项目下的云端播放器。 |
✓ |
6 | 必要 | 区域设置 | region 与你的媒体流源站在同一个区域。region 值为小写。 |
✓ |
7 | 必要 | 超时逻辑 | 设置合理的 idleTimeout ,推荐设置为 300 秒。 |
✓ |
8 | 可选 | 问题排查 | 请按照如下方案进行问题排查: 如果以上排查方法并未解决问题,请打印出响应 Header 中的 X-Request-ID 和 X-Resource-ID 字段值,并联系声网技术支持。 |
✓ |
9 | 可选 | 消息通知 | 开通输入在线媒体流消息通知服务,并监听输入在线媒体流事件。 | ✓ |