Skip to content

更新发布媒体流

说明

该接口会向 TRTC 服务器发送指令,更新通过 startPublishMediaStream 启动的媒体流

注意

  1. 您可以通过本接口来更新发布的 CDN URL(支持增删,最多同时 10 个),但您使用时需要注意不要多个任务同时往相同的 URL 地址推送,以免引起异常推流状态。
  2. 您可以通过 taskId 来更新调整转推/转码任务。例如在 pk 业务中,您可以先通过 startPublishMediaStream 发起转推,接着在主播发起 pk 时,通过 taskId 和本接口将转推更新为转码任务。此时,CDN 播放将连续并且不会发生断流(您需要保持媒体流编码输出参数 param 一致)。
  3. 同一个任务不支持纯音频、音视频、纯视频之间的切换。

方法名

updatePublishMediaStream

用法

  • 用法如下:
js
module.updatePublishMediaStream({
  params:{
  },
  //成功执行的函数
  success: (res) => {
    let data = res.data;
    console.log(data)
  },
  //失败执行的函数
  fail: (res) => {
    console.log(res)
  },
  //接口调用完成返回函数,不管成功还是失败都会返回
  complete: (res) => {
    // console.log(res)
  }
})
js
module.updatePublishMediaStream({
  params:{
  },
  //成功执行的函数
  success: (res) => {
    const data = res.data;
    console.log(data)
  },
  //失败执行的函数
  fail: (res) => {
    console.log(res)
  },
  //接口调用完成返回函数,不管成功还是失败都会返回
  // complete: (res) => {
  //   console.log(res)
  // }
} as LevenOptions)
  • 参数说明
    参数名参数类型是否必填默认值参数描述
    paramsObject参数配置
    params.taskIdObject通过回调 onStartPublishMediaStream 带给您后台启动的任务标识(即 taskId)
    params.configObject媒体流转码配置参数
    params.config.audioMixUserListObject[]指定转码流中的每一路输入音频的信息
    该字段是一个 user 类型的数组,数组中的每一个元素都用来代表每一路输入音频的信息。
    用户信息支持不填写(即 audioMixUserList 为空)。此时若设置了encoderParam中音频相关编码输出参数,TRTC 后台服务器将自动将所有主播的音频混合输出(当前仅支持最高 16 路音视频输入)。
    params.config.audioMixUserList.userIdString用户标识,当前用户的 userId,相当于用户名,使用 UTF-8 编码
    params.config.audioMixUserList.intRoomIdInteger数字房间号
    params.config.audioMixUserList.strRoomIdString字符串房间号
    params.config.backgroundColorString指定混合画面的底色颜色
    params.config.backgroundImageString指定混合画面的背景图 URL,腾讯云的后台服务器会将该 URL 地址指定的图片混合到最终的画面中
    默认值:空值,即不设置背景图片。
    【特别说明】
    URL 链接长度限制为 512 字节。图片大小限制不超过 2MB。
    图片格式支持 png、jpg、jpeg、bmp 格式,推荐使用 png 格式的半透明图片作为背景图。
    params.config.videoLayoutListObject[]指定混合画面中的每一路视频画面的位置、大小、图层以及流类型等信息。
    params.config.videoLayoutList.xInteger指定该路画面的 x 坐标(单位:像素)
    params.config.videoLayoutList.fixedVideoUserObject[]参与转码的用户信息
    用户信息 支持不填写(即 userId、intRoomId 和 strRoomId 均不填写)。此时当发起混流的房间中有主播上行音视频数据时,TRTC 后台服务器将自动将对应主播音视频填充到您指定的布局中。
    params.config.videoLayoutList.fixedVideoUser.userIdString用户标识,当前用户的 userId,相当于用户名,使用 UTF-8 编码
    params.config.videoLayoutList.fixedVideoUser.intRoomIdInteger数字房间号
    params.config.videoLayoutList.fixedVideoUser.strRoomIdString字符串房间号
    params.config.videoLayoutList.fixedVideoStreamTypeString指定该路画面是主路画面TRTC_VIDEO_STREAM_TYPE_BIG 还是辅路画面TRTC_VIDEO_STREAM_TYPE_SUB
    params.config.videoLayoutList.heightInteger指定该路画面的高度(单位:像素)
    params.config.videoLayoutList.widthInteger指定该路画面的宽度(单位:像素)
    params.config.videoLayoutList.backgroundColorString指定混合画面的底色颜色
    params.config.videoLayoutList.fillModeString画面填充模式,可选值:
    TRTC_VIDEO_RENDER_MODE_FILL:填充模式:即将画面内容居中等比缩放以充满整个显示区域,超出显示区域的部分将会被裁剪掉,此模式下画面可能不完整
    TRTC_VIDEO_RENDER_MODE_FIT:适应模式:即按画面长边进行缩放以适应显示区域,短边部分会被填充为黑色,此模式下图像完整但可能留有黑边。
    TRTC_VIDEO_RENDER_MODE_SCALE_FILL:缩放填充模式:即无论画面的宽高比,都会被拉伸或压缩以完全填充显示区域,此模式下画面宽高比可能会被改变,导致渲染画面变形
    params.config.videoLayoutList.placeHolderImageString占位图 URL,即当指定用户暂时仅上行音频时,腾讯云的后台服务器会将该 URL 地址指定的图片混合到最终的画面中
    params.config.videoLayoutList.yInteger指定该路画面的 y 坐标(单位:像素)
    params.config.videoLayoutList.zOrderInteger指定该路画面的层级(取值范围:0 - 15,不可重复)
    params.encoderParamObject媒体流编码输出参数
    params.encoderParam.audioEncodedChannelNumInteger指定媒体发布流的目标音频声道数
    params.encoderParam.audioEncodedKbpsInteger指定媒体发布流的目标音频码率
    默认值:50kbps,取值范围是 [32,192]
    params.encoderParam.audioEncodedCodecTypeInteger指定媒体发布流的目标音频编码类型
    默认值:0,代表 LC-AAC。可设定的数值只有三个数字:0 - LC-AAC,1 - HE-AAC,2 - HE-AACv2
    HE-AAC 和 HE-AACv2 支持的输出流音频采样率范围为[48000, 44100, 32000, 24000, 16000]
    当音频编码设置为 HE-AACv2 时,只支持输出流音频声道数为双声道
    params.encoderParam.videoEncodedFPSInteger指定媒体发布流的目标视频帧率
    推荐值:20fps,取值范围是 (0,30]
    params.encoderParam.videoSeiParamsString混流 SEI 参数,默认不填写,参数以 json 字符串形式传入,参考内容
    params.encoderParam.audioEncodedSampleRateInteger定媒体发布流的目标音频采样率
    默认值:48000Hz。取值为 [48000, 44100, 32000, 24000, 16000, 8000],单位是 Hz
    params.encoderParam.videoEncodedCodecTypeInteger指定媒体发布流的目标视频编码类型
    默认值:0,代表 H264。可设定的数值只有两个数字:0 - H264,1 - H265
    params.encoderParam.videoEncodedGOPInteger指定媒体发布流的目标视频关键帧间隔(GOP)
    推荐值:3,单位为秒,取值范围是 [1,5]
    params.encoderParam.videoEncodedHeightInteger指定媒体发布流的目标分辨率(高度)
    单位:像素值,推荐值:640,如果您只混合音频流,请将 width 和 height 均设置为 0,否则混流转码后的直播流中会有黑色背景
    params.encoderParam.videoEncodedKbpsInteger指定媒体发布流的目标视频码率,如果填 0,TRTC 会根据 videoEncodedWidthvideoEncodedHeight 估算出一个合理的码率值
    params.encoderParam.videoEncodedWidthInteger指定媒体发布流的目标分辨率(宽度)
    单位:像素值,推荐值:368,如果您只混合音频流,请将 width 和 height 均设置为 0,否则混流转码后的直播流中会有黑色背景
    params.targetObject媒体流发布的目标地址
    params.target.cdnUrlListObject[]发布至腾讯或者第三方直播服务商的推流地址(RTMP 格式)
    若您的 mode 选择为 TRTC_PublishMixStream_ToRoom,此时您不需要设置该参数
    params.target.cdnUrlList.rtmpUrlString指定该路音视频流在腾讯或者第三方直播服务商的推流地址(RTMP 格式)
    params.target.cdnUrlList.isInternalLineBooleantrue指定该路音视频流是否发布至腾讯云
    params.target.modeString媒体流发布模式,可选值
    params.target.mixStreamIdentityObject回推房间机器人信息
    params.config.mixStreamIdentity.userIdString用户标识,当前用户的 userId,相当于用户名,使用 UTF-8 编码
    params.config.mixStreamIdentity.intRoomIdInteger数字房间号
    params.config.mixStreamIdentity.strRoomIdString字符串房间号
    successFunction执行成功的函数
    failFunction执行失败的函数
    completeFunction执行完成的函数,不管成功还是失败都会执行

媒体流发布模式说明

  • TRTC_PublishMode_Unknown:未定义
  • TRTC_PublishBigStream_ToCdn:您可以通过设置该参数将您房间内的主路流TRTC_VIDEO_STREAM_TYPE_BIG发布到腾讯或者第三方直播 CDN 服务商(仅支持标准 RTMP 协议)
  • TRTC_PublishSubStream_ToCdn:您可以通过设置该参数将您房间内的辅路流TRTC_VIDEO_STREAM_TYPE_SUB发布到腾讯或者第三方直播 CDN 服务商(仅支持标准 RTMP 协议)
  • TRTC_PublishMixStream_ToCdn:您可以通过设置该参数,配合编码输出参数 (encoderParam) 和混流转码参数 (config),将您指定的多路音视频流进行转码并发布到腾讯或者第三方直播 CDN 服务商(仅支持标准 RTMP 协议)。
  • TRTC_PublishMixStream_ToRoom:您可以通过设置该参数,配合媒体流编码输出参数 (encoderParam) 和混流转码参数 (config),将您指定的多路音视频流进行转码并发布到您指定的房间中。通过 target 中的 user 进行指定回推房间的机器人信息。

回调

  • 示例
json
{
"data": { },
"message": "",
"code": 0
}
  • 回调说明:
    参数名参数类型参数描述
    messageString消息提示
    dataObject数据对象
    codeInteger返回类型,0.成功,其他:失败