对于一个音视频通话,你可以将一路流通过 RTMP 协议推送到指定的 CDN 推流地址。
你可以使用 StartPushSingleStreamToCDN 这个 OpenAPI 实现这一功能。
注意:
- 同一 TaskId 不能同时开启合流转推和单流转推任务。
- 本功能会对音频编码,音频编码协议固定为
aac,音频声道数固定为双声道,音频采样率固定为44100。- 本功能不对视频编码,所以推到 RTMP 的视频流会根据推流端的分辨率、编码方式、关闭摄像头等变化而变化。
- 使用单流转推功能时,建议在移动端将采集视频帧的朝向设置为固定。参见移动端 API 文档。
- Android: setVideoOrientation
- iOS: setVideoOrientation:
你可以调用 StartPushSingleStreamToCDN 接口,将指定音视频房间内的指定音视频流推送至指定的地址。
单流转推状态变化后,你在 RTC 控制台上指定的 url 地址会收到来自 RTC 服务端的消息回调,相关事件的信息包含在回调字段中。有关回调结果的详细说明,参看TranscodeStarted 。
在使用单流转推功能前,你必须在控制台上开通转推直播服务。
关于调用接口的服务地址、通信协议、字符编码和签名机制,参看调用 OpenAPI。
QPS 不得超过 150。
使用 Post 方式发起请求。
以下是接口特有的请求参数。关于其他公共请求参数,参看请求参数。
| 参数名 | 类型 | 必填 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | StartPushSingleStreamToCDN | 接口名称,本接口取值:StartPushSingleStreamToCDN |
| Version | String | 是 | 2020-12-01 | 接口版本,本接口取值:2020-12-01 |
| 参数名 | 类型 | 必填 | 示例值 | 描述 |
|---|---|---|---|---|
| AppId | String | 是 | Your_AppId | 你的音视频应用的唯一标志 |
| BusinessId | String | 否 | Your_BusinessId | 业务标识 |
| RoomId | String | 是 | Your_RoomId | 房间的 ID,是房间的唯一标志 |
| TaskId | String | 是 | Your_TaskId | 转推任务 ID。你必须对每个转推任务设定 TaskId,且在后续进行任务结束时也须使用该 TaskId。关于 TaskId 的详细说明,参看TaskId说明 。 关于 TaskId 及以上 Id 字段的命名规则,参看 ID |
| Stream | Stream | 是 | / | 房间内转推的流 |
| PushURL | String | 是 | rtmp://xxx/xxx | 推流地址。目前仅支持 rtmp 协议 |
| Control | Control | 是 | / | 配置选项 |
TaskId 是任务的标识,在一个 AppId 的 RoomId 下 TaskId 是唯一的,不同 AppId 或者不同 RoomId 下 TaskId 可以重复,因此 AppId + RoomId + TaskId 是任务的唯一标识,可以用来标识指定 AppId 下某个房间内正在运行的任务,从而能在此任务运行中进行更新或者停止此任务。
https://rtc.volcengineapi.com?Action=StartPushSingleStreamToCDN&Version=2020-12-01
postscript{
"AppId": "Your_AppId",
"BusinessId": "Your_BusinessId",
"RoomId": "Your_RoomId",
"TaskId": "Your_TaskId",
"PushURL": "rtmp://xxx/xxx",
"Stream": {
"UserId": "Your_UserId",
"StreamType": 0
},
"Control": {
"MediaType": 0,
"MaxIdleTime": 180
}
}
json返回值 Result 仅在请求成功时返回"ok",失败时为空。
{
"Result": "ok",
"ResponseMetadata": {
"RequestId": "Your_RequestId",
"Action": "StartPushSingleStreamToCDN",
"Version": "2020-12-01",
"Service": "rtc",
"Region": "cn-north-1"
}
}
json