公共流指的是用户不需要进房,也可以订阅和接收的音视频流。在音视频通话中,用户通常需要进入房间才能订阅和接收媒体流。你可以使用 StartPushPublicStream 这个 OpenAPI 实现这一功能。

使用前需要联系技术支持做服务开通。

你还可以通过客户端发布公共流,详见公共流的发布和订阅。

接口行为

你可以调用 StartPushPublicStream 接口,将指定音视频房间内的单路或多路音视频流,使用指定的布局方式,进行发布。

在一路公共流中,最多只能包含 17 路流。

调用接口

关于调用接口的服务地址、通信协议、字符编码和签名机制,参看调用 OpenAPI。

请求方式

使用 Post 方式发起请求。

请求参数

以下是接口特有的请求参数。关于其他公共请求参数,参看请求参数。

Query
参数名类型必填示例值描述
ActionString是StartPushPublicStream开始推送公共流
VersionString是2020-12-01OpenAPI 版本
Body
参数名类型必填示例值描述
AppIdString是6xxxxxxxxxxxxxxxxxxxxx75你的音视频应用的唯一标志
BusinessIdstring否BussinessId_1你创建的业务标识
PublicStreamIdString是StreamId_1公共流 ID。你必须对每路公共流,设定 PublicStreamId,参看 ID。
TargetStreamsStream[]是无为公共流指定单路或多路媒体流及对应参数,Stream 数组。最高支持 17 路。
ExcludeStreamsStream[]否无你可以通过本参数排除掉不需要包含在公共流中的音视频流,即黑名单。参数默认为空。黑名单中的流不得超过 17 路。此参数中的 stream 不应和 TargetStreams 中重复。
EncodeEncode否无媒体编码参数
LayoutLayout否无公共流包含多路媒体流时的布局参数。
ControlControl否无控制选项。
请求示例代码
Query
https://rtc.volcengineapi.com?Action=StartPushPublicStream&Version=2020-12-01
postscript
Body

使用自动布局发布公共流:

{
    "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