# live-pusher

基础库 1.7.0 开始支持,低版本需做兼容处理

小程序插件:支持,需要小程序基础库版本不低于 2.3.0

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

相关文档: wx.createLivePusherContext

渲染框架支持情况:Skyline (使用最新 Nighly 工具调试)、WebView

# 功能描述

实时音视频录制(v2.9.1 起支持同层渲染)。需要用户授权 scope.camerascope.record

# 申请开通

暂只针对国内主体如下类目的小程序开放,需要先通过类目审核,再在小程序管理后台,「开发」-「接口设置」中自助开通该组件权限。

一级类目/主体类型 二级类目 小程序内容场景
社交 直播 涉及娱乐性质,如明星直播、生活趣事直播、宠物直播等。选择该类目后首次提交代码审核,需经当地互联网主管机关审核确认,预计审核时长7天左右
教育 在线视频课程 网课、在线培训、讲座等教育类直播
医疗 互联网医院,公立医疗机构,其他私立医疗机构 问诊、大型健康讲座等直播
金融 银行、信托、公募基金、私募基金、证券/期货、证券、期货投资咨询、保险、征信业务、新三板信息服务平台、股票信息服务平台(港股/美股)、消费金融、融资担保 金融产品视频客服理赔、金融产品推广直播等
汽车 汽车预售服务 汽车预售、推广直播
政府主体账号 / 政府相关工作推广直播、领导讲话直播等
IT科技 多方通信;音视频设备 为多方提供电话会议/视频会议等服务;智能家居场景下控制摄像头
房地产服务 房地产营销 房地产营销直播服务、在线音视频带看等
商业服务 公证 在线业务办理等

# 通用属性

属性 类型 默认值 必填 说明 最低版本
url string 推流地址。目前仅支持 rtmp 格式 1.7.0
mode string RTC 模式 1.7.0
合法值 说明 最低版本
QVGA Quarter VGA 3.5.0
HVGA Half-size VGA 3.5.0
SD 标清 1.7.0
HD 高清 1.7.0
FHD 超清 1.7.0
RTC 实时通话 1.7.0
autopush boolean false 自动推流 1.7.0
enableVideoCustomRender boolean false 自定义渲染,允许开发者自行处理所采集的视频帧,详见LivePusherContext 2.29.0
muted boolean false 是否静音。即将废弃,可用 enable-mic 替代 1.7.0
enable-camera boolean true 开启摄像头 1.7.0
auto-focus boolean true 自动聚集 1.7.0
orientation string vertical 画面方向 1.7.0
合法值 说明
vertical 竖直
horizontal 水平
beauty number 0 美颜,取值范围 0-9 ,0 表示关闭。鸿蒙 OS 暂不支持 1.7.0
whiteness number 0 美白,取值范围 0-9 ,0 表示关闭 1.7.0
aspect string 9:16 宽高比,可选值有 3:4, 9:16 1.7.0
min-bitrate number 200 最小码率 1.7.0
max-bitrate number 1000 最大码率 1.7.0
audio-quality string high 高音质(48KHz)或低音质(16KHz),值为high, low 1.7.0
waiting-image string 进入后台时推流的等待画面 1.7.0
waiting-image-hash string 等待画面资源的MD5值 1.7.0
zoom boolean false 调整焦距 2.1.0
device-position string front 前置或后置,值为front, back 2.3.0
background-mute boolean false 进入后台时是否静音(已废弃,默认退后台静音) 1.7.0
mirror boolean false 设置推流画面是否镜像,产生的效果在 live-player 反应到 2.7.0
remote-mirror boolean false 同 mirror 属性,后续 mirror 将废弃 2.10.0
local-mirror string auto 控制本地预览画面是否镜像 2.10.0
合法值 说明
auto 前置摄像头镜像,后置摄像头不镜像
enable 前后置摄像头均镜像
disable 前后置摄像头均不镜像
audio-reverb-type number 0 音频混响类型 2.10.0
合法值 说明
0 关闭
1 KTV
2 小房间
3 大会堂
4 低沉
5 洪亮
6 金属声
7 磁性
enable-mic boolean true 开启或关闭麦克风 2.10.0
enable-agc boolean false 是否开启音频自动增益 2.10.0
enable-ans boolean false 是否开启音频噪声抑制 2.10.0
audio-volume-type string auto 音量类型 2.10.0
合法值 说明
auto 自动
media 媒体音量
voicecall 通话音量
video-width number 360 上推的视频流的分辨率宽度 2.10.0
video-height number 640 上推的视频流的分辨率高度 2.10.0
beauty-style string smooth 设置美颜类型。鸿蒙 OS 暂不支持 2.12.0
合法值 说明
smooth 光滑美颜
nature 自然美颜
filter string standard 设置色彩滤镜 2.12.0
合法值 说明
standard 标准
pink 粉嫩
nostalgia 怀旧
blues 蓝调
romantic 浪漫
cool 清凉
fresher 清新
solor 日系
aestheticism 唯美
whitening 美白
cerisered 樱红
picture-in-picture-mode string/Array 设置小窗模式: push, pop,空字符串或通过数组形式设置多种模式(如: ["push", "pop"]) 2.25.0
合法值 说明
[] 取消小窗
push 路由 push 时触发小窗
pop 路由 pop 时触发小窗
voice-changer-type number 0 0:关闭变声;1:熊孩子;2:萝莉;3:大叔;4:重金属;6:外国人;7:困兽;8:死肥仔;9:强电流;10:重机械;11:空灵 2.31.0
custom-effect boolean false 是否启动自定义特效,设定后不能更改 2.29.1
skin-whiteness number 0 自定义特效美白效果,取值 0~1。需要开启 custom-effect 2.29.1
skin-smoothness number 0 自定义特效磨皮效果,取值 0~1。需要开启 custom-effect 2.29.1
face-thinness number 0 自定义特效瘦脸效果,取值 0~1。需要开启 custom-effect 2.29.1
eye-bigness number 0 自定义特效大眼效果,取值 0~1。需要开启 custom-effect 2.29.1
fps number 15 帧率,有效值为 1~30 2.31.0
bindstatechange eventhandle 状态变化事件,detail = {code} 1.7.0
bindnetstatus eventhandle 网络状态通知,detail = {info} 1.9.0
binderror eventhandle 渲染错误事件,detail = {errMsg, errCode} 1.7.4
bindbgmstart eventhandle 背景音开始播放时触发 2.4.0
bindbgmprogress eventhandle 背景音进度变化时触发,detail = {progress, duration} 2.4.0
bindbgmcomplete eventhandle 背景音播放完成时触发 2.4.0
bindaudiovolumenotify eventhandle 返回麦克风采集的音量大小 2.12.0
bindenterpictureinpicture eventhandler 进入小窗 2.25.0
bindleavepictureinpicture eventhandler 退出小窗 2.25.0

# Bug & Tip

  1. tip:开发者工具上暂不支持。
  2. tiplive-pusher 默认宽度为100%、无默认高度,请通过wxss设置宽高。
  3. tipwaiting-image 属性在 2.3.0 起完整支持网络路径、临时文件和包内路径。
  4. tip:请注意原生组件使用限制
  5. tip: 相关介绍和原理可参考此文章

# 错误码(errCode)

代码 说明
10001 用户禁止使用摄像头
10002 用户禁止使用录音
10003 背景音资源(BGM)加载失败
10004 等待画面资源(waiting-image)加载失败

# 状态码(code)

代码 说明
1001 推流:已经连接推流服务器
1002 推流:已经与服务器握手完毕,开始推流
1003 推流:打开摄像头成功
1004 推流:录屏启动成功
1005 推流:推流动态调整分辨率
1006 推流:推流动态调整码率
1007 推流:首帧画面采集完成
1008 推流:编码器启动
1018 推流:进房成功(ROOM协议特有)
1019 推流:退房成功(ROOM协议特有有)
1020 推流:远端主播列表变化(ROOM协议特有)
1021 推流:网络变更时重进房,WiFi 切换到4G 会触发断线重连(ROOM协议特有)
1022 推流:进入房间失败(ROOM协议特有)
1031 推流:远端主播进房通知(ROOM协议特有)
1032 推流:远端主播退房通知(ROOM协议特有)
1033 推流:远端主播视频状态位变化(RROOM协议特有)
1034 推流:远端主播音频状态位变化(ROOM协议特有)
1101 推流:网络状况不佳:上行带宽太小,上传数据受阻
1102 推流:网络断连, 已启动自动重连
1103 推流:硬编码启动失败, 采用软编码
1104 推流:视频编码失败, 内部会重启编码器
3001 推流:RTMP DNS解析失败
3002 推流:RTMP服务器连接失败
3003 推流:RTMP服务器握手失败
3004 推流:RTMP服务器主动断开,请检查推流地址的合法性或防盗链有效期
3005 推流:RTMP 读/写失败
4998 Mic状态切换的时候,enable-mic触发(iOS特有)
4999 mute状态切换的时候,muted 触发(iOS特有)
5001 系统电话打断或者微信音视频电话打断
10001 用户禁止使用摄像头
10002 用户禁止使用录音
10003 背景音资源(BGM)加载失败
10004 等待画面资源(waiting-image)加载失败
-1301 推流:打开摄像头失败
-1302 推流:打开麦克风失败
-1303 推流:视频编码失败
-1304 推流:音频编码失败
-1305 推流:不支持的视频分辨率
-1306 推流:不支持的音频采样率
-1307 推流:网络断连,且经多次重连抢救无效,更多重试请自行重启推流
-1308 推流:开始录屏失败,可能是被用户拒绝
-1309 推流:录屏失败,不支持的Android系统版本,需要5.0以上的系统
-1310 推流:录屏被其他应用打断了
-1311 推流:Android Mic打开成功,但是录不到音频数据
-1312 推流:录屏动态切横竖屏失败
0 无错误

# 网络状态数据(info)

键名 说明
videoBitrate 当前视频编/码器输出的比特率,单位 kbps
audioBitrate 当前音频编/码器输出的比特率,单位 kbps
videoFPS 当前视频帧率
videoGOP 当前视频 GOP,也就是每两个关键帧(I帧)间隔时长,单位 s
netSpeed 当前的发送/接收速度
netJitter 网络抖动情况,抖动越大,网络越不稳定
netQualityLevel 网络质量:0:未定义 1:最好 2:好 3:一般 4:差 5:很差 6:不可用
videoWidth 视频画面的宽度
videoHeight 视频画面的高度
videoCache 主播端堆积的视频帧数
audioCache 主播端堆积的音频帧数

# 示例代码

在开发者工具中预览效果

  <live-pusher url="https://domain/push_stream" mode="RTC" autopush bindstatechange="statechange" style="width: 300px; height: 225px;" />
Page({
  statechange(e) {
    console.log('live-pusher code:', e.detail.code)
  }
})