该插件可以实现腾讯云直播推流服务,支持直播推流、暂停、继续、停止等基本控制,可以设置基础美颜,也可以支持背景音乐播放。
该插件可以实现腾讯云直播拉流播放,支持画面调整、播放控制、消息接收、屏幕截图、截流录制、清晰度无缝切换和直播回看。
扫码获取技术支持,引导您跑通Demo和插件接入:
技术支持微信号: ruanyunkeji006
论坛中有我们的使用教程以及示例代码,您可以Demo进入查看详情,联系上方我们技术支持协助接入。
## 接口列表接口列表 | 功能 |
---|---|
init | 初始化 |
setPusherListener | 设置推流监听 |
removePusherListener | 移除推流监听器 |
destroy | 销毁 |
接口列表 | 功能 |
---|---|
startPreview | 开启摄像头预览 |
startPush | 摄像头推流 |
pausePush | 暂停推流 |
resumePush | 继续推流 |
stopPush | 停止推流 |
stopPreview | 关闭摄像头预览 |
接口列表 | 功能 |
---|---|
isPushing | 是否正在推流 |
setVideoQuality | 设置观众端画面清晰度 |
setRenderRotation | 设置主播画面方向 |
setMirror | 设置镜像 |
接口列表 | 功能 |
---|---|
setBeautyStyle | 设置美颜类型 |
setBeautyLevel | 设置美颜级别 |
setWhitenessLevel | 设置美白级别 |
setRuddyLevel | 设置红润级别 |
enableSharpnessEnhancement | 设置清晰度增强 |
setFilter | 设置指定素材滤镜特效 |
setFilterStrength | 设置滤镜浓度 |
接口列表 | 功能 |
---|---|
isFrontCamera | 是否为前置摄像头 |
switchCamera | 切换前后摄像头 |
toggleTorch | 打开或者关闭闪光灯 |
getMaxZoom | 获取最大焦距 |
setZoom | 设置焦距 |
setFocusPosition | 设置手动对焦位置 |
setExposureCompensation | 调整曝光比例 |
接口列表 | 功能 |
---|---|
setMute | 设置静音 |
enableVoiceEarMonitor | 设置耳返 |
setVoiceReverbType | 设置人声的混响效果 |
setVoiceChangerType | 设置人声的变声特效 |
setVoiceCaptureVolume | 设置麦克风采集人声的音量 |
setMusicListener | 设置音乐监听器 |
removeMusicListener | 移除音乐监听器 |
startPlayMusic | 开始播放背景音乐 |
stopPlayMusic | 停止播放背景音乐 |
pausePlayMusic | 暂停播放背景音乐 |
resumePlayMusic | 恢复播放背景音乐 |
setMusicPublishVolume | 设置背景音乐的远端音量大小 |
setMusicPlayoutVolume | 设置背景音乐的本地音量大小 |
setAllMusicVolume | 设置所有音乐音量高低 |
setMusicPitch | 调整背景音乐音调的高低 |
setMusicSpeedRate | 调整背景音乐的变速效果 |
getMusicCurrentPosInMS | 获取背景音乐当前的播放进度 |
seekMusicToPosInMS | 设置背景音乐播放进度 |
getMusicDurationInMS | 获取背景音乐文件的总时长 |
enableVolumeEvaluation | 启用麦克风采集音量大小评估 |
setVolumeEvaluationListener | 设置麦克风采集音量大小回调 |
removeVolumeEvaluationListener | 移除麦克风采集音量大小回调 |
接口列表 | 功能 |
---|---|
setRecordListener | 设置录制监听器 |
removeRecordListener | 移除录制监听器 |
startRecord | 开始录制 |
stopRecord | 停止录制 |
snapshot | 截图 |
接口列表 | 功能 |
---|---|
sendMessageEx | 发送SEI消息 |
初始化推流
init({params}, function(ret, err))
licence:
{
key: '00e374exxxx60e8cbb',
url: 'http://licensxxxxiveSDK.licence'
}
key:
url:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePusher.init({
licence: {
'url': '00e37xxxxx8cbb',
'key': 'http://license.vod2.mxxxxxx2eaa1/TXLiveSDK.licence'
}
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置推流监听
setPusherEventListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
or
{
eventType: 'onPushBegin'
}
eventType:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
##代码示例
livePusher.setPusherEventListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
移除推流监听器
removePusherEventListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.removePusherEventListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
销毁
destroy({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePusher.destroy({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
开启摄像头预览
startPreview({params}, function(ret, err))
rect:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePusher.startPreview({
rect: {
x: 0,
y: 0,
w: api.winWidth / 2,
h: api.winHeight / 2
}
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
摄像头推流
startPush({params}, function(ret, err))
注意:
-5 返回码代表 license 校验失败,需要 license 校验通过才能工作。
rtmpUrl:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
code:
livePusher.startPush({
rtmpUrl: 'rtmp://xxx.xxxx.xxx/xxx'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
暂停摄像头采集并进入垫片推流状态
pausePush({}, function(ret, err))
SDK 会暂时停止摄像头(或屏幕)采集,并使用 TXLivePushConfig.pauseImg 中指定的图片作为替代图像进行推流,也就是所谓的“垫片”。 这项功能常用于 App 被切到后台运行的场景,尤其是在 iOS 系统中,当 App 切到后台以后,操作系统不会再允许该 App 继续使用摄像头。 此时就可以通过调用 pausePush() 进入垫片状态。
对于绝大多数推流服务器而言,如果超过一定时间不推视频数据,服务器会断开当前的推流链接。
注意:
请注意调用顺序:startPush => ( pausePush => resumePush ) => stopPush(),错误的调用顺序会导致 SDK 表现异常。
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePusher.pausePush({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
恢复 RTMP 推流
resumePush({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePusher.resumePush({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
停止 RTMP 推流
stopPush({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePusher.stopPush({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
停止摄像头预览
stopPreview({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePusher.stopPreview({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
查询是否正在推流
isPushing({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
isPushing:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.isPushing({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统
可提供的1.0.0及更高版本
设置视频编码质量
setVideoQuality({params}, function(ret))
推荐设置: 秀场直播mode => 1, adjustBitrate => false。
mode:
adjustBitrate:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePusher.setVideoQuality({
mode: 0
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置本地摄像头预览画面的旋转方向
setRenderRotation({params}, function(ret, err))
该接口仅能够改变主播本地预览画面的方向,而不会改变观众端的画面效果。 如果希望改变观众端看到的视频画面的方向,比如原来是540x960,希望变成960x540,则可以通过设置 init() 中的 homeOrientation 来实现。
rotation:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePusher.setRenderRotation({
rotation: 0
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置视频镜像效果
setMirror({params}, function(ret, err))
由于前置摄像头采集的画面是取自手机的观察视角,如果将采集到的画面直接展示给观众,是完全没有问题的。 但如果将采集到的画面也直接显示给主播,则会跟主播照镜子时的体验完全相反,会让主播感觉到很奇怪。 因此,SDK 会默认开启本地摄像头预览画面的镜像效果,让主播直播时跟照镜子时保持一个体验效果。
setMirror 所影响的则是观众端看到的视频效果,如果想要保持观众端看到的效果跟主播端保持一致,需要开启镜像; 如果想要让观众端看到正常的未经处理过的画面(比如主播弹吉他的时候有类似需求),则可以关闭镜像。
isMirror:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setMirror({
isMirror: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置美颜(磨皮)算法
setBeautyStyle({params}, function(ret, err))
SDK 内部集成了两套风格不同的磨皮算法,一套我们取名叫“光滑”,适用于美女秀场,效果比较明显。 另一套我们取名“自然”,磨皮算法更多地保留了面部细节,主观感受上会更加自然。
mode:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
##代码示例
livePusher.setBeautyStyle({
mode: 0
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置美颜级别
setBeautyLevel({params}, function(ret, err))
level:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setBeautyLevel({
level: 1
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置美白级别
setWhitenessLevel({params}, function(ret, err))
mode:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePusher.setWhitenessLevel({
level: 1
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置红润级别
setRuddyLevel({params}, function(ret, err))
level:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setRuddyLevel({
level: 1
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置红润级别
enableSharpnessEnhancement({params}, function(ret, err))
enable:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.enableSharpnessEnhancement({
enable: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置指定素材滤镜特效
setFilter({params}, function(ret, err))
img:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setFilter({
img: '/xxx/xxx/aa.png'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置滤镜浓度
setFilterStrength({params}, function(ret, err))
在美女秀场等应用场景里,滤镜浓度的要求会比较高,以便更加突显主播的差异。 我们默认的滤镜浓度是0.5,如果您觉得滤镜效果不明显,可以使用下面的接口进行调节。
strength:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setFilterStrength({
strength: 0.2
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
查询当前是否为前置摄像头
isFrontCamera({params}, function(ret, err))
ret:
{
status: true, // 布尔类型, true表示操作成功
isFront: true
}
isFront:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.isFrontCamera({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统
可提供的1.0.0及更高版本
切换前后摄像头
switchCamera({params}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.switchCamera({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
打开后置摄像头旁边的闪关灯
toggleTorch({params}, function(ret, err))
此操作对于前置摄像头是无效的,因为绝大多数手机都没有给前置摄像头配置闪光灯。
enable:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.toggleTorch({
enable: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统
可提供的1.0.0及更高版本
获取摄像头支持的焦距
getMaxZoom({params}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
maxZoom: 10
}
maxZoom:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.getMaxZoom({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
Android系统
可提供的1.0.0及更高版本
调整摄像头的焦距
setZoom({params}, function(ret, err))
注意:
当 distance 为1的时候为最远视角(正常镜头),当为最大值的时候为最近视角(放大镜头),最大值不要超过,超过后画面会模糊不清。
distance:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
##代码示例
livePusher.setZoom({
distance: 2
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置手动对焦区域
setFocusPosition({params}, function(ret, err))
SDK 默认使用摄像头自动对焦功能,您也可以通过 init() 中的 touchFocus 选项关闭自动对焦,改用手动对焦。 改用手动对焦之后,需要由主播自己点击摄像头预览画面上的某个区域,来手动指导摄像头对焦。
x:
y:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setFocusPosition({
x: 5,
y: 5
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
调整曝光比例
setExposureCompensation({params}, function(ret, err))
value:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '....' // 字符串类型, 错误信息
}
livePusher.setExposureCompensation({
value: 0.2
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
开启静音
setMute({params}, function(ret, err))
开启静音后,SDK 并不会继续采集麦克风的声音,但是会用非常低(5kbps 左右)的码率推送伪静音数据, 这样做的目的是为了兼容 H5 上的 video 标签,并让录制出来的 MP4 文件有更好的兼容性。
isMute:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setMute({
isMute: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置耳返
enableVoiceEarMonitor({params}, function(ret))
enable:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.enableVoiceEarMonitor({
enable: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置人声的混响效果(KTV、小房间、大会堂、低沉、洪亮...)
setVoiceReverbType({params}, function(ret, err))
注意:
设置的效果在退房后会失效,如果下次进房还需要对应特效,需要调用此接口再次设置。
mode:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setVoiceReverbType({
mode: 1
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
停止播放背景音乐
setVoiceChangerType({params}, function(ret, err))
mode:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setVoiceChangerType({
mode: 2
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置麦克风采集人声的音量
setVoiceCaptureVolume({params}, function(ret))
volume:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setVoiceCaptureVolume({
volume: 80
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置音乐监听
setMusicListener({params}, function(ret, ret))
id:
ret:
{
status: true // 布尔类型, true表示操作成功
}
or
{
eventType: '',
...
}
eventType:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setMusicListener({
id: 3
}, function(ret, err) {
if (ret) {
api.toast({
location: 'bottom',
msg: JSON.stringify(ret)
});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
移除音乐监听
removeMusicListener({params}, function(ret, err))
id:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.removeMusicListener({
id: 3
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
开始播放背景音乐
startPlayMusic({params}, function(ret, err))
id:
path:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.startPlayMusic({
id: 3,
path: 'http://bgm-1252xxxxxud.com/keluodiya.mp3'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
停止播放背景音乐
stopPlayMusic({params}, function(ret, err))
id:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.stopPlayMusic({
id: 3
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
暂停播放背景音乐
pausePlayMusic({params}, function(ret))
id:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.pausePlayMusic({
id: 3
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
恢复播放背景音乐
resumePlayMusic({params}, function(ret, err))
id:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.resumePlayMusic({
id: 3
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置背景音乐的远端音量大小,即主播可以通过此接口设置远端观众能听到的背景音乐的音量大小。
setMusicPublishVolume({params}, function(ret, err))
id:
volume:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
##代码示例
livePusher.setMusicPublishVolume({
id: 3,
volume: 100
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置背景音乐的本地音量大小,即主播可以通过此接口设置主播自己本地的背景音乐的音量大小。
setMusicPlayoutVolume({params}, function(ret, err))
id:
volume:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
##代码示例
livePusher.setMusicPlayoutVolume({
id: 3,
volume: 100
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置全局背景音乐的本地和远端音量的大小
setAllMusicVolume({params}, function(ret, err))
volume:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setAllMusicVolume({
volume: 100
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
调整背景音乐的音调高低
setMusicPitch({params}, function(ret, err))
id:
pitch:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setMusicPitch({
id: 3,
pitch: 0
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
调整背景音乐的变速效果
setMusicSpeedRate({params}, function(ret, err))
id:
speedRate:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setMusicSpeedRate({
id: 3,
speedRate: 0.5
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取背景音乐当前的播放进度(单位:毫秒)
getMusicCurrentPosInMS({params}, function(ret, err))
id:
ret:
{
status: true // 布尔类型, true表示操作成功
}
pos:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.getMusicCurrentPosInMS({
id: 3
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置背景音乐的播放进度(单位:毫秒)
seekMusicToPosInMS({params}, function(ret, err))
id:
pts:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.seekMusicToPosInMS({
id: id,
pts: pts
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取景音乐文件的总时长(单位:毫秒)
getMusicDurationInMS({params}, function(ret, err))
path:
ret:
{
status: true // 布尔类型, true表示操作成功
duration: 11000
}
duration:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.getMusicDurationInMS({
path: 'http://bgm-xxxxxud.com/keluodiya.mp3'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
启用麦克风采集音量大小评估
enableVolumeEvaluation({params}, function(ret, err))
开启后会在 volumeEvaluationListener 中获取到 SDK 对麦克风采集音量大小值的评估。
interval:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.enableVolumeEvaluation({
interval: 300
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置麦克风采集音量大小回调接口
setVolumeEvaluationListener({params}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
or
{
eventType: 'onAudioVolumeEvaluation'
volume: 10
}
eventType:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setVolumeEvaluationListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
移除麦克风采集音量大小回调接口
removeVolumeEvaluationListener({params}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.removeVolumeEvaluationListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置录制监听
setRecordListener({params}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
or
{
eventType: 'onRecordProgress',
progress: 1000
result: {
...
}
}
eventType:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.setRecordListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
移除录制监听
removeRecordListener({params}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.removeRecordListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
开始录制短视频
startRecord({params}, function(ret, err))
注意:
只有启动推流后才能开始录制,非推流状态下启动录制无效。 出于安装包体积的考虑,仅专业版和企业版两个版本的支持该功能,本版本仅定义了接口但并未实现。 录制过程中请勿动态切换分辨率和软硬编,会有很大概率导致生成的视频异常。
path:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
code:
livePusher.startRecord({
path: 'fs://tencentLivePusher/record/record.mp4'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
结束录制短视频,当停止推流后,如果视频还在录制中,SDK 内部会自动结束录制。
stopRecord({params}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
code:
livePusher.stopRecord({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
推流过程中本地截图
snapshot({params}, function(ret, err))
path:
ret:
{
status: true, // 布尔类型, true表示操作成功
path: '/xxxxx/xxxx/xxx.png'
}
path:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.snapshot({
path: 'fs://tencentLivePusher/snapshot/snapshot01.png'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
发送 SEI 消息,播放端(tencentLivePlayer)通过 onPlayGetMessageEvt 来接收该消息。
sendMessageEx({params}, function(ret, err))
本接口是将数据直接塞入视频数据头中,因此不能太大(几个字节比较合适),一般常用于塞入自定义时间戳等信息。
msg:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误信息' // 字符串类型, 错误信息
}
livePusher.sendMessageEx({
msg: 'this is a sei msg'
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
一次成功的推流都会通知的事件有(例如,收到onOpenCameraSuccEvt就意味着摄像头的画面开始渲染)
已经成功连接到腾讯云推流服务器
{
eventType: 'onConnecctSuccEvt'
}
eventType:
与服务器握手完毕,一切正常,准备开始推流
{
eventType: 'onPushBeginEvt'
}
eventType:
推流器已成功打开摄像头(部分 Android 手机在此过程需要耗时1s - 2s)
{
eventType: 'onOpenCameraSuccEvt'
}
eventType:
SDK 发现部分严重问题,推流无法继续(例如,用户禁用了 App 的 Camera 权限导致摄像头打不开)
打开摄像头失败
{
eventType: 'onOpenCameraFailErr'
}
eventType:
打开麦克风失败
{
eventType: 'onOpenMicFailErr'
}
eventType:
视频编码失败
{
eventType: 'onVideoEncodeFailErr'
}
eventType:
音频编码失败
{
eventType: 'onAudioEncodeFailErr'
}
eventType:
不支持的视频分辨率
{
eventType: 'onUnsupportedResolutionErr'
}
eventType:
不支持的音频采样率
{
eventType: 'onUnsupportedSamplerateErr'
}
eventType:
网络断连,且经三次重连无效,更多重试请自行重启推流
{
eventType: 'onNetDisconnectErr'
}
eventType:
SDK 发现部分警告问题,但 WARNING 级别的事件都会触发一些尝试性的保护逻辑或者恢复逻辑,而且有很大概率能够恢复。
主播网络差,如果您需要 UI 提示,这个 WARNING 相对比较有用。
推流请求被后台拒绝,一般是由于推流地址里的 txSecret 计算错误,或者是推流地址被其他人占用(一个推流 URL 同时只能有一个端推流)。
网络状况不佳:上行带宽太小,上传数据受阻
{
eventType: 'onNetBusyWarn'
}
eventType:
网络断连,已启动自动重连(自动重连连续失败超过三次会放弃)
{
eventType: 'onReconnectWarn'
}
eventType:
硬编码启动失败,采用软编码
{
eventType: 'onHWAccelerationFailWarn'
}
eventType:
#onDNSFailWarn
RTMP - DNS 解析失败(会触发重试流程)
{
eventType: 'onDNSFailWarn'
}
eventType:
RTMP 服务器连接失败(会触发重试流程)
{
eventType: 'onServerConnFailWarn'
}
eventType:
RTMP 服务器握手失败(会触发重试流程)
{
eventType: 'onShakeFailWarn'
}
eventType:
RTMP 服务器主动断开连接(会触发重试流程)
{
eventType: 'onServerDisconnectWarn'
}
eventType:
录制事件通知
{
eventType: 'onRecordEvent',
event: {
...
}
}
eventType:
event:
短视频录制进度
{
eventType: 'onRecordProgress',
progress: 1000
}
eventType:
progress:
短视频录制完成
{
eventType: 'onRecordComplete',
result: {
coverImage: '/xxxx/xxx.png',
videoPath: '/xxx/xxx/xxx.mp4'
}
}
eventType:
result:
coverImage:
videoPath:
#onStart
开始播放回调
{
eventType: 'onStart',
errCode: 0
}
eventType:
errCode:
播放进度回调
{
eventType: 'onProgress',
progressMS: 1100,
durationMS: 120000
}
eventType:
progressMS:
durationMS:
播放结束回调
{
eventType: 'onComplete',
errCode: 0
}
eventType:
errCode:
音量大小回调
{
eventType: 'onAudioVolumeEvaluationNotify'
volume: 10
}
eventType:
volume:
##接口列表
###初始化与监听
接口列表 | 功能 |
---|---|
init | 初始化 |
setPlayerListener | 设置播放监听器 |
removePlayerListener | 移除播放监听 |
destroy | 销毁播放器 |
###基本控制
接口列表 | 功能 |
---|---|
start | 启动从指定URL播放音视频流 |
isPlaying | 获取当前播放状态 |
pause | 暂停播放 |
resume | 继续播放 |
stop | 停止播放音视频流 |
###视频相关
接口列表 | 功能 |
---|---|
setRenderMode | 设置画面的裁剪模式 |
setRenderRotation | 设置画面的方向 |
setHwAcc | 开启硬件加速 |
switchStream | 清晰度切换 |
###音频相关
接口列表 | 功能 |
---|---|
setMute | 设置是否静音 |
setVolume | 设置音量 |
setAudioRoute | 设置声音播放模式 |
setVolumeEvaluationListener | 设置音量大小评估监听 |
removeVolumeEvaluationListener | 移除音量大小评估监听 |
enableVolumeEvaluation | 启用音量大小评估 |
接口列表 | 功能 |
---|---|
setRecordListener | 设置录制监听器 |
removeRecordListener | 移除录制监听 |
startRecord | 开始视频录制 |
stopRecord | 停止录制 |
snapshot | 播放器截图 |
接口列表 | 功能 |
---|---|
prepareLiveSeek | 直播时移准备 |
seek | 直播时移跳转 |
resumeLive | 恢复直播服务 |
初始化拉流播放器
init({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.init({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
设置播放监听
setPlayerListener(({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
or
{
eventType: 'onConnectSuccessEvt'
}
eventType:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
##代码示例
livePlayer.setPlayerEventListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
移除播放监听
removePlayerListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.removePlayerEventListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#destroy
销毁
destroy({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.destroy({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#start
启动从指定 URL 播放音视频流
start({params}, function(ret, err))
flvUrl:
rect:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.start({
rect: {
x: 0,
y: 0,
w: self.playerWidth,
h: self.playerHeight
},
flvUrl: ''
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
是否正在播放
isPlaying({}, function(ret, err))
ret:
{
status: true, // 布尔类型, true表示操作成功
isPlaying: true
}
isPlaying:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.isPlaying({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#pause
暂停播放
此接口会暂停数据拉流,不会销毁播放器,暂停后,播放器会显示最后一帧数据图像
pause({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.pause({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供1.0.0及更高版本
#resume
继续播放
resume({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.resume({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#stop
销毁播放器及其视图
stop({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.stop({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setRenderMode
设置画面的裁剪模式
setRenderMode({params}, function(ret, err))
mode:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setRenderMode({
mode: 0
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setRenderRotation
设置画面的方向
setRenderRotation({params}, function(ret, err))
rotation:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setRenderRotation({
rotation: 1
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setHwAcc
是否开启硬件加速
setHwAcc({params}, function(ret, err))
enable:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setHwAcc({
isHwAcc: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#switchStream
FLV 直播无缝切换
switchStream({params}, function(ret, err))
url:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.switchStream({
url: self.switchUrl
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setMute
设置静音
setMute({params}, function(ret, err))
isMute:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setMute({
isMute: true
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setVolume
设置音量
setVolume({params}, function(ret, err))
volume:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setVolume({
volume: self.volume
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setAudioRoute
设置声音播放模式(切换扬声器,听筒)
setAudioRoute({params}, function(ret, err))
mode:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setAudioRoute({
mode: self.audioRoute
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setVolumeEvaluationListener
设置音量大小回调接口
setVolumeEvaluationListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
{
eventType: 'onAudioVolumeEvaluationNotify',
volume: 112
}
eventType:
volume:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setVolumeEvaluationListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#removeVolumeEvaluationListener
移除音量大小回调
removeVolumeEvaluationListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.removeVolumeEvaluationListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#enableVolumeEvaluation
启用音量大小提示
enableVolumeEvaluation({params}, function(ret, err))
开启后会在 setVolumeEvaluationListener 中获取到 SDK 对音量大小值的评估。
interval:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.enableVolumeEvaluation({
interval: 300
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#setRecordListener
设置短视频录制回调
setRecordListener({params}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
or
{
eventType: 'onRecordProgress',
progress: 113
}
eventType:
progress:
result:
{
coverImage: 'xxxx',
videoPath: 'xxxx'
}
coverImage:
videoPath:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.setRecordListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#removeRecordListener
移除录制监听
removeRecordListener({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.removeRecordListener({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#startRecord
开始录制短视频
startRecord({params}, function(ret, err))
type:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.startRecord({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#stopRecord
结束录制短视频
stopRecord({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.stopRecord({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#snapshot
截屏
snapshot({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
path: '/livePlayer/snapshot/snapshot_xxx.png'
}
path:
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.snapshot({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#prepareLiveSeek
直播时移准备,拉取该直播流的起始播放时间。
prepareLiveSeek({params}, function(ret, err))
使用时移功能需在播放开始后调用此方法,否则时移失败。
警告:
非腾讯云直播地址不能时移
appId:
domain:
bizid:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.prepareLiveSeek({
appId: 134321,
domain: 'http://xxx.xxx.xxx/xxx',
bizid: 98
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#seek
播放跳转到音视频流某个时间
seek({params}, function(ret, err))
second:
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.liveSeek({
second: 50
}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
#resumeLive
停止时移播放,返回直播
resumeLive({}, function(ret, err))
ret:
{
status: true // 布尔类型, true表示操作成功
}
err:
{
code: -911, // 整数类型, 错误码
msg: '错误描述' // 字符串类型, 错误信息
}
livePlayer.resumeLive({}, function(ret, err) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
iOS, Android系统
可提供的1.0.0及更高版本
##事件回调
您可以为 RY-TencentLivePlayer 对象绑定一个 setPlayerEventListener,之后 SDK 的内部状态信息均会通过事件通知和状态反馈通知给您。
###播放事件
#onConnectSuccessEvt
已经连接服务器
{
eventType: 'onConnectSuccessEvt'
}
eventType:
#onRtmpStreamBeginEvt
已经连接服务器,开始拉流(仅播放 RTMP 地址时会抛送)
{
eventType: 'onRtmpStreamBeginEvt'
}
eventType:
#onRcvFirstIFrameEvt
网络接收到首个可渲染的视频数据包(IDR)
{
eventType: 'onRcvFirstIFrameEvt'
}
eventType:
#onPlayBeginEvt
视频播放开始,如果有转菊花什么的这个时候该停了
{
eventType: 'onPlayBeginEvt'
}
eventType:
#onPlayLoadingEvt
视频播放 loading,如果能够恢复,之后会有 BEGIN 事件
{
eventType: 'onPlayLoadingEvt'
}
不要在收到 onPlayLoadingEvt 后隐藏播放画面 因为 onPlayLoadingEvt -> onPlayBeginEvt 的时间长短是不确定的,可能是 5s 也可能是 5ms,有些客户考虑在 LOADING 时隐藏画面, BEGIN 时显示画面,会造成严重的画面闪烁(尤其是直播场景下)。推荐的做法是在视频播放画面上叠加一个半透明的 loading 动画
eventType:
#onGetMessageEvt
用于接收夹在音视频流中的消息
{
eventType: 'onGetMessageEvt',
msg: 'This is a message'
}
eventType:
msg:
###结束事件
#onPlayEndEvt
视频播放结束
{
eventType: 'onPlayEndEvt'
}
eventType:
#onNetDisconnectErr
网络断连,且经多次重连亦不能恢复,更多重试请自行重启播放
{
eventType: 'onNetDisconnectErr'
}
如何判断直播已结束?
基于各种标准的实现原理不同,很多直播流通常没有结束事件(onPlayEndEvt)抛出,此时可预期的表现是:主播结束推流后,SDK 会很快发现数据流拉取失败(onReconnectWarn),然后开始重试,直至三次重试失败后抛出 onNetDisconnectErr 事件。 所以 onPlayEndEvt 和 onNetDisconnectErr 都要监听,用来作为直播结束的判定事件。
eventType:
###警告事件
如下的这些事件您可以不用关心,我们只是基于白盒化的 SDK 设计理念,将事件信息同步出来
#onVideoDecodeFailWarn
当前视频帧解码失败
{
eventType: 'onVideoDecodeFailWarn'
}
eventType:
#onAudioDecodeFailWarn
当前音频帧解码失败
{
eventType: 'onAudioDecodeFailWarn'
}
eventType:
#onReconnectWarn
网络断连, 已启动自动重连(重连超过三次就直接抛送 onNetDisconnectErr 了)
{
eventType: 'onReconnectWarn'
}
eventType:
网络来包不稳:可能是下行带宽不足,或由于主播端出流不均匀
{
eventType: 'onRecvDataLagWarn'
}
eventType:
当前视频播放出现卡顿
{
eventType: 'onVideoPlayLagWarn'
}
eventType:
硬解启动失败,采用软解
{
eventType: 'onHWAccelerationFailWarn'
}
eventType:
当前视频帧不连续,可能丢帧
{
eventType: 'onVideoDisconntinuityWarn'
}
eventType:
RTMP-DNS 解析失败(仅播放 RTMP 地址时会抛送)
{
eventType: 'onDnsFailWarn'
}
eventType:
RTMP 服务器连接失败(仅播放 RTMP 地址时会抛送)
{
eventType: 'onServerConnFailWarn'
}
eventType:
RTMP 服务器握手失败(仅播放 RTMP 地址时会抛送)
{
eventType: 'onShakeFailWarn'
}
eventType: