微信小程序接入直播

article/2025/10/30 12:30:28

文章目录

      • 微信小程序接入直播
        • 一.小程序配置
          • 1.添加/更改服务类目
          • 2.开通实时播放/录制音视频流
        • 二.云直播服务器
          • 1.云直播申请
          • 2.云直播配置
            • 2-1添加域名
            • 2-2获取推流地址
            • 2-3获取播放地址
        • 三.组件介绍
          • 1.live-pusher
          • 2.live-player
        • 四.代码实现
          • 1.页面结构
          • 2.离线检测

微信小程序接入直播

​ 作者:kerwin

微信小程序开发如火如荼,很多公司都构建了自己的小程序。对于一些有产品的公司, 他们对于自己的小程序有直播需求,希望通过小程序直播获得流量变现。本文章就此需求,跟大家聊聊如何在自己的小程序加入直播功能。

一.小程序配置

小程序虽然提供了直播组件(后面会有介绍),但是直播组件暂只针对国内主体部分类目的小程序开放(https://developers.weixin.qq.com/miniprogram/dev/component/live-player.html),需要先通过类目审核,再在小程序管理后台,「开发」-「接口设置」中自助开通该组件权限。具体流程如下:

1.添加/更改服务类目

请添加图片描述

注意 :添加类目(小程序必须经过企业认证),可能需要提供资质证明,比如添加在线视频课程的类目需要的资质如下

请添加图片描述

2.开通实时播放/录制音视频流

请添加图片描述

二.云直播服务器

直播功能除了小程序端的支持,也需要服务器(推拉流服务器)支持,我们自己搭建的成本过高,所以本文基于腾讯云直播来实现。

1.云直播申请
  1. 注册 腾讯云账号,并完成 实名认证。
  2. 进入 腾讯云直播服务开通页,勾选同意《腾讯云服务协议》,并单击 申请开通 即可开通云直播服务。

说明:

云直播服务申请开通成功后,会赠送20GB国内播放流量免费体验使用。为避免赠送流量用完后自动扣费,导致欠费无法使用云直播服务,建议您根据实际业务需求, 购买相应规格的套餐包。

2.云直播配置

使用云直播服务,至少需要2个域名,一个作为推流域名,一个作为播放域名,推流和播放不能使用相同的域名。

2-1添加域名
  1. 准备自有域名,并完成域名备案。

  2. 登录云直播控制台,进入域名管理,单击添加域名

请添加图片描述

  • 云直播默认提供测试域名xxxx.livepush.myqcloud.com,您可通过该域名进行推流测试,但不建议您在正式业务中使用这个域名作为推流域名。
  • 域名添加成功后,您可通过 域名管理 的域名列表查看域名信息。若您需要对已添加成功的域名进行管理,请参见 域名管理。
    3. 域名添加成功后,系统会为您自动分配一个 CNAME 域名(以 .tlivecdn.com.tlivepush.com 为后缀)。CNAME 域名不能直接访问,您需要在域名服务提供商处完成 CNAME 配置,配置生效后即可享受云直播服务。
2-2获取推流地址

选择 直播工具箱 > 地址生成器。进入地址生成器页面,并进行如下配置:

  1. 选择生成类型:推流域名

  2. 选择您在域名管理中已添加的推流域名。

  3. 填写 AppName,默认为 live

  4. 填写自定义的流名称 StreamName,例如:liveteststream

  5. 选择地址过期时间,例如:2021-05-31 23:59:59

  6. 单击 生成地址 即可生成推流地址。

请添加图片描述

2-3获取播放地址

选择 直播工具箱 > 地址生成器获取播放地址,在该页面进行如下配置:

  1. 选择生成类型:播放域名
  2. 选择您在域名管理中已添加的播放域名。
  3. 填写 AppName,默认为 live
  4. 填写与推流地址相同的 StreamName,播放地址 StreamName 要与推流地址 StreamName 一致才能播放对应的流。
  5. 选择地址过期时间,例如:2021-05-31 23:59:59
  6. 单击 生成地址 即可生成播放地址。
    请添加图片描述

保存播放地址与推流地址,给后面的小程序组件使用。

三.组件介绍

1.live-pusher

https://developers.weixin.qq.com/miniprogram/dev/component/live-pusher.html

实时音视频录制需要用户授权 scope.camerascope.record

  <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)}
})
2.live-player

https://developers.weixin.qq.com/miniprogram/dev/component/live-player.html

实时音视频播放

<live-player src="https://domain/pull_stream" mode="RTC" autoplay bindstatechange="statechange" binderror="error" style="width: 300px; height: 225px;" />
Page({statechange(e) {console.log('live-player code:', e.detail.code)},error(e) {console.error('live-player error:', e.detail.errMsg)}
})

四.代码实现

1.页面结构

请添加图片描述

home.wxml

<!--pages/home/home.wxml-->
<text>pages/home/home.wxml</text><button type="primary" bindtap="handleTapOwner">我是主播</button>
<button bindtap="handleTapPlayer">我是观众</button>

home.js

  handleTapOwner(){wx.navigateTo({url: '/pages/owner/owner',})},handleTapPlayer(){wx.navigateTo({url: '/pages/player/player',})},

owner.wxml(主播)

<text>我是主播页面</text>
<live-pusher url="填之前保存的推流域名" mode="RTC" autopush bindstatechange="statechange" style="width: 100vw; height: 100vh;" beauty="9" whiteness="9"/>

player.wxml(观众)

<text>我是观众页面</text>
<live-player src="填之前保存的播放域名" mode="RTC" autoplay bindstatechange="statechange" binderror="error" style="width: 100vw; height: 100vh" object-fit="fillCrop"  id="player"/>

把域名替换成自己申请的播放和推流域名

在手机预览效果如下 (必须两个微信号测试)

  1. 如果手机支持分屏功能,登录两个微信号,分别打开主播和观众页面
  2. 如果有两部手机,登录两个微信号,分别打开主播和观众页面

请添加图片描述

2.离线检测

如果主播不在线, 进去看到就是黑屏,我们可以通过云直播返回code来判断,主播是否正在直播,如果不在直播可以提示用户,主播已经下线。

code:-2301 网络断连,且经多次重连抢救无效,更多重试请自行重启播放

player.js

 onLoad: function (options) {this.player = wx.createLivePlayerContext("player")},statechange(evt){console.log(evt.detail.code)switch(evt.detail.code){case -2301: //网络断连,且经多次重连抢救无效,更多重试请自行重启播放wx.showModal({content:"主播暂时离开了",success:(res)=>{if(res.confirm){//重新连接播放地址this.player.play()}else{wx.navigateBack()}}})}},

ess:(res)=>{
if(res.confirm){
//重新连接播放地址
this.player.play()
}else{
wx.navigateBack()
}
}
})
}
},

好了,纸上得来终觉浅,小伙伴快试试吧!

http://chatgpt.dhexx.cn/article/vuUmqPXH.shtml

相关文章

微信小程序之直播功能使用详解

文章目录 前言一、准备创建直播间基本信息推流直播样式配置 二、开发使用引入插件1. 主包引入2. 分包引入进入直播 三、关于订阅四、自定义自播 前言 小程序直播功能&#xff0c;分为使用官方自带的直播组件( live-player-plugin ,无需二次开发&#xff0c;开箱即用)&#xff…

小程序直播功能开发

近期为一家企业开发小程序&#xff0c;用户提出了在小程序中增加直播功能。所幸小程序本身就提供了直播组件。具体开发文档可见官方说明。 小程序直播是微信官方提供的商家经营工具。通过调用该组件&#xff0c;商家可以在小程序中实现直播互动与商品销售闭环。其开发部分主要…

微信小程序怎么直播?

我们目前使用的小程序都是支持直播功能的&#xff0c;小程序直播功能是通过小程序直播组件实现的&#xff0c;这是微信为商家提供的实时视频直播工具&#xff0c;可以帮助商家快速通过小程序向用户提供优质的直播内容。同时&#xff0c;借助小程序丰富的营销功能&#xff0c;使…

创客匠人:怎么用微信小程序直播?

无论是哪个直播平台提供直播服务&#xff0c;首先都必须要安装相应的手机app&#xff0c;而就是这么一个小小的操作&#xff0c;也能够把大批的用户拒之门外。为了让直播服务更加轻便&#xff0c;不需要这么繁琐的过程也能获取直播内容&#xff0c;微信小程序也加入直播行列。说…

PDF阅读器:你不可不学的标记精读法

孔子晚年喜读《易经》&#xff0c;反复研读&#xff0c;以致把捆竹书的牛皮绳子都磨断了三次&#xff0c;留下了“韦编三绝”的佳话。阅读的实质是什么&#xff0c;是要掌握书中要义。在阅读过程中勾画重点、勾画佳句、标记疑问&#xff0c;就是了解作者写作目的并与作者产生思…

爆发:大数据时代预见未来的新思维 (湛庐文化•财富汇) - 电子书下载 -(百度网盘 高清版PDF格式)...

爆发&#xff1a;大数据时代预见未来的新思维 (湛庐文化•财富汇)-艾伯特-拉斯洛•巴拉巴西 (Albert-Lszl Barabsi) 在线阅读 百度网盘下载(9jvg) 书名:爆发&#xff1a;大数据时代预见未来的新思维 (湛庐文化•财富汇) 作者:艾伯特-拉斯洛•巴拉巴西 (Albe…

学术研究入门,如何下载论文?

来源: AINLPer 微信公众号&#xff08;每日更新…&#xff09; 编辑: ShuYini 校稿: ShuYini 时间: 2021-11-16 有很多刚刚接触研究领域的小伙伴不知道怎么找论文和下载论文&#xff0c;这里作者结合自己的经验总结了一下&#xff0c;希望对你有帮助。 查找论文的方式主要有以下…

【工作感悟】java编程规范pdf下载

前言 要相信,你现在所有的努力和付出都会在将来的某一天回报给你! 首先阿里巴巴作为国内互联网行业的领头羊,培养了一代又一代的IT技术人才,很多想进阿里这些互联网大厂的程序员看中的不仅仅是高薪+丰厚的福利待遇,同样也看中了学习氛围以及人脉圈子,这些资源在你以后对你…

读书笔记 | 国富论(卷一)

半月未更新&#xff0c;期间主要窝在广州窝了半月左右&#xff0c;除了帮老姐带娃太闹心&#xff08;此处必须歌颂一下母亲的伟大&#xff09;&#xff0c;一切还不错。除工作&#xff0c;带娃外&#xff0c;还陪母上大人桂林阳朔游&#xff0c;拜访中大的老师和博士&#xff0…

性能本质论

摘要 对于开发者、技术管理者、架构师、系统分析师和项目经理来说&#xff0c;创建具备高性能特征的复杂软件都是一件极其困难的事。然而&#xff0c;通过了解一些基本原理&#xff0c;性能问题的解决和预防可以更简单可靠。本文讲述了这些基本原理&#xff0c;涵盖了一系列的目…

Python轻松实现PDF格式转换(附详细源码)

公众号后台回复“图书“&#xff0c;了解更多号主新书内容 作者&#xff1a;J哥 来源&#xff1a;菜J学Python 项目背景 网上PDF转换工具眼花缭乱&#xff0c;选择困难症&#xff0c;有些甚至还收费&#xff1b;直接以其他格式打开PDF效果一般较差&#xff1b;有些小可爱通过复…

KDD 2022 | 量化交易相关论文(附论文链接)

写在前面 ACM SIGKDD国际会议&#xff08;简称 KDD&#xff09;是由ACM的数据挖掘及知识发现专委会主办的数据挖掘研究领域的顶级年会&#xff0c;属于CCF A类会议。第28届KDD会议于2022于8月14日至18日在美国华盛顿举行。KDD 会议包含 Research 和 Applied Data Science 两个 …

分享|数智化转型咨询赋能白皮书2021(附PDF)

在创世界一流“力量大厦”发展战略指引下&#xff0c;中国移动凝聚全集团数智化转型相关能力&#xff0c;发挥公司技术、生态、经验势能优势&#xff0c;围绕“能力即服务”价值实现体系&#xff0c;系统性打造中国移动特色的“1357 数智化转型赋能方法论”&#xff0c;即1个核…

ERP_课程论文(hunnu)

目录 一、概述 1.本课程的内容 2.企业情况 二、主要内容&#xff08;三年对战&#xff09; 1.第一年规划 2.第二年规划 3.第三年规划 三、结语 1.学习心得 &#xff08;1&#xff09; 定量分析 &#xff08;2&#xff09; 租买产房 &#xff08;3&#xff09; 建设…

用户体验的要素pdf_用户运营思路(35份)

用户运营思路(35份) ├1 用户画像指导用户精细化运营.pdf ├2 2019用户生命周期运营白皮书-京东尼尔森-2019.11-57页.pdf ├3 从战术到战略&#xff0c;如何获取&运营早期用户.doc ├4 社群变现的道与术&#xff1a;私域流量&用户运营.pdf ├5 易观-智能用户…

《幸福资本论》读书笔记

2019独角兽企业重金招聘Python工程师标准>>> 这是一本小书&#xff0c;比较薄。它还有一个副标题-为什么梵高受穷&#xff0c;毕加索却很富有。但我一直没有发现这本书跟这两位画家有什么关系。真的没有关联上。书中倒是有一段描述毕加索的故事&#xff0c;对这个故…

数据中Byte和Bit的区别

数据中的Byte和Bit的区别 首先我们认识一下他们是什么 Byte&#xff08;字节&#xff0c;简称B&#xff09; 是计算机信息技术用于计量存储容量的一种计量单位&#xff0c;也表示一些计算机编程语言中的数据类型和语言字符。 一个字节存储8位无符号数&#xff0c;储存的数值范…

bit ( 比特 )和 Byte(字节)的关系?

20 提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一.存储单位的bit 和 Byte二.字节与字符的区别&#xff1f;三.网速怎么算&#xff1f;总结 前言 bit ( 比特 )和 Byte&#xff08;字节&#xff09;的关系&…

bit 与 Byte 的区别

bit 与 Byte 的区别 一、用途不一样 Bit 意为"位"或"比特"&#xff0c;是计算机运算的基础单位&#xff1b;Byte 意为"字节"&#xff0c;是计算机文件大小的基本计算单位&#xff1b; 二、代表的大小不同 1 bit 就是1位二进制数&#xff0c;…

bit(比特)与Byte(字节)的区别与关系

1.bit:位 &#xff08;小写b) 也称比特 是英文 binary digit的缩写 二进制数系统中&#xff0c;每个0或1就是一个位(bit) 位是数据存储&#xff08;计算机中信息&#xff09;的最小单位 计算机中的CPU位数指的是CPU一次能处理的最大位数。例如32位计算机的CPU一次最多能处理32…