创建云端转码

更新时间不可用

创建云端转码任务并输出转码后的媒体流。

POST
https://api.sd-rtn.com/v1/projects/{appId}/rtsc/cloud-transcoder/tasks

Create 方法用于创建云端转码任务。发起 Acquire 请求后,你可以通过 Create 请求创建 Cloud transcoder。声网服务器会开始将你指定的多路流转码合流并输入到声网 RTC 频道。

鉴权

Basic Auth

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

路径参数

appIdstring
必填

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

查询参数

builderTokenstring
必填

通过 Acquire 方法的响应包体得到的 tokenName 的值。

注意

同一时间仅允许一个 builderToken 运行任务。

请求 Header

Content-Typestring
必填

application/json

请求 Body

字段

响应

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

响应 Header

X-Request-IDstring

UUID(通用唯一识别码),用于标识本次请求。

注意:如果请求出错,请在日志中打印出该值,排查问题。如果本次请求的响应状态码不是 2XX,那么响应 Header 中可能无该字段。

响应 Body

字段
taskIdstring

转码任务 ID,为 UUID,用于标识本次请求操作的 Cloud transcoder。

createTsnumber

转码任务创建时的 Unix 时间戳(秒)。

statusstring

转码任务的运行状态:

  • "IDLE": 任务未开始。
  • "PREPARED": 任务已收到开启请求。
  • "STARTING": 任务正在开启。
  • "CREATED": 任务初始化完成。
  • "STARTED": 任务已经启动。
  • "IN_PROGRESS": 任务正在进行。
  • "STOPPING": 任务正在停止。
  • "STOPPED": 任务已经停止。
  • "EXIT": 任务正常退出。
  • "FAILURE_STOP": 任务异常退出。

注意:你可以用该字段监听任务的状态。

eventHandlersreserved-object

预留字段。

propertiesreserved-object

预留字段。

sequenceIdstring

预留字段。

variablesreserved-object

预留字段。

workflowsreserved-object

预留字段。

请求示例

curl --request POST \
  --url "https://api.sd-rtn.com/v1/projects/:appId/rtsc/cloud-transcoder/tasks?builderToken=string" \
  --header 'Authorization: Basic <credentials>' \
  -H 'Content-Type: application/json' \
  -d '{
  "services": {
    "cloudTranscoder": {
      "serviceType": "cloudTranscoderV2",
      "config": {
        "transcoder": {
          "idleTimeout": 300,
          "audioInputs": [
            {
              "rtc": {
                "rtcChannel": "<your channel name>",
                "rtcUid": "<your uid1>",
                "rtcToken": "<cloudTranscoder_robot_token, generated with uid 0>"
              }
            },
            {
              "rtc": {
                "rtcChannel": "<your channel name>",
                "rtcUid": "<your uid2>",
                "rtcToken": "<cloudTranscoder_robot_token, generated with uid 0>"
              }
            }
          ],
          "canvas": {
            "width": 960,
            "height": 480,
            "color": 0,
            "backgroundImage": "https://example.jpg",
            "fillMode": "FIT"
          },
          "waterMarks": [
            {
              "imageUrl": "https://example.png",
              "region": {
                "x": 0,
                "y": 0,
                "width": 120,
                "height": 120,
                "zOrder": 50
              }
            }
          ],
          "videoInputs": [
            {
              "rtc": {
                "rtcChannel": "<your channel name>",
                "rtcUid": "<your uid1>",
                "rtcToken": "<cloudTranscoder_robot_token, generated with uid 0>"
              },
              "placeholderImageUrl": "https://example.jpg",
              "region": {
                "x": 0,
                "y": 0,
                "width": 320,
                "height": 360,
                "zOrder": 2
              }
            },
            {
              "rtc": {
                "rtcChannel": "<your channel name>",
                "rtcUid": "<your uid2>",
                "rtcToken": "<cloudTranscoder_robot_token, generated with uid 0>"
              },
              "placeholderImageUrl": "https://example.jpg",
              "region": {
                "x": 320,
                "y": 0,
                "width": 320,
                "height": 320,
                "zOrder": 2
              }
            }
          ],
          "outputs": [
            {
              "rtc": {
                "rtcChannel": "<your channel name>",
                "rtcUid": "<your uid>",
                "rtcToken": "<cloudTranscoder_robot_token,follow rtcUid>"
              },
              "audioOption": {
                "profileType": "AUDIO_PROFILE_MUSIC_STANDARD"
              },
              "videoOption": {
                "fps": 30,
                "codec": "H264",
                "bitrate": 800,
                "width": 960,
                "height": 480,
                "lowBitrateHighQuality": false
              },
              "seiOption": {
                "source": {
                  "agora": {
                    "uidVideoLayout": true
                  }
                },
                "sink": {
                  "type": 100
                }
              }
            }
          ]
        }
      }
    }
  }
}'

响应示例

{
  "createTs": 1661324613,
  "eventHandlers": {},
  "execution": {
    "workflows": {}
  },
  "properties": {},
  "sequenceId": "1",
  "services": {
    "cloudTranscoder": {
      "config": {},
      "createTs": 1661324614,
      "details": {},
      "message": "",
      "serviceType": "cloudTranscoderV2",
      "status": "serviceReady"
    }
  },
  "status": "STARTED",
  "taskId": "609f28f2644f1ae1ceb041b7047e3***",
  "variables": {},
  "workflows": {}
}