TXLivePusher

立即使用

推流

美颜

音效

设备

概述

摄像头推流,是指采集手机摄像头的画面以及麦克风的声音,进行编码之后再推送到直播云平台上。腾讯云 LiteAVSDK 通过 V2TXLivePusher 接口提供摄像头推流能力。TXLivePusher 模块封装了腾讯云直播服务,详情可参考产品概述

模块配置

App 切到后台需申请后台运行权限,config.xml 配置如下

<preference name="backgroundMode" value="audio"/>

需要先从腾讯云平台获取 LicenseUrl 和 key, 参考腾讯官方申请说明。 免费申请的license(基础版,有效期14天),体验测试,有效期具体请查看。当您的测试License过期了,您需要进入 点播控制台 点击购买正式License。

关于AVM方式

本模块支持 AVM 方式打开。通过 AVM 标签方式打开的模块,在 js 代码中需要通过 document.getElementById 的形式获取该模块实例对象然后进行其它逻辑的操作。否则会产生莫名其妙的问题。

该模块同时也支持 api.require 方式调用,通过 configPreview 接口相当于 AVM 的标签打开了一个视频播放区域的 frame(view)模块,用户点击全屏按钮后,模块自动代码一个 window 来全屏播放视频。

模块接口

configPreview

配置直播推流预览视图。

注意:本接口仅支持引擎2.0方式调用。引擎3.0上可直接通过 mo-txlivepusher 标签配置使用播放器。

configPreview({params})

params

rect:

  • 类型:JSON 类型
  • 描述:(可选项)推流预览区域的位置及大小
  • 内部字段:
{
    x: 0,        //(可选项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
    y: 0,        //(可选项)数字类型;模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
    w:300,       //(可选项)数字类型;模块宽度(相对于所属的 Window 或 Frame;默认:100%
    h:600        //(可选项)数字类型;模块高度(相对于所属的 Window 或 Frame;默认:100%
}

fixedOn:

  • 类型:字符串类型
  • 描述:(可选项)模块添加到指定 frame 的名字(只指 frame,传 window 无效)
  • 默认:预览窗口依附于当前 window

fixed:

  • 类型:布尔
  • 描述:(可选项)预览窗口是否随所属 window 或 frame 滚动
  • 默认值:true(不随之滚动)

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.configPreview({
  rect:{
    x:,
    y:,
    w:,
    h:
  },
  fixedOn:'',
  fixed:false
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

resizePreview

重设预览区域的位置和大小

注意:本接口仅对 configPreview 打开的播放器有效

resizePreview({params})

params

rect:

  • 类型:JSON 类型
  • 描述:(可选项)预览窗口的位置及大小
  • 内部字段:
{
    x: 0,        //(可选项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:原x坐标
    y: 0,        //(可选项)数字类型;模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:原y坐标
    w:300,       //(可选项)数字类型;模块宽度(相对于所属的 Window 或 Frame;默认:原宽度
    h:600        //(可选项)数字类型;模块高度(相对于所属的 Window 或 Frame;默认:原高度
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.resizePreview({
  rect:{
    x:,
    y:,
    w:,
    h:
  }
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

hidePreview

隐藏预览区域的 frame

hidePreview()

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.hidePreview()

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

showPreview

恢复显示预览区域的 frame

showPreview()

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.showPreview()

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setLicence

设置验证

setLicence({params})

params

licenceURL:

  • 类型:字符串
  • 描述:腾讯直播平台申请的 url

licenceKey:

  • 类型:字符串
  • 描述:腾讯直播平台申请的 key

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setLicence({
  licenceURL:'',
  licenceKey:''
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

initPusher

初始化播放器

initPusher({params})

params

liveMode:

  • 类型:字符串
  • 描述:(可选项)直播模式,详情参考腾讯云论坛
  • 默认:RTMP
  • 取值范围:
    • RTMP:
    • RTC:

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.initPusher({
  liveMode:'RTMP'
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

closePusher

关闭推流器

closePusher()

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.closePusher()

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

startPreview

开启预览

startPreview(callback(ret));

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.startPreview(function(ret) {
    if (ret) {
        api.alert({msg:JSON.stringify(ret)});
    }
});

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

startCamera

打开本地摄像头。

startVirtualCamera,startCamera,startScreenCapture,同一 Pusher 实例下,仅有一个能上行,三者为覆盖关系。例如先调用 startCamera,后调用 startVirtualCamera。此时表现为暂停摄像头推流,开启图片推流

startCamera({params},callback(ret))

params

frontCamera:

  • 类型:布尔
  • 描述:(可选项)是否为前置摄像头
  • 默认:true

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.startCamera({
  frontCamera:true
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setRenderMirror

设置本地摄像头预览镜像。

本地摄像头分为前置摄像头和后置摄像头,系统默认情况下,是前置摄像头镜像,后置摄像头不镜像,这里可以修改前置后置摄像头的默认镜像类型。

setRenderMirror({params},callback(ret))

params

mirrorType:

  • 类型:字符串
  • 描述:(可选项)镜像类型
  • 默认:auto
  • 取值范围:
    • auto:系统默认镜像类型,前置摄像头镜像,后置摄像头不镜像
    • enable:前置摄像头和后置摄像头,都切换为镜像模式
    • disable:前置摄像头和后置摄像头,都切换为非镜像模式

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setRenderMirror({
  mirrorType:'auto'
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setEncoderMirror

设置视频编码镜像。编码镜像只影响观众端看到的视频效果。

setEncoderMirror({params},callback(ret))

params

mirror:

  • 类型:布尔
  • 描述:(可选项)是否镜像
  • 默认:false

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setEncoderMirror({
  mirror:false
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setRenderRotation

设置本地摄像头预览画面的旋转角度。只旋转本地预览画面,不影响推流出去的画面。

setRenderRotation({params},callback(ret))

params

rotation:

  • 类型:字符串
  • 描述:(可选项)旋转角度
  • 默认:0
  • 取值范围:
    • 0:不旋转
    • 90:顺时针旋转90度
    • 180:顺时针旋转180度
    • 270:顺时针旋转270度

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setRenderRotation({
  rotation:90
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

stopCamera

关闭本地摄像头。

stopCamera(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.stopCamera(function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

startMicrophone

打开麦克风。

startMicrophone(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.startMicrophone(function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

stopMicrophone

关闭麦克风。

stopMicrophone(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.stopMicrophone(function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

startVirtualCamera

开启图片推流。

startVirtualCamera,startCamera,startScreenCapture,同一 Pusher 实例下,仅有一个能上行,三者为覆盖关系。例如先调用 startCamera,后调用 startVirtualCamera。此时表现为暂停摄像头推流,开启图片推流

startVirtualCamera({params},callback(ret))

params

virtualImage:

  • 类型:字符串
  • 描述:图片路径,要求本地路径(fs://、widget://)

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.startVirtualCamera({
  virtualImage:''
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

stopVirtualCamera

关闭图片推流。

stopVirtualCamera(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.stopVirtualCamera(function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

pauseAudio

静音本地音频。

静音本地音频后,SDK 不会继续采集麦克风的声音与 stopMicrophone 不同之处在于 pauseAudio 并不会停止发送音频数据,而是继续发送码率极低的静音包由于 MP4 等视频文件格式,对于音频的连续性是要求很高的,使用 stopMicrophone 会导致录制出的 MP4 不易播放因此在对录制质量要求很高的场景中,建议选择 pauseAudio,从而录制出兼容性更好的 MP4 文件。

pauseAudio(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.pauseAudio(function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

resumeAudio

取消静音本地音频。

resumeAudio(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.resumeAudio(function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

pauseVideo

暂停推流器的视频流。

pauseVideo(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.pauseVideo(function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

resumeVideo

恢复推流器的视频流。

resumeVideo(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.resumeVideo(function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

startPush

开始音视频数据推流。url 推流的目标地址,支持任意推流服务端。

startPush({params},callback(ret))

params

url:

  • 类型:字符串
  • 描述:推流的目标地址

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.startPush({
  url:''
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

stopPush

停止推送音视频数据。

stopPush(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.stopPush(function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

isPushing

是否正在推流

isPushing(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    state:    //数字类型;1正在推流,0已经停止推流
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.isPushing(function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setAudioQuality

设置推流音频质量。

setAudioQuality({params},callback(ret))

params

audioQuality:

  • 类型:字符串
  • 描述:(可选项)音频质量
  • 默认:default
    • default: 通用
    • speech:语音
    • music:音乐

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setAudioQuality({
  audioQuality:''
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setVideoQuality

设置推流视频分辨率,以及宽高比模式(横屏 / 竖屏)。

setVideoQuality({params},callback(ret))

params

mode:

  • 类型:字符串
  • 描述:(可选项)视频宽高比模式(横屏或者竖屏模式)
  • 默认:portrait
    • landscape: 横屏模式
    • portrait:竖屏模式

resolution:

  • 类型:字符串
  • 描述:(可选项)视频分辨率
  • 默认:default
    • 270x270:
    • 480x480:
    • 320x240:
    • 480x360:
    • 640x480:
    • 320x180:
    • 480x270:
    • 640x360:
    • 960x540:
    • 1280x720:
    • 1920x1080:

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setVideoQuality({
  resolution:'',
  mode:'portrait'
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

snapshot

获取截图

snapshot(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 描述:返回值
{
   status:,          //数字类型;状态码,详情参考 V2TXLiveCode
   path:             //字符串类型;截图路径
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.snapshot(function(ret){
    alert(JSON.stringify(ret));
});

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setWatermark

设置推流器水印。默认情况下,水印不开启。

setWatermark({params},callback(ret))

params

watermark:

  • 类型:字符串
  • 描述:(可选项)水印图片地址,要求本地路径(fs://、widget://)
  • 默认:不传表示禁用水印

scale:

  • 类型:数字
  • 描述:(可选项)水印图片的缩放比例,取值范围为0 - 1的浮点数。
  • 默认:0

x:

  • 类型:数字
  • 描述:(可选项)水印的横坐标,取值范围为0 - 1的浮点数。
  • 默认:0

y:

  • 类型:数字

  • 描述:(可选项)水印的纵坐标,取值范围为0 - 1的浮点数。

  • 默认:0

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setWatermark({
  watermark:'',
  x:,
  y:,
  scale:0.5
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

注意:(x, y, scale) 参数设置的是水印图片相对于推流分辨率的归一化坐标。假设推流分辨率为:540 × 960,该字段设置为:(0.1,0.1,0.1),则水印的实际像素坐标为:(540 × 0.1,960 × 0.1,水印宽度 × 0.1,水印高度会被自动计算)。

enableVolumeEvaluation

启用采集音量大小提示。

enableVolumeEvaluation({params},callback(ret))

params

intervalMs:

  • 类型:数字
  • 描述:(可选项)决定了音量大小回调的触发间隔,单位为 ms,最小间隔为 100ms,如果小于等于0则会关闭回调,建议设置为 300ms。
  • 默认:300

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,仅首次回调有值,详情参考 V2TXLiveCode
    volume:    //数字类型;音量大小
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.enableVolumeEvaluation({
  intervalMs:500
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

sendSeiMessage

发送 SEI 消息

sendSeiMessage({params})

params

payloadType:

  • 类型:数字
  • 描述:(可选项)数据类型,支持 5、242。推荐填:242
  • 默认:242

data:

  • 类型:字符串
  • 描述:待发送的数据

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.sendSeiMessage({
  data:'',
  payloadType:''
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

showDebugView

显示仪表盘。

showDebugView({params})

params

showDebug:

  • 类型:数字
  • 描述:(可选项)是否显示
  • 默认:false

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.showDebugView({
  showDebug:false
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setMixTranscodingConfig

设置云端的混流转码参数。

setMixTranscodingConfig({params},callback(ret))

params

bgColor:

  • 类型:字符串
  • 描述:(可选项)背景色,只支持#,如:#000000
  • 默认:#000000

videoWidth:

  • 类型:数字
  • 描述:(可选项)最终转码后的视频分辨率的宽度。如果你是纯音频推流,请将 width × height 设为 0px × 0px,否则混流后会携带一条画布背景的视频流
  • 默认:360

videoHeight:

  • 类型:数字
  • 描述:(可选项)最终转码后的视频分辨率的高度,如果你是纯音频推流,请将 width × height 设为 0px × 0px,否则混流后会携带一条画布背景的视频流
  • 默认:640

videoBitrate:

  • 类型:数字
  • 描述:(可选项)最终转码后的视频分辨率的码率(kbps),如果填0,后台会根据 videoWidth 和 videoHeight 来估算码率
  • 默认:0

videoFramerate:

  • 类型:数字
  • 描述:(可选项)最终转码后的视频分辨率的帧率(FPS),取值范围是 (0,30]
  • 默认:15

videoGOP:

  • 类型:数字
  • 描述:(可选项)最终转码后的视频分辨率的关键帧间隔(又称为 GOP),单位为秒,取值范围是 [1,8]
  • 默认:2

bgImage:

  • 类型:字符串
  • 描述:(可选项)混合后画面的背景图
  • 默认:空,即不设置背景图

audioBitrate:

  • 类型:数字
  • 描述:(可选项)终转码后的音频码率,取值范围是 [32,192],单位:kbps
  • 默认:64

audioChannels:

  • 类型:数字
  • 描述:(可选项)终转码后的音频声道数,取值范围为 [1,2] 中的整型
  • 默认:1

audioSampleRate:

  • 类型:数字
  • 描述:(可选项)最终转码后的音频采样率,支持12000HZ、16000HZ、22050HZ、24000HZ、32000HZ、44100HZ、48000HZ
  • 默认:48000

mixStreams:

  • 类型:数组
  • 描述:(可选项)每一路子画面的位置信息
  • 默认:48000
  • 内部字段:
{
    userId:'',        //字符串类型;参与混流的 userId
    streamId:'',      //字符串类型;参与混流的 userId 所在对应的推流 streamId,不传表示当前推流 streamId
    x:,               //(可选项)数字类型;图层位置 x 坐标(绝对像素值);默认:0
    y:,               //(可选项)数字类型;图层位置 y 坐标(绝对像素值);默认:0
    width:,           //(可选项)数字类型;图层位置宽度(绝对像素值);默认:100
    height:,          //(可选项)数字类型;图层位置高度(绝对像素值);默认:100
    zOrder:,          //(可选项)数字类型;图层层次(1 - 15)不可重复;默认:1
    inputType:        //(可选项)字符串类型;该直播流的输入类型,audioVideo、video、audio;默认:audioVideo
}

outputStreamId:

  • 类型:字符串
  • 描述:(可选项)输出到 CDN 上的直播流 ID,如不设置该参数,SDK 会执行默认逻辑,即房间里的多路流会混合到该接口调用者的视频流上,也就是 A + B => A;如果设置该参数,SDK 会将房间里的多路流混合到您指定的直播流 ID 上,也就是 A + B => C。
  • 默认:空,即房间里的多路流会混合到该接口调用者的视频流上。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:    //数字类型;状态码,详情参考 V2TXLiveCode
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setMixTranscodingConfig({
  outputStreamId:''
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

addEventListener

添加推流事件的监听

addEventListener({params});

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    eventType:''      //字符串类型;交互事件类型;
                      //onError:直播推流器错误通知,推流器出现错误时,会回调该通知
                      //onWarning:直播推流器警告通知
                      //onCaptureFirstAudioFrame:首帧音频采集完成的回调通知
                      //onCaptureFirstVideoFrame:首帧视频采集完成的回调通知
                      //onPushStatusUpdate:推流器连接状态回调通知
                      //onStatisticsUpdate:直播推流器统计数据回调
                      //onSetMixTranscodingConfig:设置云端的混流转码参数的回调
    code:,            //数字类型;状态码,详情参考 V2TXLiveCode
    msg:              //字符串类型;错误信息
    statistics:{      //JSON对象;
       appCpu:,       //数字类型;当前 App 的 CPU 使用率(%)
       systemCpu:,    //数字类型;当前系统的 CPU 使用率(%)
       width:,        //数字类型;视频宽度
       height:        //数字类型;视频高度
       fps:           //数字类型;帧率(fps)
       videoBitrate:  //数字类型;视频码率(Kbps)
       audioBitrate:  //数字类型;音频码率(Kbps)
    }
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.addEventListener(function(ret) {
    if (ret) {
        api.alert({msg:JSON.stringify(ret)});
    }
});

可用性

iOS 系统 ,Android 系统

可提供的 1.0.0 及更高版本

setBeautyStyle

设置美颜(磨皮)算法,TRTC 内置多种不同的磨皮算法

setBeautyStyle({params})

params

style:

  • 类型:字符串
  • 描述:(可选项)美颜类型
  • 默认:smooth
  • 取值范围:
    • smooth:光滑,算法比较激进,磨皮效果比较明显,适用于秀场直播。
    • nature:自然,算法更多地保留了面部细节,磨皮效果更加自然,适用于绝大多数直播场景。
    • pitu:优图,由优图实验室提供,磨皮效果介于光滑和自然之间,比光滑保留更多皮肤细节,比自然磨皮程度更高。

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setBeautyStyle({
  style:'smooth'
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setBeautyLevel

设置美颜级别

setBeautyLevel({params})

params

level:

  • 类型:数字
  • 描述:(可选项)美颜级别,取值范围0 - 9,0表示关闭,9表示效果最明显。
  • 默认:0

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setBeautyLevel({
  level:5
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setWhitenessLevel

设置美白级别

setWhitenessLevel({params})

params

level:

  • 类型:数字
  • 描述:(可选项)美白级别,取值范围0 - 9,0表示关闭,9表示效果最明显。
  • 默认:0

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setWhitenessLevel({
  level:5
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

enableSharpnessEnhancement

开启清晰度增强

enableSharpnessEnhancement({params})

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否开启
  • 默认:true

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.enableSharpnessEnhancement({
  enable:false
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setRuddyLevel

设置红润级别

setRuddyLevel({params})

params

level:

  • 类型:数字
  • 描述:(可选项)红润级别,取值范围0 - 9,0表示关闭,9表示效果最明显。
  • 默认:0

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setRuddyLevel({
  level:5
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setFilter

设置色彩滤镜效果。 色彩滤镜,是一副包含色彩映射关系的颜色查找表图片,您可以在我们提供的官方 Demo 中找到预先准备好的几张滤镜图片。SDK 会根据该查找表中的映射关系,对摄像头采集出的原始视频画面进行二次处理,以达到预期的滤镜效果。

setFilter({params}))

params

virtualImage:

  • 类型:字符串
  • 描述:包含色彩映射关系的颜色查找表图片路径,必须是 png 格式。

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setFilter({
  virtualImage:'dsfa'
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setFilterStrength

设置色彩滤镜的强度

该数值越高,色彩滤镜的作用强度越明显,经过滤镜处理后的视频画面跟原画面的颜色差异越大。 我默认的滤镜浓度是0.5,如果您觉得默认的滤镜效果不明显,可以设置为 0.5 以上的数字,最大值为1。

setFilterStrength({params})

params

strength:

  • 类型:数字
  • 描述:从0到1,数值越大滤镜效果越明显,
  • 默认:0.5

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setFilterStrength({
  strength:0.5
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

enableVoiceEarMonitor

开启耳返,仅在主播佩戴耳机时才能开启此特效,同时请您提示主播佩戴有线耳机。

主播开启耳返后,可以在耳机里听到麦克风采集到的自己发出的声音,该特效适用于主播唱歌的应用场景中。需要您注意的是,由于蓝牙耳机的硬件延迟非常高,所以在主播佩戴蓝牙耳机时无法开启此特效,请尽量在用户界面上提示主播佩戴有线耳机。 同时也需要注意,并非所有的手机开启此特效后都能达到优秀的耳返效果,我们已经对部分耳返效果不佳的手机屏蔽了该特效。

enableVoiceEarMonitor({params})

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否开启
  • 默认:true

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.enableVoiceEarMonitor({
  enable:false
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setVoiceEarMonitorVolume

设置耳返音量,通过该接口您可以设置耳返特效中声音的音量大小。

setVoiceEarMonitorVolume({params})

params

volume:

  • 类型:数字
  • 描述:(可选项)音量大小,取值范围为0 - 100
  • 默认:100
  • 注意:如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setVoiceEarMonitorVolume({
  volume:50
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setVoiceReverbType

设置人声的混响效果,通过该接口您可以设置人声的混响效果。

setVoiceReverbType({params})

params

reverb:

  • 类型:字符串
  • 描述:(可选项)混响效果
  • 默认:disable
  • 取值范围:
    • disable:
    • KTV:
    • smallRoom:
    • greatHall:
    • deepVoice:
    • loudVoice:
    • metallicSound:
    • magneticSound:
    • ethereal:
    • studio:
    • melodious:

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setVoiceReverbType({
  reverb:'melodious'
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setVoiceChangerType

设置人声的变声特效,通过该接口您可以设置人声的变声特效。设置的效果在退出房间后会自动失效,如果下次进房还需要对应特效,需要调用此接口再次进行设置。

setVoiceChangerType({params})

params

changer:

  • 类型:字符串
  • 描述:(可选项)混响效果
  • 默认:disable
  • 取值范围:
    • disable:
    • naughtyKid:
    • lolita:
    • uncle:
    • heavyMetal:
    • catchCold:
    • foreignAccent:
    • beast:
    • indoorsman:
    • strongCurrent:
    • heavyMachinery:
    • intangible:

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setVoiceChangerType({
  changer:'disable'
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setVoiceVolume

设置语音音量,该接口可以设置语音音量的大小,一般配合音乐音量的设置接口 setAllMusicVolume 协同使用,用于调谐语音和音乐在混音前各自的音量占比。

setVoiceVolume({params})

params

volume:

  • 类型:数字
  • 描述:(可选项)音量大小,取值范围为0 - 100
  • 默认:100
  • 注意:如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setVoiceVolume({
  volume:50
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

startPlayMusic

开始播放背景音乐。每个音乐都需要您指定具体的 ID,您可以通过该 ID 对音乐的开始、停止、音量等进行设置。

  1. 如果要多次播放同一首背景音乐,请不要每次播放都分配一个新的 ID,我们推荐使用相同的 ID。
  2. 若您希望同时播放多首不同的音乐,请为不同的音乐分配不同的 ID 进行播放。
  3. 如果使用同一个 ID 播放不同音乐,SDK 会先停止播放旧的音乐,再播放新的音乐。

startPlayMusic({params},callback(ret))

params

musicID:

  • 类型:字符串
  • 描述:音乐 ID
  • 注意:Android端只能是一串数字

path:

loopCount:

  • 类型:数字
  • 描述:(可选项)音乐循环播放的次数,取值范围为0 - 任意正整数,0表示播放音乐一次;1表示播放音乐两次;以此类推
  • 默认:0

publish:

  • 类型:布尔
  • 描述:(可选项)是否将音乐传到远端
  • 默认:false

isShortFile:

  • 类型:布尔
  • 描述:(可选项)播放的是否为短音乐文件,true:需要重复播放的短音乐文件;false:正常的音乐文件。
  • 默认:false

startTimeMS:

  • 类型:数字
  • 描述:(可选项)音乐开始播放时间点,单位:毫秒。
  • 默认:0

endTimeMS:

  • 类型:数字
  • 描述:(可选项)音乐结束播放时间点,单位毫秒,0表示播放至文件结尾。
  • 默认:0

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    eventType:    //字符串类型;交互事件类型;
                  //onStart:开始播放
                  //onProgress:正在播放
                  //onComplete:播放结束
    progressMs:,  //数字类型;当前进度,仅当 eventType 为 onProgress 时有值
    durationMs:   //数字类型;总时长,仅当 eventType 为 onProgress 时有值
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.startPlayMusic({
  musicID:'first',
  path:'fs://adfa.mp3'
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

stopPlayMusic

停止播放背景音乐

stopPlayMusic({params})

params

musicID:

  • 类型:字符串
  • 描述:音乐 ID

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.stopPlayMusic({
  musicID:'first'
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

pausePlayMusic

暂停播放背景音乐

pausePlayMusic({params}))

params

musicID:

  • 类型:字符串
  • 描述:音乐 ID

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.pausePlayMusic({
  musicID:'first'
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

resumePlayMusic

恢复播放背景音乐

resumePlayMusic({params})

params

musicID:

  • 类型:字符串
  • 描述:音乐 ID

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.resumePlayMusic({
  musicID:'first'
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setAllMusicVolume

设置所有背景音乐的本地音量和远端音量的大小,该接口可以设置所有背景音乐的本地音量和远端音量。

setAllMusicVolume({params})

params

volume:

  • 类型:数字
  • 描述:音量大小,取值范围为0 - 100,如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。
  • 默认:100

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setAllMusicVolume({
  volume:50
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setMusicPublishVolume

设置某一首背景音乐的远端音量的大小,该接口可以细粒度地控制每一首背景音乐的远端音量,也就是观众端可听到的背景音乐的音量大小。

setMusicPublishVolume({params})

params

musicID:

  • 类型:字符串
  • 描述:音乐 ID

volume:

  • 类型:数字
  • 描述:音量大小,取值范围为0 - 100,如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。
  • 默认:100

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setMusicPublishVolume({
  volume:50,
  musicID:'first'
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setMusicPlayoutVolume

设置某一首背景音乐的本地音量的大小,该接口可以细粒度地控制每一首背景音乐的本地音量,也就是主播本地可以听到的背景音乐的音量大小。

setMusicPlayoutVolume({params})

params

musicID:

  • 类型:字符串
  • 描述:音乐 ID

voluem:

  • 类型:数字
  • 描述:音量大小,取值范围为0 - 100,如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。
  • 默认:100

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setMusicPlayoutVolume({
  volume:50,
  musicID:'first'
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setMusicPitch

调整背景音乐的音调高低

setMusicPitch({params})

params

musicID:

  • 类型:字符串
  • 描述:音乐 ID

pitch:

  • 类型:数字
  • 描述:音调,范围是:[-1 ~ 1] 之间的浮点数。
  • 默认:0

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setMusicPitch({
  pitch:0,
  musicID:'first'
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setMusicSpeedRate

调整背景音乐的变速效果

setMusicSpeedRate({params})

params

musicID:

  • 类型:字符串
  • 描述:音乐 ID

speedRate:

  • 类型:数字
  • 描述:速度,范围是:[0.5 ~ 2] 之间的浮点数
  • 默认:1

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setMusicSpeedRate({
  speedRate:1,
  musicID:'first'
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

seekMusicToPosInMS

设置背景音乐的播放进度(单位:毫秒),请尽量避免过度频繁地调用该接口,因为该接口可能会再次读写音乐文件,耗时稍高。

因此,当用户拖拽音乐的播放进度条时,请在用户完成拖拽操作后再调用本接口。因为 UI 上的进度条控件往往会以很高的频率反馈用户的拖拽进度,如不做频率限制,会导致较差的用户体验。

seekMusicToPosInMS({params})

params

musicID:

  • 类型:字符串
  • 描述:音乐 ID

pts:

  • 类型:数字
  • 描述:单位: 毫秒

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.seekMusicToPosInMS({
  musidID:'first',
  pts:100
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

getMusicCurrentPosInMS

获取背景音乐的播放进度(单位:毫秒)

getMusicCurrentPosInMS({params},callback(ret))

params

musicID:

  • 类型:字符串
  • 描述:音乐 ID

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{ 
    currentPosInMS:   //数字类型;进度(单位:毫秒)
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.getMusicCurrentPosInMS({
  musicID:'first'
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

getMusicDurationInMS

获取景音乐的总时长(单位:毫秒)

getMusicDurationInMS({params},callback(ret))

params

path:

  • 类型:字符串
  • 描述:(可选项)音乐文件路径,如果 path 为空,那么返回当前正在播放的 music 时长。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{ 
    durationInMS:   //数字类型;总时长(单位:毫秒)
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.getMusicDurationInMS({
  path:'first'
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

isFrontCamera

判断当前是否为前置摄像头

isFrontCamera(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{ 
    isFrontCamera:   //布尔类型;是否为前置摄像头
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.isFrontCamera(function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

switchCamera

切换前置或后置摄像头

switchCamera({params},callback(ret))

params

frontCamera:

  • 类型:布尔
  • 描述:(可选项)是否为前置摄像头
  • 默认:false

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{ 
    state:   //数字类型;状态码
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.switchCamera({
  frontCamera:false
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

isCameraZoomSupported

查询当前摄像头是否支持缩放

isCameraZoomSupported(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{ 
    isCameraZoomSupported:   //布尔类型;是否支持
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.isCameraZoomSupported(function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

getCameraZoomMaxRatio

获取摄像头的最大缩放倍数

getCameraZoomMaxRatio(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{ 
    maxRatio:   //数字类型;最大缩放倍数
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.getCameraZoomMaxRatio(function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setCameraZoomRatio

设置摄像头的缩放倍数

setCameraZoomRatio({params},callback(ret))

params

zoomRatio:

  • 类型:数字
  • 描述:(可选项)取值范围1 - 5,取值为1表示最远视角(正常镜头),取值为5表示最近视角(放大镜头)。
  • 默认:1

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{ 
    state:   //数字类型;状态码
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setCameraZoomRatio({
  zoomRatio:1
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

isAutoFocusEnabled

查询是否支持自动识别人脸位置

isAutoFocusEnabled(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{ 
    enabled:   //布尔类型;是否支持
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.isAutoFocusEnabled(function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

enableCameraAutoFocus

开启自动对焦功能,开启后,SDK 会自动检测画面中的人脸位置,并将摄像头的焦点始终对焦在人脸位置上。

enableCameraAutoFocus({params},callback(ret))

params

enabled:

  • 类型:布尔
  • 描述:(可选项)是否开启
  • 默认:false

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{ 
    state:   //数字类型;状态码
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.enableCameraAutoFocus({
  enabled:false
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setCameraFocusPosition

设置摄像头的对焦位置,使用该接口的前提是先通过 link enableCameraAutoFocus 关闭自动对焦功能。

您可以通过该接口实现如下交互:

  1. 在本地摄像头的预览画面上,允许用户单击操作。
  2. 在用户的单击位置显示一个矩形方框,以示摄像头会在此处对焦。
  3. 随后将用户点击位置的坐标通过本接口传递给 SDK,之后 SDK 会操控摄像头按照用户期望的位置进行对焦。

setCameraFocusPosition({params},callback(ret))

params

x:

  • 类型:数字
  • 描述:(可选项)焦点坐标
  • 默认:100

y:

  • 类型:数字
  • 描述:(可选项)焦点坐标
  • 默认:100

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{ 
    state:   //数字类型;状态码
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setCameraFocusPosition({
  x:1,
  y:2
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

isCameraTorchSupported

查询是否支持开启闪光灯

isCameraTorchSupported(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{ 
    supported:   //布尔类型;是否支持
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.isCameraTorchSupported(function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统不支持

可提供的 1.0.0 及更高版本

setAudioRoute

设置音频路由,手机有两个音频播放设备:一个是位于手机顶部的听筒,一个是位于手机底部的立体声扬声器。设置音频路由为听筒时,声音比较小,只有将耳朵凑近才能听清楚,隐私性较好,适合用于接听电话。设置音频路由为扬声器时,声音比较大,不用将手机贴脸也能听清,因此可以实现“免提”的功能。

setAudioRoute({params},callback(ret))

params

audioRoute:

  • 类型:字符串
  • 描述:(可选项)扬声器还是听筒。
  • 默认:speakerphone
    • speakerphone:使用扬声器播放(即“免提”),扬声器位于手机底部,声音偏大,适合外放音乐。
    • earpiece:使用听筒播放,听筒位于手机顶部,声音偏小,适合需要保护隐私的通话场景。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{ 
    state:   //数字类型;状态码
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setAudioRoute({
  audioRoute:'speakerphone'
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

setSystemVolumeType

设置系统音量类型

setSystemVolumeType({params},callback(ret))

params

volumeType:

  • 类型:字符串
  • 描述:(可选项)扬声器还是听筒。
  • 默认:auto
    • auto:自动切换模式:也被称为“麦上通话,麦下媒体”,即主播上麦时使用通话音量,观众不上麦则使用媒体音量,适合在线直播场景。
    • media:全程媒体音量:通话全程使用媒体音量,并不是非常常用的音量类型,适用于对音质要求比较苛刻的音乐场景中。如果您的用户大都使用外接设备(比如外接声卡)为主,可以使用该模式,否则请慎用。
    • VOIP:全程通话音量:该方案的优势在于用户在上下麦时音频模块无需切换工作模式,可以做到无缝上下麦,适合于用户需要频繁上下麦的应用场景。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{ 
    state:   //数字类型;状态码
}

示例代码

var TXLivePusher = api.require('TXLivePusher');
TXLivePusher.setSystemVolumeType({
  volumeType:'auto'
},function(ret){
   api.alert({msg:JSON.stringify(ret)});
})

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

直播错误码

/// 没有错误
V2TXLIVE_OK = 0,

/// 暂未归类的通用错误
V2TXLIVE_ERROR_FAILED = -1,

/// 调用 API 时,传入的参数不合法
V2TXLIVE_ERROR_INVALID_PARAMETER = -2,

/// API 调用被拒绝
V2TXLIVE_ERROR_REFUSED = -3,

/// 当前 API 不支持调用
V2TXLIVE_ERROR_NOT_SUPPORTED = -4,

/// license 不合法,调用失败
V2TXLIVE_ERROR_INVALID_LICENSE = -5,

/// 请求服务器超时
V2TXLIVE_ERROR_REQUEST_TIMEOUT = -6,

/// 服务器无法处理您的请求
V2TXLIVE_ERROR_SERVER_PROCESS_FAILED = -7,

/////////////////////////////////////////////////////////////////////////////////
//
//      网络相关的警告码
//
/////////////////////////////////////////////////////////////////////////////////

/// 网络状况不佳:上行带宽太小,上传数据受阻
V2TXLIVE_WARNING_NETWORK_BUSY = 1101,

/// 当前视频播放出现卡顿
V2TXLIVE_WARNING_VIDEO_BLOCK = 2105,

/////////////////////////////////////////////////////////////////////////////////
//
//             摄像头相关的警告码
//
/////////////////////////////////////////////////////////////////////////////////

/// 摄像头打开失败
V2TXLIVE_WARNING_CAMERA_START_FAILED = -1301,

/// 摄像头正在被占用中,可尝试打开其他摄像头
V2TXLIVE_WARNING_CAMERA_OCCUPIED = -1316,

/// 摄像头设备未授权,通常在移动设备出现,可能是权限被用户拒绝了
V2TXLIVE_WARNING_CAMERA_NO_PERMISSION = -1314,

/////////////////////////////////////////////////////////////////////////////////
//
//             麦克风相关的警告码
//
/////////////////////////////////////////////////////////////////////////////////

/// 麦克风打开失败
V2TXLIVE_WARNING_MICROPHONE_START_FAILED = -1302,

/// 麦克风正在被占用中,例如移动设备正在通话时,打开麦克风会失败
V2TXLIVE_WARNING_MICROPHONE_OCCUPIED = -1319,

/// 麦克风设备未授权,通常在移动设备出现,可能是权限被用户拒绝了
V2TXLIVE_WARNING_MICROPHONE_NO_PERMISSION = -1317,

/////////////////////////////////////////////////////////////////////////////////
//
//             屏幕分享相关警告码
//
/////////////////////////////////////////////////////////////////////////////////

/// 当前系统不支持屏幕分享
V2TXLIVE_WARNING_SCREEN_CAPTURE_NOT_SUPPORTED = -1309,

/// 开始录屏失败,如果在移动设备出现,可能是权限被用户拒绝了
V2TXLIVE_WARNING_SCREEN_CAPTURE_START_FAILED = -1308,

/// 录屏被系统中断
V2TXLIVE_WARNING_SCREEN_CAPTURE_INTERRUPTED = -7001,