本文介绍如何调用服务端 API 接口,指定房间,自动将房间内的所有 音频
流进行混流。可以应用在语聊房、合唱等场景中。
在跨房间 PK 连麦等场景中,支持增加其他房间内的某条流,参与自动混流;或剔除当前房间的某条流,不参与自动混流,具体请参考 4 请求参数 中的 ExtraMixInput
参数说明。
音频
流。“客户端”的混流功能,请参考 混流 - 自动混流;“服务端”的相关回调,请参考 混流开始回调 和 混流结束回调。
在实现混流之前,请确保:
请求方法:POST
使用 POST 请求方法传递参数时:
请求地址:https://rtc-api.zego.im/?Action=StartAutoMix
传输协议:HTTPS
调用频率限制:100 次/秒
请求示例:
https://rtc-api.zego.im/?Action=StartAutoMix
&AppId=1234567890
&SignatureNonce=15215528852396
&Timestamp=1234567890
&Signature=7a2c0f11145fb760d607a07b54825013
&SignatureVersion=2.0
&IsTest=false
测试环境下(详见 调用方式 中的 “2 公共参数” 中的 IsTest 的参数说明),输入流
的流 ID 和输出流
的流 ID:
此接口中只有部分参数在开始混流后支持动态更新,未标注的则不支持动态更新,详情请参考下表中的参数描述。
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
TaskId |
String |
是 |
任务 ID,混流任务的唯一标识。
|
UserId |
String |
是 |
发起混流任务的用户 ID,由开发者自定义。 同一个任务的用户 ID 需要一致,不同任务的用户 ID 需要保持不同。 通过 UserId 可以实现混流任务的用户归属,也就是该用户才能更新或者停止对应 TaskId 的混流任务,该功能需要联系 ZEGO 技术支持开通。 |
RoomId |
String |
是 |
房间 ID。 |
ExtraMixInput |
Array of Object |
否 |
额外的输入流列表(其他房间内的流),默认最多支持 9 条额外的输入流。 开启自动混流时,最多支持 9 条输入流。即该房间内的流,增加、剔除(根据 ModifyType 取值判断增加或删除某条流)额外的输入流后,流的总数量不能超过 9 条。 |
StreamId |
String |
否 |
混流输入流 ID,该流 ID 来自 RTC 服务。 仅支持数字、英文字符和 "-"、"_"。 StreamId 和 StreamUrl 二者取其一即可,若同时填写 StreamId 和 StreamUrl:
|
StreamUrl |
String |
否 |
混流输入流 URL,支持 RTMP 和 HTTP-FLV 两种协议。 StreamId 和 StreamUrl 二者取其一即可,若同时填写 StreamId 和 StreamUrl:
|
ModifyType |
Int |
否 |
输入流列表的类型,表示在当前混流任务中“增加”或“剔除”该条输入流。
|
SoundLevelId |
Int |
否 |
声浪 ID。参数 SoundLevel(混流声浪)取值为 “1” 时,此参数必填。 |
Volume |
Int |
否 |
音量,取值范围 [0, 200],默认为 100。 |
MixOutput |
Array of Object |
是 |
输出流信息,目前最多支持 3 个。当输出目标为 URL 格式时,目前只支持 RTMP URL 格式:rtmp://xxxxxxxx,且不能传入两个相同的混流输出的地址。 |
StreamId |
String |
是 |
输出流 ID。默认情况下表示混流输出至 RTC 或低延迟直播产品,也可联系 ZEGO 技术支持配置混流输出至 ZEGO 代理的 CDN 直播产品,生效范围为整个 AppId。如果希望控制指定流输出至 CDN 直播产品,则不能配置混流默认输出至 ZEGO 代理 CDN,应按需设置 StreamUrl。 StreamId 和 StreamUrl 二者取其一即可,若填写了 StreamId,则 StreamUrl 不生效。 |
StreamUrl |
String |
是 |
仅支持 RTMP 协议,表示混流输出至 CDN 直播服务,观众可以从 CDN 直播拉混流。 StreamId 和 StreamUrl 二者取其一即可,若填写了 StreamUrl,则 StreamId 不生效。 |
AudioCodec |
Int |
否 |
音频编码及采样率。如需修改采样率,请联系 ZEGO 技术支持配置。
|
AudioBitrate |
Int |
否 |
混流输出音频码率,不填时默认值为 48000,单位为 bps。 |
SoundChannel |
Int |
否 |
输出音频声道数,优先级比全局参数高。
|
Sequence |
Int |
否 |
混流请求的序列号,用于保证时序,同个任务的参数修改需要保证序列号的递增。例如:"Sequence": 1。 如果开启了混流任务的时序控制(如有需要,请联系 ZEGO 技术支持开启),此参数必填。 |
UserData |
String |
否 |
自定义用户数据,使用时需要对此参数内容进行 base64 编码。长度限制为 4000 字节,建议不超过 850 字节。 自定义的用户数据将作为 SEI 信息传输给拉流方,拉流方可通过监听客户端的 onPlayerSyncRecvSEI 回调获取该数据。 再次调用本接口,即可动态更新该参数。 |
SoundLevel |
Int |
否 |
混流声浪,指混流的音量大小。支持混流过程中实时更新。
再次调用本接口,即可动态更新该参数。 |
ByPass |
Int |
否 |
单流透传开关,即输入流就一个时是否按输出参数重新编码,该功能需要联系 ZEGO 技术支持开通。
|
SoundChannel |
String |
否 |
输出音频声道数,当没有指定输出流时使用该配置。
|
AlignmentType |
Int |
否 |
控制播放的实时音视频流是否需要按照 NTP(网络时间)精准对齐后进行混流。此参数主要应用于 KTV 场景中,会增加一定的混流延时;非 KTV 类似场景,不建议设置此参数。
|
RecvBufferLevel |
Int |
否 |
控制拉流最小缓冲时间,取值范围 [0, 4000],单位:毫秒;默认最小缓冲时间为 0。 |
ExPara |
Array of Object |
否 |
拓展参数,根据实际情况填入,常规任务可不填。 |
Key |
String |
否 |
key 值。 |
Value |
String |
否 |
value 值。 |
{
"TaskId": "2213699902971205739",
"UserId": "123",
"RoomId": "room123",
"MixOutput": [
{
"StreamId": "stream3"
}
]
}
参数 | 类型 | 描述 |
---|---|---|
Code |
Number |
返回码。 |
Message |
String |
操作结果描述。 |
RequestId |
String |
请求 ID。 |
Data |
Object |
响应数据。 |
UserId |
String |
发起混流任务的用户 ID。 |
Sequence |
Int |
序列号。 |
RoomId |
String |
房间 ID。 |
PlayInfo |
Array of Object |
播放信息。 |
StreamId |
String |
输出流的流 ID。 |
RTMP |
String |
RTMP 协议对应的 CDN 播放地址(如果指定混流输出地址是 CDN 并且配置了这个协议的拉流域名)。 |
HLS |
String |
HLS 协议对应的 CDN 播放地址(如果指定混流输出地址是 CDN 并且配置了这个协议的拉流域名)。 |
FLV |
String |
HTTP-FLV 协议对应的 CDN 播放地址(如果指定混流输出地址是 CDN 并且配置了这个协议的拉流域名)。 |
响应示例如下:
{
"Code": 0,
"Data": {
"PlayInfo": [
{
"FLV": "http://domain/appname/test.flv",
"HLS": "http://domain/appname/test/playlist.m3u8",
"RTMP": "rtmp://domain/appname/test",
"Status": 0,
"StreamId": "test",
"UserName": ""
}
],
"RoomId": "room123",
"Sequence": 1,
"UserId": "123"
},
"Message": "success",
"RequestId": "8472822294336370476"
}
以下仅列出了常见的接口业务逻辑相关的返回码,完整返回码请参考 全局返回码。
返回码 | 说明 | 处理建议 |
---|---|---|
110200001 | 失败。 | 请重试。 |
110200002 | 输入参数错误。 | 请参考 Message 信息处理。 |
110200003 | 鉴权失败。 | 请确认鉴权信息是否正确或过期,详情请参考 调用方式 中的 “3 签名机制”。 |
110200004 | 解析输入参数失败。 | 请检查混流参数是否正确。 |
110200005 | 混流开始获取分布式锁失败。 | 同一个 UserId 开始混流请求过于频繁,请稍后再试。 |
110200006 | 混流结束获取分布式锁失败。 | 同一个 UserId 停止混流请求过于频繁,请稍后再试。 |
110200151 | 混流任务失败。 | 请重试,或联系 ZEGO 技术支持处理。 |
110200194 | 混流请求过载。 | 请求过于频繁,请稍后再试。 |
联系我们
文档反馈