公共流指的是用户不需要进房,也可以订阅和接收的音视频流。在音视频通话中,用户通常需要进入房间才能订阅和接收媒体流。你可以使用 StartPushPublicStream 这个 OpenAPI 实现这一功能。
使用前需要联系技术支持做服务开通。
你还可以通过客户端发布公共流,详见公共流的发布和订阅。
你可以调用 StartPushPublicStream 接口,将指定音视频房间内的单路或多路音视频流,使用指定的布局方式,进行发布。
在一路公共流中,最多只能包含 17 路流。
关于调用接口的服务地址、通信协议、字符编码和签名机制,参看调用 OpenAPI。
使用 Post 方式发起请求。
以下是接口特有的请求参数。关于其他公共请求参数,参看请求参数。
| 参数名 | 类型 | 必填 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | StartPushPublicStream | 开始推送公共流 |
| Version | String | 是 | 2020-12-01 | OpenAPI 版本 |
| 参数名 | 类型 | 必填 | 示例值 | 描述 |
|---|---|---|---|---|
| AppId | String | 是 | 6xxxxxxxxxxxxxxxxxxxxx75 | 你的音视频应用的唯一标志 |
| BusinessId | string | 否 | BussinessId_1 | 你创建的业务标识 |
| PublicStreamId | String | 是 | StreamId_1 | 公共流 ID。你必须对每路公共流,设定 PublicStreamId,参看 ID。 |
| TargetStreams | Stream[] | 是 | 无 | 为公共流指定单路或多路媒体流及对应参数,Stream 数组。最高支持 17 路。 |
| ExcludeStreams | Stream[] | 否 | 无 | 你可以通过本参数排除掉不需要包含在公共流中的音视频流,即黑名单。参数默认为空。黑名单中的流不得超过 17 路。此参数中的 stream 不应和 TargetStreams 中重复。 |
| Encode | Encode | 否 | 无 | 媒体编码参数 |
| Layout | Layout | 否 | 无 | 公共流包含多路媒体流时的布局参数。 |
| Control | Control | 否 | 无 | 控制选项。 |
https://rtc.volcengineapi.com?Action=StartPushPublicStream&Version=2020-12-01
postscript使用自动布局发布公共流:
{
"AppId" : "Your_AppId",
"BusinessId" : "Your_BusinessId",
"PublicStreamId": "PublicStreamId",
"Layout":{
"LayoutMode":"0"
}
}
json使用自定义布局发布公共流:
{
"AppId": "Your_AppId",
"BusinessId" : "Your_BusinessId",
"PublicStreamId": "PublicStreamId",
"TargetStreams":
[
{
"Index": 0,
"UserId": "Your_UserId_3",
"RoomId": "Your_RoomId",
"StreamType": 1,
"MediaType": 0
},
{
"Index": 1,
"UserId": "Your_UserId_3",
"RoomId": "Your_RoomId",
"StreamType": 1,
"MediaType": 0
}
]
,
"Encode":{
"VideoConfig":{
"Width": 640,
"Height":480,
"FrameRate":15,
"Bitrate":256
}
},
"Layout": {
"LayoutMode": 2,
"CustomLayout": {
"Regions": [
{
"StreamIndex": 0,
"LocationX": 0,
"LocationY": 0,
"WidthProportion": 0.5,
"HeightProportion": 1,
"Zorder": 0,
"Alpha": 1,
"RenderMode": 0
},
{
"StreamIndex": 1,
"LocationX": 0.5,
"LocationY": 0,
"WidthProportion": 0.5,
"HeightProportion": 1,
"Zorder": 1,
"Alpha": 1,
"RenderMode": 1,
"AlternateImage":
"SourceCrop": {
"LocationX":500,
"LocationY":0,
"WidthProportion":0.5,
"HeightProportion":0.5:
}
}
],
"FrameInterpolationMode": 0,
"BackgroundColor": "#000000",
"BackgroundImage": "https://xx.com/img/1.jpg"
},
}
}
}
json返回值 Result 仅在请求成功时返回 "ok",失败时返回错误码和相关信息。
{
"Result": "ok",
"ResponseMetadata": {
"RequestId": "Your_RequestId",
"Action": "StartPushPublicStream",
"Version": "2020-12-01",
"Service": "rtc",
"Region": "cn-north-1"
}
}
json{
"ResponseMetadata": {
"RequestId": "Your_RequestId",
"Action": "StartPushPublicStream",
"Version": "2020-12-01",
"Error": {
"Code": "InvalidParameter",
"Message": "parse request failed, error: json: cannot unmarshal number into Go struct field PublicStreamUpdateReq.PublicStreamId of type string"
}
}
}
json