使用微信小程序播放视频直播

这篇具有很好参考价值的文章主要介绍了使用微信小程序播放视频直播。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

观众端使用live-player进行直播视频的播放,live-player组件从视频云拉流,并用于实时音视频播放。live-player支持两种模式:Live和RTC,前者用于直播播放,后者用于实时音视频通话。在使用live-player组件实现直播播放前先看看live-player组件的属性以及方法。

属性定义

  • Src
    用于音视频下行的播放URL,支持RTMP协议(URL 以rtmp://打头)和 FLV 协议(URL 以http://打头且以.flv结尾)。
    live-player标签不支持 HLS(m3u8)协议,因为 已经支持 HLS(m3u8)播放协议了。但直播观看不推荐使用 HLS(m3u8)协议,延迟要比RTMP和FLV协议高一个数量级。
  • mode
    live 模式主要用于直播类场景,例如赛事直播、在线教育、远程培训等等。该模式下,小程序内部的模块会优先保证观看体验的流畅,通过调整 min-cache 和 max-cache 属性,您可以调节观众(播放)端所感受到的时间延迟的大小。
    RTC 则主要用于双向视频通话或多人视频通话场景,例如金融开会、在线客服、车险定损、培训会议等等。在此模式下,对 min-cache 和 max-cache 的设置不会起作用,因为小程序内部会自动将延迟控制在一个很低的水平(500ms左右)。
  • min-cache 和 max-cache
    这两个参数分别用于指定观看端的最小缓冲时间和最大缓冲时间。所谓缓冲时间,是指播放器为了缓解网络波动对观看流畅度的影响而引入的一个“蓄水池”,当来自网络的数据包出现卡顿甚至停滞的时候,“蓄水池”里的紧急用水可以让播放器还能坚持一小段时间,只要在这个短暂的时间内网速恢复正常,播放器就可以源源不断地渲染出流畅而平滑的视频画面。“蓄水池”里的水越多,抗网络波动的能力就越强,但代价就是观众端的延迟就越大,所以要在不同的场景下,使用不同的配置来达到体验上的平衡:
    1) 码率比较低(1Mbps左右,画面以人物为主)的直播流,min-cache = 1,max-cache = 3 较合适。
    2) 码率比较高(2Mbps - 3Mbps的高清游戏画面为主)的直播流,min-cache = 3,max-cache = 5 较合适。
    3) RTC 模式下这两个参数是无效的。
  • orientation
    画面渲染角度,horizontal 代表是原始画面方向,vertical 代表向右旋转 90度。
  • object-fit
    画面填充模式,contain 代表把画面显示完成,但如果视频画面的宽高比和live-player标签的宽高比不一致,那么您将看到黑边。fillCrop 代表把屏幕全部撑满,但如果视频画面的宽高比和 标签的宽高比不一致,那么画面中多余的部分会被裁剪掉。
  • background-mute
    微信切到后台以后是否继续播放声音,用于避免锁屏对于当前小程序正在播放的视频内容的影响。
  • sound-mode
    设置播放模式,可设值为:ear与speaker,ear代表使用听筒播放,speaker代表使用扬声器,默认为扬声器。

对象操作

  • wx.createLivePlayerContext()
    通过wx.createLivePlayerContext()可以将live-player标签和javascript 对象关联起来,之后即可操作该对象。
  • play
    开始播放,如果live-player的autoplay属性设置为false(默认值),那么就可以使用play来手动启动播放。
  • stop
    停止播放。
  • pause
    暂停播放,停留在最后画面。
  • resume
    继续播放,与 pause 成对使用。
  • mute
    设置静音。
  • requestFullScreen
    进入全屏幕。
  • exitFullScreen
    退出全屏幕。

内部事件

通过 live-player 标签的 bindstatechange 属性可以绑定一个事件处理函数,该函数可以监听推流模块的内部事件和异常通知。

  • 关键事件
    2001 PLAY_EVT_CONNECT_SUCC 已经连接到云端服务器
    2002 PLAY_EVT_RTMP_STREAM_BEGIN 服务器开始传输音视频数据
    2003 PLAY_EVT_RCV_FIRST_I_FRAME 网络接收到首段音视频数据
    2004 PLAY_EVT_PLAY_BEGIN 视频播放开始,可以在收到此事件之前先用默认图片代表等待状态
    2006 PLAY_EVT_PLAY_END 视频播放结束
    2007 PLAY_EVT_PLAY_LOADING 进入缓冲中状态,此时播放器在等待或积攒来自服务器的数据
    -2301 PLAY_ERR_NET_DISCONNECT 网络连接断开,且重新连接亦不能恢复,播放器已停止播放
  • 警告事件
    内部警告并非不可恢复的错误,小程序内部的音视频 SDK 会启动相应的恢复措施,警告的目的主要用于提示开发者或者最终用户
    2101 PLAY_WARNING_VIDEO_DECODE_FAIL 当前视频帧解码失败
    2102 PLAY_WARNING_AUDIO_DECODE_FAIL 当前音频帧解码失败
    2103 PLAY_WARNING_RECONNECT 网络断连,已启动自动重连恢复(重连超过三次就直接抛送 PLAY_ERR_NET_DISCONNECT 了)
    2104 PLAY_WARNING_RECV_DATA_LAG 视频流不太稳定,可能是观看者当前网速不充裕
    2105 PLAY_WARNING_VIDEO_PLAY_LAG 当前视频播放出现卡顿
    2106 PLAY_WARNING_HW_ACCELERATION_FAIL 硬解启动失败,采用软解
    2107 PLAY_WARNING_VIDEO_DISCONTINUITY 当前视频帧不连续,视频源可能有丢帧,可能会导致画面花屏
    3001 PLAY_WARNING_DNS_FAIL DNS解析失败(仅播放 RTMP:// 地址时会抛送)
    3002 PLAY_WARNING_SEVER_CONN_FAIL 服务器连接失败(仅播放 RTMP:// 地址时会抛送)
    3003 PLAY_WARNING_SHAKE_FAIL 服务器握手失败(仅播放 RTMP:// 地址时会抛送)

示例代码

接下来我们实现观众端的直播播放页面,在直播播放页面中我们将live-player的url参数设置为Nginx的拉流地址,并将mode设置为“live”。以下是直播播放页面的相关代码:
live_play.wxml

<view>
  <view>
    <live-player id="player" src="rtmp://......" mode="live" autoplay bindstatechange="statechange" binderror="error" />
    <view>
      <button bindtap="bindPlay"type="primary">播放</button>
      <button bindtap="bindPause" type="primary">暂停</button>
      <button bindtap="bindStop" type="primary">停止</button>
      <button bindtap="bindResume" type="primary">恢复</button>
      <button bindtap="bindMute" type="primary">静音</button>
    </view>
  </view>
</view>

live_play.js文章来源地址https://www.toymoban.com/news/detail-413720.html

Page({
  onReady(res) {
    this.ctx = wx.createLivePlayerContext('player')
  },
  stateChange(e) {
    console.log('live-player code:', e.detail.code)
  },
  error(e) {
    console.error('live-player error:', e.detail.errMsg)
  },
  bindPlay() {
    this.ctx.play({
      success: res => {},
      fail: res => {}
    })
  },
  bindPause() {
    this.ctx.pause({
      success: res => {},
      fail: res => {}
     })
  },
  bindStop() {
    this.ctx.stop({
      success: res => {},
      fail: res => {}
     })
  },
  bindResume() {
    this.ctx.resume({
      success: res => {},
      fail: res => {}
     })
  },
  bindMute() {
    this.ctx.mute({
      success: res => {},
      fail: res => {}
     })
  }
})

到了这里,关于使用微信小程序播放视频直播的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通用视频下载器-批量下载直播 批量下载回放 批量下载播主所有视频 批量下载小程序直播 抖音直播下载 淘宝直播下载 快手直播下载 网页视频下载器

    是一款十分专业的视频下载工具,不仅能够直接粘贴视频链接进行下载,支持mp4、rmvb、mkv以及m3u8等多种视频格式,而且还能够对一些直播的内容进行抓取、串流或者是缓存下载。 1. 可以下载网页视频,影视平台视频,自媒体平台视频, 小程序视频, 正在直播的视频,整场

    2024年02月02日
    浏览(34)
  • LiveNVR Onvif/RTSP流媒体软件接入监控摄像头后如何获取直播流地址进行大屏展示、播放端拉流、网页播放监控视频等...

    LiveNVR的安防监控的视频直播,可以按标准的Onvif/RTSP协议接入监控设备,也可以通过海康、大华、天地伟业等厂家私有SDK接入监控,实现web页面的播放和录像回放。 可以分发HTTP-FLV、WS-FLV、WebRTC、RTMP、HLS(M3U8)、RTSP等多中视频流 2.1.1、接口说明 http://192.168.2.135:10800 是示例的i

    2024年02月16日
    浏览(35)
  • 微信视频号配合OBS拉流推流开直播

    公司有要求,要实现外部视频流的同步直播,所以特意研究了一下OBS软件结合微信视频号直播的操作步骤。 (一)配置拉流 启动OBS软件-点击“+”-选择增加“媒体源” 创建源名称 取消本地文件-填写拉流地址-修改网络缓冲为5MB(建议) 测试拉流是否正常 (二)配置推流 点

    2024年02月14日
    浏览(207)
  • python实现基于UDP的视频直播程序

    1.视频信息的采集 对于摄像头,使用OpenCV打开并获取每一帧的图像,将其封装成字节流进行传输 获取摄像头视频流 cam = cv2.VideoCapture(0)     #打开摄像头 while (cam.isOpened()): ret,frame = cam.read()      #获取视频流 这一步没啥好说的,最基本的API调用 对每一帧图像进行处理 将每一帧图

    2024年04月11日
    浏览(30)
  • 使用js搭建简易的WebRTC实现视频直播

    首先需要一个信令服务器,我们使用nodejs来搭建。两个端:发送端和接收端。 我的目录结构如下图: 流程 创建一个文件夹 WebRTC-Test。 进入文件夹中,新建一个node的文件夹。 使用终端并进入node的目录下,使用 创建package.json。 新建server.js,复制一下代码 下载信令服务器的依

    2024年02月09日
    浏览(27)
  • 在直播系统中使用SRT协议传输视频

    目录 1、简述 2、NDI、RTSP协议的优缺点 3、SRT协议简介 4、SRT协议链接地址URL格式

    2024年02月02日
    浏览(24)
  • 使用声网 SDK 为 Android App 添加视频直播

    视频互动直播是当前比较热门的玩法,我们经常见到有PK 连麦、直播答题、一起 KTV、电商直播、互动大班课、视频相亲等。 本文将演示如何通过声网视频 SDK 在 Android 端实现一个视频直播应用。 🔗点击这里注册声网账号后,开发者每个月可获得 10000 分钟的免费使用额度,可

    2023年04月11日
    浏览(38)
  • 【视频】使用OBS将MP4推流至腾讯云直播

    OBS官网:https://obsproject.com/ OBS支持Win、Mac、Linux,如果下载速度很慢,建议使用迅雷下载 默认会有一个“场景”,如果想继续添加可以点击“+”按钮 1)点击“来源”窗口中“+”按钮 2)支持的媒体源如下 其中:“图像”是指图片;如果要将推流mp4等视频文件,选择“媒体源

    2024年02月13日
    浏览(27)
  • 不只是直播,使用绿联专业4K视频采集卡带你解锁更多玩法和乐趣

    说到采集卡,可能还有很多小伙伴小伙伴不是很了解。其实我自己了解采集卡也只是在今年上半年,不过体验过后,真的有一种相见恨晚的感觉,对于我个人来说,它真的是妥妥的神器! 关注我的小伙伴都知道,我出过很多搞机图文教程,其中涉及到很多主机BIOS界面展示,

    2024年02月04日
    浏览(157)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包