创建 Converter

更新时间不可用

在项目中创建一个 Converter,用于处理音视频流并推流到 CDN。

POST
https://api.sd-rtn.com/{region}/v1/projects/{appId}/rtmp-converters

Create 请求的 Body 字段设置较为复杂,请阅读如下文档后再进一步了解本文的字段说明:

鉴权

Basic Auth

声网旁路推流 RESTful API 仅支持 HTTPS 协议。发送请求时,你需要使用声网提供的客户 ID 和客户密钥生成 Base64 编码凭证,并填入请求头部的 Authorization 字段中。详见实现 HTTP 基本认证。

路径参数

regionstring
必填

创建 Converter 的区域。声网支持分区域创建 Converter。请保证设置的 region 与你的 CDN 源站在同一个区域且传入 region 的值为小写。目前支持以下区域:

  • cn:中国大陆
  • ap:除中国以外的亚洲区域
  • na:北美
  • eu:欧洲
appIdstring
必填

声网为每个开发者提供的 App ID。在声网控制台创建一个项目后即可得到一个 App ID。一个 App ID 是一个项目的唯一标识。

查询参数

regionHintIpstring

CDN 源站 IP 地址,必须为有效的 IPv4 地址。该参数可以保障 RTMP 流的稳定性。

请求 Header

Content-Typestring
必填

application/json

X-Request-IDstring

UUID(通用唯一识别码),标识本次请求。推荐你赋值,赋值后,声网服务器会在响应 Header 中返回一个对应的 X-Custom-Request-ID 字段,你可以用此进行问题排查。如果你不赋值,那么声网服务器会自动生成一个 UUID 并在响应 Header 中返回一个对应的 X-Request-ID 字段。

请求 Body

Create 请求可创建转码推流和不转码推流的 Converter。

字段

转码推流时需设置如下字段。

响应

如果状态码为 2XX,请求成功。

响应 Header

X-Request-IDstring

UUID(通用唯一识别码),标识本次请求。该值为本次请求 Header 中 X-Request-ID。如果请求出错,请在日志中打印出该值,排查问题。如果你已在请求 Header 中对 X-Request-ID 赋值,那么你在响应中收到的参数名为 X-Custom-Request-ID,而非 X-Request-ID。

X-Resource-IDstring

UUID(通用唯一识别码),标识本次请求创建的 Converter 的 ID。

响应 Body

字段
fieldsstring

JSON 编码方式的字段掩码,详见谷歌 protobuf FieldMask 文档。用于描述返回的 converter object 中包含的字段集合。

示例:

{
    "converter": {
      "id": "4c014467d647bb87b60b719f6fa57686",
      "createTs": 1591786766,
      "updateTs": 1591788746,
      "state": "running"
    },
    "fields": "id,createTs,updateTs,state"
}

在本示例中,fields 描述返回的 converter object 中包含 id、createTs、updateTs、state 字段。

请求示例

Example Request
curl --request POST \
  --url "https://api.sd-rtn.com/:region/v1/projects/:appId/rtmp-converters" \
  --header 'Authorization: Basic <credentials>' \
  --header 'X-Request-ID: <string>' \
  -H 'Content-Type: application/json' \
  -d '{
  "converter": {
    "name": "show68_vertical",
    "transcodeOptions": {
      "rtcChannel": "show68",
      "audioOptions": {
        "codecProfile": "HE-AAC",
        "sampleRate": 48000,
        "bitrate": 128,
        "audioChannels": 1,
        "rtcStreamUids": [
          201,
          202
        ],
        "volumes": [
          {
            "volume": 50,
            "rtcStreamUid": 201
          },
          {
            "volume": 150,
            "rtcStreamUid": 202
          }
        ]
      },
      "videoOptions": {
        "canvas": {
          "width": 360,
          "height": 640,
          "color": 0
        },
        "layout": [
          {
            "rtcStreamUid": 201,
            "region": {
              "xPos": 0,
              "yPos": 0,
              "zIndex": 1,
              "width": 360,
              "height": 320
            },
            "fillMode": "fill",
            "placeholderImageUrl": "http://example.agora.io/host_placeholder.jpg"
          },
          {
            "rtcStreamUid": 202,
            "region": {
              "xPos": 0,
              "yPos": 320,
              "zIndex": 1,
              "width": 360,
              "height": 320
            }
          },
          {
            "imageUrl": "http://example.agora.io/watchmark.jpg",
            "region": {
              "xPos": 0,
              "yPos": 0,
              "zIndex": 2,
              "width": 36,
              "height": 64
            },
            "fillMode": "fit"
          }
        ],
        "codec": "H.264",
        "codecProfile": "high",
        "frameRate": 15,
        "gop": 30,
        "bitrate": 400,
        "seiOptions": {
          "source": {
            "metadata": true,
            "datastream": true,
            "customized": {
              "payload": "example"
            }
          },
          "sink": {
            "type": 100
          }
        }
      }
    },
    "rtmpUrl": "rtmp://example/live/show68",
    "idleTimeout": 300
  }
}'

响应示例

{
  "converter": {
    "id": "Converter 的 ID,是声网服务器生成的一个 UUID(通用唯一识别码),标识一个已创建的 Converter。",
    "createTs": "创建 Converter 时的 Unix 时间戳(秒)。",
    "updateTs": "最近一次更新 Converter 配置时的 Unix 时间戳(秒)。",
    "state": "Converter 的运行状态:\n- `\"connecting\"`: 正在连接声网推流服务器和 CDN 服务器。\n- `\"running\"`: 正在进行推流。\n- `\"failed\"`: 推流失败。"
  },
  "fields": "JSON 编码方式的字段掩码,详见[谷歌 protobuf FieldMask 文档](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask)。用于描述返回的 `converter` object 中包含的字段集合。<p>\n示例:\n```json\n{\n    \"converter\": {\n      \"id\": \"4c014467d647bb87b60b719f6fa57686\",\n      \"createTs\": 1591786766,\n      \"updateTs\": 1591788746,\n      \"state\": \"running\"\n    },\n    \"fields\": \"id,createTs,updateTs,state\"\n}\n```\n在本示例中,`fields` 描述返回的 `converter` object 中包含 `id`、`createTs`、`updateTs`、`state` 字段。"
}