微信小程序 live-pusher 实时音视频录制 组件

2023-11-11

完整微信小程序(Java后端) 技术贴目录清单页面(必看)

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

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

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

相关api:wx.createLivePusherContext

属性 类型 默认值 必填 说明 最低版本
url string 推流地址。目前仅支持 rtmp 格式 1.7.0
mode string RTC SD(标清), HD(高清), FHD(超清), RTC(实时通话) 1.7.0
autopush boolean false 自动推流 1.7.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
beauty number 0 美颜,取值范围 0-9 ,0 表示关闭 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
audio-reverb-type number 0 音频混响类型 2.10.0
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
video-width number 360 上推的视频流的分辨率宽度 2.10.0
video-height number 640 上推的视频流的分辨率高度 2.10.0
beauty-style string smooth 设置美颜类型 2.12.0
filter string standard 设置色彩滤镜 2.12.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

orientation 的合法值

说明 最低版本
vertical 竖直
horizontal 水平

local-mirror 的合法值

说明 最低版本
auto 前置摄像头镜像,后置摄像头不镜像
enable 前后置摄像头均镜像
disable 前后置摄像头均不镜像

audio-reverb-type 的合法值

说明 最低版本
0 关闭
1 KTV
2 小房间
3 大会堂
4 低沉
5 洪亮
6 金属声
7 磁性

audio-volume-type 的合法值

说明 最低版本
auto 自动
media 媒体音量
voicecall 通话音量

beauty-style 的合法值

说明 最低版本
smooth 光滑美颜
nature 自然美颜

filter 的合法值

说明 最低版本
standard 标准
pink 粉嫩
nostalgia 怀旧
blues 蓝调
romantic 浪漫
cool 清凉
fresher 清新
solor 日系
aestheticism 唯美
whitening 美白
cerisered 樱红

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 编码器启动
-1301 打开摄像头失败
-1302 打开麦克风失败
-1303 视频编码失败
-1304 音频编码失败
-1305 不支持的视频分辨率
-1306 不支持的音频采样率
-1307 网络断连,且经多次重连抢救无效,更多重试请自行重启推流
-1308 开始录屏失败,可能是被用户拒绝
-1309 录屏失败,不支持的Android系统版本,需要5.0以上的系统
-1310 录屏被其他应用打断了
-1311 Android Mic打开成功,但是录不到音频数据
-1312 录屏动态切横竖屏失败
1101 网络状况不佳:上行带宽太小,上传数据受阻
1102 网络断连, 已启动自动重连
1103 硬编码启动失败,采用软编码
1104 视频编码失败
1105 新美颜软编码启动失败,采用老的软编码
1106 新美颜软编码启动失败,采用老的软编码
3001 RTMP -DNS解析失败
3002 RTMP服务器连接失败
3003 RTMP服务器握手失败
3004 RTMP服务器主动断开,请检查推流地址的合法性或防盗链有效期
3005 RTMP 读/写失败

网络状态数据(info)

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

示例代码

在开发者工具中预览效果

index.wxml

<view class="page-body">
  <view class="page-section tc">
    <live-pusher id="pusher" url="https://domain/push_stream" mode="RTC" autopush bindstatechange="statechange" />

    <view class="btn-area">
      <button bindtap="bindStart" class="page-body-button" type="primary">播放推流</button>
      <button bindtap="bindPause" class="page-body-button" type="primary">暂停推流</button>
      <button bindtap="bindStop" class="page-body-button" type="primary">停止推流</button>
      <button bindtap="bindResume" class="page-body-button" type="primary">恢复推流</button>
      <button bindtap="bindSwitchCamera" class="page-body-button" type="primary">切换前后摄像头</button>
    </view>
  </view>
</view>

index.js

Page({
  onReady(res) {
    this.ctx = wx.createLivePusherContext('pusher')
  },
  statechange(e) {
    console.log('live-pusher code:', e.detail.code)
  },
  bindStart() {
    this.ctx.start({
      success: res => {
        console.log('start success')
      },
      fail: res => {
        console.log('start fail')
      }
    })
  },
  bindPause() {
    this.ctx.pause({
      success: res => {
        console.log('pause success')
      },
      fail: res => {
        console.log('pause fail')
      }
    })
  },
  bindStop() {
    this.ctx.stop({
      success: res => {
        console.log('stop success')
      },
      fail: res => {
        console.log('stop fail')
      }
    })
  },
  bindResume() {
    this.ctx.resume({
      success: res => {
        console.log('resume success')
      },
      fail: res => {
        console.log('resume fail')
      }
    })
  },
  bindSwitchCamera() {
    this.ctx.switchCamera({
      success: res => {
        console.log('switchCamera success')
      },
      fail: res => {
        console.log('switchCamera fail')
      }
    })
  }
})

运行效果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RAboRQzC-1623154316580)(image-20210608160955768.png)]

微信搜一搜【java1234】关注这个放荡不羁的程序员,关注后回复【资料】有我准备的一线大厂笔试面试资料以及简历模板。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序 live-pusher 实时音视频录制 组件 的相关文章

  • Java - 将无符号十六进制字符串解析为有符号长整型

    我有一堆十六进制字符串 其中之一是 d1bc4f7154ac9edb 这是 3333702275990511909 的十六进制值 如果执行 Long toHexString d1bc4f7154ac9edb 这与您得到的十六进制相同 现在
  • 使用itext java库复制时pdf文件大小大大增加

    我正在尝试使用 Java 中的 itextpdf 库将现有的 pdf 文件复制到一些新文件中 我使用的是 itextpdf 5 5 10 版本 我在两种方式上都面临着不同的问题 PDFStamper 和 PdfCopy 当我使用 PDFSt
  • 在java代码中创建postgresql表

    我有一个与 postgreSQL 数据库连接的 java 代码 现在 我希望当它连接到数据库时 我还将创建数据库表 但我的问题是 它不会创建数据库 我不知道问题是什么 这是我的代码 Statement st null ResultSet r
  • openFileOutput 在单例类中无法正常工作 - 想法/解决方法?

    作为一名 Android 开发新手 我遇到了一些奇怪的问题 我想创建一个类 它方法其他类 活动 任何可以用于以某种特殊方式处理文件的类 假设为了简单起见 我们将记录一些内容 如果我在活动中执行以下操作 例如在 OnClick 侦听器中 则一
  • Selector.close() 是否关闭所有客户端套接字?

    我是 nio 套接字的新手 我已经使用 nio 套接字编写了一个服务器 现在我正在尝试编写关闭钩子以确保通过清理资源正常退出 我的问题是Selector close 方法关闭所有客户端套接字 如果没有 请告诉我如何访问所有客户端套接字 而无
  • ZeroDateTimeBehavior=convertToNull 在使用 hibernate 的 jdbc url 中不起作用

    通过 extern 属性文件 url 指定如下 jdbc mariadb xxxxx 3306 xxxxx zeroDateTimeBehavior convertToNull 连接工作正常并且能够查询数据库 通过休眠 我创建了一个映射到带
  • Java 错误和警告列表

    在哪里 如何获得所有 java 和 javac 的错误和警告消息的列表 This http mindprod com jgloss compileerrormessages html我认为页面是您所需要的
  • java中高效的输入流到字符串方法

    因此 我在 Java 中的 诚然非常简单 应用程序上运行探查器 令我惊讶的是 仅次于需要在时间上发出 HTTP 请求的方法的是我的方法 inputStreamToString方法 目前它的定义如下 public static String
  • 无法在 Intellij 中运行主类[重复]

    这个问题在这里已经有答案了 我有以下项目结构 ProjectRoot src Main examples libs My src文件夹被标记为sources在 Intellij 中 现在 当我想运行 Main 类时 出现以下错误 Excep
  • 使用正则表达式验证电子邮件的最大长度

    我找到了用于电子邮件验证的正则表达式 a z0 9 a z0 9 a z0 9 a z0 9 a z 2 4 我希望电子邮件的最大长度为 20 个字符 因此我将其更改为 a z0 9 a z0 9 a z0 9 a z0 9 a z 2 4
  • 是否可以使用 Apache Tika 提取表信息?

    我正在寻找 pdf 和 MS Office 文档格式的解析器 以从文件中提取表格信息 当我看到 Apache Tika 时 正在考虑编写单独的实现 我能够从任何这些文件格式中提取全文 但我的要求是提取表格数据 我希望有 2 列采用键值格式
  • java:为什么主线程等待子线程完成

    我有一个简单的java程序 主线程 main 创建并启动另一个线程t class T extends Thread Override public void run while true System out println Inside
  • 是否可以创建 Java RAM 磁盘以与 java.io.* API 一起使用?

    我正在使用一个第三方库 它基本上创建一个输出目录 其中包含不同类型的文件和子目录 我希望能够编写单元测试来确认输出正确 我希望能够将库与 RAM 磁盘一起使用 这样库所做的任何事情都不会以任何方式接触实际的磁盘板 这个想法是让测试运行和清理
  • 如何检查单词是否在wordNet中

    我开始了解wordNet直到我知道我找到了synonymous对于一个特定的词 现在我有一个文件 我想使用标记化该文本n gram例如 String s I like to wear tee shirt 使用后n gram这将是 I lik
  • BigDecimal汇总统计

    我有一个 BigDecimal 列表 List
  • 在 Eclipse RCP 应用程序中禁用插件贡献

    我经常遇到这个问题 但尚未找到解决方案 每当我编写一个新的基于 Eclipse RCP 的应用程序并包含来自 Eclipse 平台的插件时 我都会 继承 其中一些插件的 UI 贡献 大多数贡献 菜单项 键盘快捷键 属性页 都很有用 但有时我
  • 在 Spring MVC 中将请求写入文件

    我希望能够将整个请求写入 Spring MVC 控制器中的文件 我已尝试以下操作 但即使我使用大量参数发出 POST 请求 文件也始终为空 RequestMapping method RequestMethod POST value pay
  • Spring 如何在运行时获取有关“强类型集合”的泛型类型信息?

    我在 Spring 3 0 文档中阅读了以下内容 强类型集合 仅限 Java 5 在 Java 5 及更高版本中 您可以使用强类型集合 使用泛型类型 也就是说 可以声明一个 Collection 类型 使其只能包含 String 元素 例如
  • FetchType.LAZY 不适用于休眠中的 @ManyToOne 映射

    简而言之 我的 Child 类与 Parent 类之间存在多对一的关系 我想加载所有的孩子 而不必加载他们的父母详细信息 我的孩子班级是 Entity public class Child implements Serializable I
  • Graphics2D setfont() 严重减慢了 java 应用程序的启动速度

    我正在用java制作一个游戏 它每秒刷新60次 每次执行循环时 我都会使用 g2d 来绘制图像和字符串 如果我这样做的话一切都会很好g2d setFont new Font Arial Font PLAIN 8 和抽绳 这将是正常的 但如果

随机推荐

  • BES2300X,BES2500X——UI(按键,提示音,指示灯)

    前言 BES2300X BES2500X系列博文请点击这里 本文是BES2300X BES2500X系列博文UI部分 一个耳机 音箱 UI是联系使用者与开发者最直接的一个窗口 当然 对于吾等码农而言 UI设计并不是我们最关心的 我们主要做的
  • Altium Designer---PCB覆铜镂空

    AD版本 AD18 转到PCB界面 如下 在PCB页面切换到你想挖空区域所在图层 比如我这里想要挖空Top Layer和Bottom Layer 先切换到Top Layer 右击选择 多边形覆铜挖空 然后在PCB上绘制出想要挖空的区域 如下
  • Java 校验注解的使用、自定义校验注解

    文章目录 一 引入依赖 二 基本校验 1 常用校验注解 2 自动校验 3 代码中获取校验结果 三 嵌套校验 四 分组校验 五 单属性自定义校验规则 1 功能 只能取枚举的值 六 多属性自定义联合校验规则 1 功能 不同优惠券类型校验不同参数
  • Acwing796.子矩阵的和

    理解二维前缀和 include
  • 如何看待过去,决定了你的命运

    一 决定我们自身的不是过去的经历 而是我们自己赋予经历的意义 多年以来 听了太多 好的家庭养育出来的孩子 一生都在温暖他人 坏的家庭养育出来的孩子 一辈子都在找到自己需要的温暖 在各个新闻中也确实有非常多 因为少年时被恶意对待 从而导致无法
  • gc 调优

    文章目录 Xloggc xxx logs xxx gc t log XX UseGCLogFileRotation XX NumberOfGCLogFiles 10 XX GCLogFileSize 20M XX PrintGCDetail
  • Node Sass does not yet support your current environment解决办法

    在启动Nodejs项目时出现以下Error Error Node Sass does not yet support your current environment Linux 64 bit with Unsupported runtim
  • Python基础概念

    什么是Python Python是什么 首先我们先来看百度百科对于Python的解释 由此可见 我们知道了python是一门编程语言 Gudio van Rossum 就是Python这门语言的祖师爷 Python发展历程简介 接下来我们来
  • Python——迭代器

    迭代器 迭代是Python最强大的功能之一 是访问集合元素的一种方式 迭代器是一个可以记住遍历的位置的对象 迭代器对象从集合的第一个元素开始访问 直到所有的元素被访问完结束 迭代器只能往前不会后退 迭代器有两个基本的方法 iter 和 ne
  • matlab pburg,现代数字信号处理——AR模型

    1 AR模型概念观 AR模型是一种线性预测 即已知N个数据 可由模型推出第N点前面或后面的数据 设推出P点 所以其本质类似于插值 其目的都是为了增加有效数据 只是AR模型是由N点递推 而插值是由两点 或少数几点 去推导多点 所以AR模型要比
  • Python内置函数filter用法小结

    filter被称为高阶函数是有道理的 filter self args kwargs Docstring filter function or None iterable gt filter object Return an iterato
  • MySQL基础篇-第18章_MySQL8其它新特性

    第18章 MySQL8其它新特性 讲师 尚硅谷 宋红康 江湖人称 康师傅 官网 http www atguigu com 1 MySQL8新特性概述 MySQL从5 7版本直接跳跃发布了8 0版本 可见这是一个令人兴奋的里程碑版本 MySQ
  • Android Studio实现智能聊天机器人

    项目目录 一 需求分析 1 业务需求分析 2 模型需求分析 3 界面需求分析 二 开发环境 三 聊天功能业务实现 1 申请机器人身份标识 2 搭建聊天界面布局 3 搭建聊天条目布局 4 封装聊天信息实体类 5 编写聊天列表适配器 6 实现智
  • C++11多线程std::thread的简单使用

    文章转载自http blog csdn net star530 article details 24186783 在cocos2dx 2 0时代 我们使用的是pthread库 是一套用户级线程库 被广泛地使用在跨平台应用上 但在cocos2
  • SQL--多表查询(多表联查,如:LEFT JOIN、LEFT JOIN、LEFT JOIN、UNION ALL等)

    1 常见多表连接的三种方式 LEFT JOIN 左连接 查询左表所有数据和右表与左表属性值相等的记录 SELECT FROM TABELONE A LEFT JOIN TABELTWO B ON A id B id RIGHT JOIN 右
  • MySQL索引和性能优化

    索引 MySql底层的数据结构主要是基于Hash 和 B Tree 如果一个B tree的树高时3的话 那么非叶子节点2层 叶子节点1层 非叶子节点 16 1024 8 6 1170 非叶子节点两层 1170个元素 如果是两层 那么元素数量
  • logback和slf4j的使用之encoder和Layout

    一 encoder介绍 1 encoder 主要工作有两个 将一个event事件转换成一组byte数组 将转换后的字节数据输出到文件中 2 encoder组件是在0 9 19版本之后才引进来的 在以前的版本中 appender是使用layo
  • 计算sinx=x-x^3/3!+x^5/5!-x^7/7!+.........

    计算sinx x x 3 3 x 5 5 x 7 7 include stdio h include stdlib h include string h include math h int main float sum t int i x
  • Driver not loaded Driver not loaded(QT打包后在别人的电脑上运行出现这个错误)解决方法

    Driver not loaded Driver not loaded QT打包后在别人的电脑上运行出现这个错误 解决方法 出现这个错误 导致的原因有很多 所以不妨先试试我找的这种解决方法 我也是试过了很多方法 这种方法也许不适合所有人的错
  • 微信小程序 live-pusher 实时音视频录制 组件

    完整微信小程序 Java后端 技术贴目录清单页面 必看 实时音视频录制 v2 9 1 起支持同层渲染 需要用户授权 scope camera scope record 暂只针对国内主体如下类目的小程序开放 需要先通过类目审核 再在小程序管理